""" reverse_lexico.py Donald Knuth, Art of Computer Programming, Volume 4 Facsimile 0 Variation on Exercise #30 Each letter of the word "spied" appears in reversed lexicographic order. Find more words whose letters appear in reverse lexicographic order. """ from get_words import get_words def in_reverse_sorted_order(word): chars = list(word) # Note: reversed returns a generator, # so we have to pass it to list() # to explicitly enumerate the reversed results. if(str(chars)==str(list(reversed(sorted(chars))))): return True else: return False if __name__=="__main__": words = get_words() words = sorted(words) count = 0 print("-"*40) print("ALL lexicographically reversed words:") for word in words: if(in_reverse_sorted_order(word)): print(word) count += 1 print("{0:d} total.".format(count)) print("-"*40) for word in words: if(in_reverse_sorted_order(word)): print("First reverse lexicographically sorted word:") print(word) break words.reverse() print("-"*40) for word in words: if(in_reverse_sorted_order(word)): print("Last lexicographically sorted word:") print(word) break