Skip to content

Instantly share code, notes, and snippets.

@dpiponi
Created February 11, 2018 05:33
Show Gist options
  • Save dpiponi/b53cad061605428845523ede711fd640 to your computer and use it in GitHub Desktop.
Save dpiponi/b53cad061605428845523ede711fd640 to your computer and use it in GitHub Desktop.
import System.IO
import Data.List
rot :: Int -> String -> String
rot n s =
let (body, tail) = splitAt n s
in tail ++ body
lookups :: [String] -> [String] -> [String]
lookups [] _ = []
lookups _ [] = []
lookups (a:as) (w:ws) | a < w = lookups as (w:ws)
| a > w = lookups (a:as) ws
| otherwise = a : lookups as (w:ws)
main :: IO ()
main = do
withFile "/usr/share/dict/words" ReadMode $ \handle -> do
file <- hGetContents handle
let dict = words file
--let dict = filter (\w -> length w >= 8) dict0
let rots = sort $ map (rot 1) dict
print $ sortOn length $ lookups rots dict
@dpiponi
Copy link
Author

dpiponi commented Feb 11, 2018

["A","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","aa","ad","ae","ah","ak","al","am","an","ar","as","at","aw","ay","da","di","do","ea","eh","em","en","er","es","ey","fi","ha","he","ho","id","if","in","is","it","ka","la","ma","me","mo","mu","my","na","ne","ni","no","nu","od","oh","om","on","os","ow","pu","ra","re","sa","se","si","so","ta","ti","tu","um","un","up","ut","wa","wo","ya","ye","ym","add","ady","adz","ail","ait","ako","ala","alb","alp","alt","ama","amt","amy","and","ann","ant","any","apt","arc","are","arm","arn","art","ary","ate","auh","aum","awd","awl","awn","baa","cha","chi","cho","dao","ean","ear","eat","eel","eer","elb","elm","end","ens","eon","era","ere","erg","ers","fei","goa","had","hat","haw","her","het","hic","hip","his","hop","hot","how","hud","hup","ich","ilk","ing","ink","its","kea","koa","las","lea","leu","loa","lob","lys","mas","naa","neo","oak","oat","odd","oer","oes","one","ons","opt","orb","orc","orf","ort","ory","ouf","out","owd","owl","own","oxy","pea","rab","rag","rat","rea","ree","rit","roc","row","sea","sha","sip","spa","tae","tau","tea","ugh","urf","vau","vee","was","wat","wee","wot","yap","yea","yed","yee","yen","yer","yes","yet","yew","yoi","zoa","abac","abut","ache","acyl","adad","adet","affy","agar","ager","aint","aion","airy","ajar","alem","alit","amen","amir","anam","anan","anes","anew","ankh","aper","ared","arid","aril","army","asak","atap","atef","ates","atop","aunt","aval","aver","awat","awny","ayah","beta","bito","bolo","bone","cade","chee","chut","cora","crea","dada","data","desi","dita","dite","doli","earl","eats","eely","eggy","elmy","empt","emyd","enol","eros","even","ever","gade","gain","gala","gara","gena","hand","hank","hant","hark","hart","hatt","hear","hent","hers","hewt","hint","hist","hoop","hoot","iced","idea","ides","illy","imam","inks","into","item","iter","jara","keto","kina","lasa","leaf","leap","lees","limp","lina","lode","lots","lowa","lues","lump","maha","mero","mica","mila","mina","mire","mite","mora","nabk","nabs","name","nana","nark","news","nibs","nobs","obol","odel","oket","olam","olid","omen","ondy","oner","onto","oons","oont","oord","open","oral","ours","over","owly","oxan","paho","para","pice","pili","pose","rada","ramp","rank","rapt","reed","reef","reet","reft","repp","rice","ring","riot","ropp","rose","royt","rung","runt","sart","shap","snee","soka","sora","sunt","tapa","taps","tars","tasu","taws","tche","tchu","togs","tops","tuts","uang","ulua","umph","unal","upas","ural","user","vera","vile","walt","wast","watt","ways","weet","were","wint","wots","yark","yede","yerd","yere","yote","abort","acher","agree","ahint","alarm","alert","alist","allay","ambos","anger","angst","apert","argel","argol","arras","arval","arvel","ascot","asset","aural","avert","bafta","batea","capes","cones","craps","earth","easel","eaved","eaver","eaves","endew","ether","evens","foots","geste","hight","hives","iliac","inarm","inerm","laine","lento","limes","links","longa","manga","mania","massa","mores","nares","nenta","orang","orant","orgic","ought","ounds","outer","piles","poche","porta","quale","quits","ramet","rated","readd","rebab","rebeg","rovet","shine","skere","spica","stere","stope","stree","tales","tangs","teens","there","those","times","tongs","traps","trews","undig","ungot","untap","untop","vinea","visto","wages","waled","weeps","wined","woons","ablest","adular","affeer","aiglet","ambler","anchor","angled","angler","anklet","arrowy","artabe","artlet","assert","atrial","attern","attery","auncel","chilla","choice","eaglet","earthy","eighth","elated","elater","esteem","evoker","havers","immerd","lanete","leaves","livedo","lobing","luting","marina","muleta","oftens","oodles","owlery","percha","ponica","ripost","rochet","roupet","spirea","sterna","tables","tavers","trucks","typica","ungold","united","uniter","uppers","angelot","balonea","chelone","dentale","destine","enabler","evolver","hoppers","inwards","irenics","kittles","manatee","melters","muggles","nippers","ordines","raggled","ramanas","rillett","ringlet","ripplet","rotundo","rundlet","sexuale","spadone","taivers","unliken","viatica","visitee","windles","winglet","winklet","withers","addlings","lectrice","technica","alliancer","narcotina","unpickled","unstabled","ethological"]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment