commit 8e73fc7bf5edfe731b0813c3a4fd862d214c4124
parent 5d8e3bed9cbe43504e62dbc761a012a08b78a079
Author: Walther Chen <walther.chen@gmail.com>
Date: Sat, 26 Oct 2024 22:22:25 -0400
ba1g hamming distance
Diffstat:
2 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/ba1g.c3 b/ba1g.c3
@@ -0,0 +1,19 @@
+// hamming distance
+
+module ba1g;
+import std::io;
+import std::io::file;
+import std::collections;
+
+import util;
+
+fn void! main(String[] args) {
+ if (args.len != 2) {
+ io::eprintn("Please supply path to data file");
+ return IoError.FILE_NOT_FOUND?;
+ }
+ File f = file::open(args[1], "rb")!;
+ String s1 = io::treadline(&f)!;
+ String s2 = io::treadline(&f)!;
+ io::printn(util::hamming_distance(s1, s2));
+}
diff --git a/util.c3 b/util.c3
@@ -50,3 +50,18 @@ fn void test_clump_finding() @test {
String input = "CGGACTCGACAGATGTGAAGAACGACAATGTGAAGACTCGACACGACAGAGTGAAGAGAAGAGGAAACATTGTAA";
assert(clump_finding(input, 5, 50, 4) == {"CGACA", "GAAGA"});
}
+
+fn int hamming_distance(String s1, String s2) {
+ assert(s1.len == s2.len);
+ int count = 0;
+ for (int i = 0; i < s1.len; i += 1) {
+ if (s1[i] != s2[i]) {
+ count += 1;
+ }
+ }
+ return count;
+}
+
+fn void test_hamming_distance() @test {
+ assert(hamming_distance("GGGCCGTTGGT", "GGACCGTTGAC") == 3);
+}