def verify_alien_dictionary(words, order): if len(words) == 1: return True order_map = {} for index, val in enumerate(order): order_map[val] = index for i in range(len(words) - 1): for j in range(len(words[i])): if j >= len(words[i + 1]): return False if words[i][j] != words[i + 1][j]: if order_map[words[i][j]] > order_map[words[i + 1][j]]: return False break return True # Driver Code def main(): words = [ ["alpha", "bravo", "charlie", "delta"], ["apple", "app"], ["martian"], ["jupyter", "ascending"], ["passengers", "to", "the", "unknown"] ] order = ["abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz", "mabcdefghijklnopqrstuvwxyz", "jabcdefghiklmnopqrstuvwxyz", "ptuhabcdefghijklmnoqrsvwxyz"] for i in range(len(order)): print(i + 1, ".\tWords: ", words[i], sep="") print("\tOrder: \"", order[i], "\"", sep="") result = verify_alien_dictionary(words[i], order[i]) if result: print("\tAlien dictionary verified: Yes") else: print("\tAlien dictionary verified: No") print("-"*100) if __name__ == '__main__': main()