ba1a.c3 (773B) - raw


      1 module ba1a;
      2 
      3 import std::io;
      4 import std::io::file;
      5 import std::collections;
      6 
      7 fn int main(String[] args) {
      8 	if (args.len != 2) {
      9 		io::eprintn("Please supply path to data file");
     10 		return 1;
     11 	}
     12 	File f = file::open(args[1], "rb")!!;
     13 	String text = io::treadline(&f)!!;
     14 	String pattern = io::treadline(&f)!!;
     15 	io::printn(pattern_count(text, pattern));
     16 	return 0;
     17 }
     18 
     19 fn int pattern_count(String text, String pattern) {
     20 	if (pattern.len == 0) return 0;
     21 	int count = 0 ;
     22 	for (int i = 0; i <= text.len - pattern.len; i += 1) {
     23 		if (text[i:pattern.len] == pattern) {
     24 			count += 1;
     25 		}
     26 	}
     27 	return count;
     28 }
     29 
     30 fn void test_pattern_count() @test {
     31 	assert(pattern_count("GCGCG", "") == 0);
     32 	assert(pattern_count("GCGCG", "G") == 3);
     33 	assert(pattern_count("GCGCG", "GCG") == 2);
     34 }
     35