Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
68
Task/Textonyms/Tcl/textonyms.tcl
Normal file
68
Task/Textonyms/Tcl/textonyms.tcl
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
set keymap {
|
||||
2 -> ABC
|
||||
3 -> DEF
|
||||
4 -> GHI
|
||||
5 -> JKL
|
||||
6 -> MNO
|
||||
7 -> PQRS
|
||||
8 -> TUV
|
||||
9 -> WXYZ
|
||||
}
|
||||
|
||||
set url http://www.puzzlers.org/pub/wordlists/unixdict.txt
|
||||
|
||||
set report {
|
||||
There are %1$s words in %2$s which can be represented by the digit key mapping.
|
||||
They require %3$s digit combinations to represent them.
|
||||
%4$s digit combinations represent Textonyms.
|
||||
|
||||
A %5$s-letter textonym which has %6$s combinations is %7$s:
|
||||
|
||||
%8$s
|
||||
}
|
||||
|
||||
package require http
|
||||
proc geturl {url} {
|
||||
try {
|
||||
set tok [http::geturl $url]
|
||||
return [http::data $tok]
|
||||
} finally {
|
||||
http::cleanup $tok
|
||||
}
|
||||
}
|
||||
|
||||
proc main {keymap url} {
|
||||
foreach {digit -> letters} $keymap {
|
||||
foreach l [split $letters ""] {
|
||||
dict set strmap $l $digit
|
||||
}
|
||||
}
|
||||
set doc [geturl $url]
|
||||
foreach word [split $doc \n] {
|
||||
if {![string is alpha -strict $word]} continue
|
||||
dict lappend words [string map $strmap [string toupper $word]] $word
|
||||
}
|
||||
|
||||
set ncombos [dict size $words]
|
||||
set nwords 0
|
||||
set ntextos 0
|
||||
set nmax 0
|
||||
set dmax ""
|
||||
dict for {d ws} $words {
|
||||
puts [list $d $ws]
|
||||
set n [llength $ws]
|
||||
incr nwords $n
|
||||
if {$n > 1} {
|
||||
incr ntextos $n
|
||||
}
|
||||
if {$n >= $nmax && [string length $d] > [string length $dmax]} {
|
||||
set nmax $n
|
||||
set dmax $d
|
||||
}
|
||||
}
|
||||
set maxwords [dict get $words $dmax]
|
||||
set lenmax [llength $maxwords]
|
||||
format $::report $nwords $url $ncombos $ntextos $lenmax $nmax $dmax $maxwords
|
||||
}
|
||||
|
||||
puts [main $keymap $url]
|
||||
Loading…
Add table
Add a link
Reference in a new issue