def test_kmp_one_result(): test_text = 'AABAACAADAABAABA' pattern = 'AABA' suffix_prefix_array = kmp_initialize_suffix_prefix_array(pattern) result = kmp(pattern, test_text, suffix_prefix_array, one_result=True) assert result == [0]
def test_kmp_found_at_end(): test_text = 'AAAAABAAABAC' pattern = 'C' suffix_prefix_array = kmp_initialize_suffix_prefix_array(pattern) result = kmp(pattern, test_text, suffix_prefix_array) assert result == [11]
def test_kmp(): test_text = 'AABAACAADAABAABA' pattern = 'AABA' suffix_prefix_array = kmp_initialize_suffix_prefix_array(pattern) result = kmp(pattern, test_text, suffix_prefix_array) assert result == [0, 9, 12]
def test_kmp_empty_pattern(): test_text = 'AAAAABAAABA' pattern = '' suffix_prefix_array = kmp_initialize_suffix_prefix_array(pattern) result = kmp(pattern, test_text, suffix_prefix_array) assert result == []
def count_health(genes_data, firstIndex, lastIndex, stream): total_health = 0 genes_count_cache = Trie() for i in range(firstIndex, lastIndex + 1): gene = genes_data.genes[i] health = genes_data.health[i] gene_count_cache_node = genes_count_cache.find_node(gene) if gene_count_cache_node == None: prefix_array = genes_data.prefix_arrays[i] appear_positions = kmp(gene, stream, prefix_array) gene_count_cache_node = genes_count_cache.add(gene) gene_count_cache_node.value = len(appear_positions) total_health += gene_count_cache_node.value * health return total_health