31 lines
1.3 KiB
Plaintext
31 lines
1.3 KiB
Plaintext
URL:="http://www.puzzlers.org/pub/wordlists/unixdict.txt";
|
|
var ZC=Import("zklCurl");
|
|
var keypad=Dictionary(
|
|
"a",2,"b",2,"c",2, "d",3,"e",3,"f",3, "g",4,"h",4,"i",4,
|
|
"j",5,"k",5,"l",5, "m",6,"n",6,"o",6, "p",7,"q",7,"r",7,"s",7,
|
|
"t",8,"u",8,"v",8, "w",9,"x",9,"y",9,"z",9);
|
|
//fcn numerate(word){ word.toLower().apply(keypad.find.fp1("")) }
|
|
fcn numerate(word){ word.toLower().apply(keypad.get) } //-->textonym or error
|
|
println("criticisms --> ",numerate("criticisms"));
|
|
|
|
words:=ZC().get(URL); //--> T(Data,bytes of header, bytes of trailer)
|
|
words=words[0].del(0,words[1]); // remove HTTP header
|
|
println("Read %d words from %s".fmt(words.len(1),URL));
|
|
|
|
wcnt:=Dictionary();
|
|
foreach word in (words.walker(11)){ // iterate over stripped lines
|
|
w2n:=try{ numerate(word) }catch(NotFoundError){ continue };
|
|
wcnt.appendV(w2n,word); // -->[textonym:list of words]
|
|
}
|
|
|
|
moreThan1Word:=wcnt.reduce(fcn(s,[(k,v)]){ s+=(v.len()>1) },0);
|
|
maxWordPerNum:=(0).max(wcnt.values.apply("len"));
|
|
|
|
("There are %d words which can be represented by the Textonyms mapping.\n"
|
|
"There are %d overlaps.").fmt(wcnt.len(),moreThan1Word).println();
|
|
|
|
println("Max collisions: %d words:".fmt(maxWordPerNum));
|
|
foreach k,v in (wcnt.filter('wrap([(k,v)]){ v.len()==maxWordPerNum })){
|
|
println(" %s is the textonym of: %s".fmt(k,v.concat(", ")));
|
|
}
|