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