/* Longest Ordered Words in Picat. See "Computational word trivia with Mathematica - longest words with letters in alphabetical order" http://walkingrandomly.com/?p=4529 Compare with my SetlX program: http://hakank.org/setl/longest_ordered_words.stlx The longest ordered English words (from /usr/share/dict/words, 102401): - increasing order: billowy - reverse order: wronged,trolled,spooned,spooled,spooked,spoofed,sponged,sniffed - all different (increasing): deimos,chintz,chinos,chimps,biopsy,begins,almost,abhors - all different (reversed) wronged,sponged From a larger English word list (415834 words): - increasing order: aegilops - reverse order: trollied - all different (increasing): aegilops - all different (reversed) wronged,tsoneca,sponged Swedish words (from a word list of 391085 words) - increasing words: hinnors,dimmors,cellors,belopps,beginrå,befinns - reverse order: ättleda,vurmiga,uttolka,utsmida,utsedda,utredda,troliga,tonliga,sonliga,somliga,solkiga,rommiga - all different (increasing) beginrå - all different (reversed) vurmiga,utsmida,troliga,tonliga,sonliga,somliga,solkiga This program was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ main => go. go => File = "/usr/share/dict/words", % File = "words_lower.txt", % larger word list % File = "sv_spelling_org_utf8.txt", % Swedish words Words = [[W,Len] : Word in read_file_lines(File), Len = Word.len, Len > 1, W = Word.to_lowercase], println(num_words=Words.len), Words1 = [W : W in Words, W[1] == W[1].sort], println(Words1.sort_down(2)), println("\nReversed order"), Words2 = [W : W in Words, W[1] == W[1].sort_down], println(Words2.sort_down(2)), println("\nAll different letters (increasing):"), println([W : W in Words1, W[1].remove_dups == W[1]].sort_down(2)), println("\nAll different letters (reversed):"), println([W : W in Words2, W[1].remove_dups == W[1]].sort_down(2)), nl.