def test_when_not_found_should_return_none(): trie = Trie() trie.add(test_str_1) trie.add(test_str_2) trie.add(test_str_3) testNode = trie.find_node(test_str_not_found) assert testNode == None
def test_find_prefix(self): """Test for find_prefid Args: self: TestTrie Returns: None Raises: None """ # Given trie_obj = Trie() # When trie_obj.add("hello") trie_obj.add("hell") trie_obj.add("he") trie_obj.add("she") # Then self.assertEqual(trie_obj.find_prefix("he"), (True, 3)) self.assertEqual(trie_obj.find_prefix("hell"), (True, 2)) self.assertEqual(trie_obj.find_prefix("hello"), (True, 1)) self.assertEqual(trie_obj.find_prefix("h"), (True, 3)) self.assertEqual(trie_obj.find_prefix("me"), (False, 0))
def build_trie(n, genes, health): trie = Trie() for i in range(n): gene_trie = trie.add(genes[i]) add_health_to_gene_trie(gene_trie, health[i], i) return trie
def test_when_inserting_all_nodes_a_node_should_have_len_2(): trie = Trie() trie.add(test_str_1) trie.add(test_str_2) trie.add(test_str_3) trie.add(test_str_4) trie.add(test_str_5) trie.add(test_str_6) a_node = trie.find_node('a') assert len(a_node.children) == 2
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
health = map(int, raw_input().rstrip().split()) s = int(raw_input()) genes_prefix_cache_trie = Trie() prefix_arrays = [None for g in genes] # calculate the prefix arrays by using a trie as cache for i in range(len(genes)): gene = genes[i] cache_trie_node = genes_prefix_cache_trie.find_node(gene) if cache_trie_node != None: prefix_arrays[i] = cache_trie_node.value else: prefix_arrays[i] = kmp_initialize_suffix_prefix_array(gene) cache_trie_node = genes_prefix_cache_trie.add(gene) cache_trie_node.value = prefix_arrays[i] genes_data = GenesData(genes, health, prefix_arrays) min = 10000000000000000 max = 0 for s_itr in xrange(s): firstLastd = raw_input().split() first = int(firstLastd[0]) last = int(firstLastd[1]) d = firstLastd[2]