Advertisement
Benkex

Trie

Nov 15th, 2019
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | None | 0 0
  1. def graph(arr, layer=0, letters=1, word=0, graphized=[]):
  2.    
  3.     if layer==0:
  4.         graph(arr, layer=1, graphized=graphized)
  5.         return graphized
  6.        
  7.     elif letters<=len(arr[word]) and word<len(arr):
  8.         cur_word=word
  9.        
  10.         while cur_word<len(arr) and arr[word][:letters-1] == arr[cur_word][:letters-1]:
  11.             new_index=cur_word
  12.            
  13.             cur_let=arr[cur_word][letters-1]
  14.             if cur_let not in graphized:
  15.                 graphized.append(cur_let)
  16.            
  17.             if letters < len(arr[cur_word]):
  18.                 if arr[cur_word-1][:letters]==arr[cur_word][:letters] and cur_word>0:
  19.                     graphized.append([''])
  20.                 else:
  21.                     graphized.append([])
  22.                 part=graphized[-1]
  23.                 new_index=graph(arr, layer+1, letters+1, cur_word, part)
  24.                
  25.             if new_index==cur_word:
  26.                 cur_word+=1
  27.             else: cur_word=new_index
  28.            
  29.         return cur_word
  30.        
  31.     return word
  32.    
  33. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  34.    
  35. def search(graph, word, letter=0):
  36.     wlen=len(word)
  37.     if letter<wlen and word[letter] in graph:
  38.         list_ind=graph.index(word[letter])+1
  39.         if len(graph)>list_ind:
  40.             part=graph[list_ind]
  41.             if isinstance(part, list):
  42.                 return search(part,word,letter+1)
  43.             elif letter==wlen-1:
  44.                 return True
  45.             else:
  46.                 return False
  47.         elif letter==wlen-1:
  48.             return True
  49.         else:
  50.             return False
  51.     elif '' in graph and letter==wlen:
  52.         return True
  53.     else:
  54.         return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement