Posted to tcl by sevarat at Thu Oct 24 23:32:02 GMT 2024view pretty
#!/bin/tclsh
array set alnum {
2 abc
3 def
4 ghi
5 jkl
6 mno
7 pqrs
8 tuv
9 wxyz
}
set numbers [split [lindex $argv 0] {}]
set letters [lmap n $numbers {split [lindex [array get alnum $n] 1] ""}]
proc letterMap {x y} {
return [lmap a $x {lmap b $y {string cat $a $b}}]
}
proc phoneLetters {letterList} {
if {[llength $letterList] < 2} {return [join $letterList]}
return [phoneLetters [list [join [letterMap {*}[lrange $letterList 0 1]]] {*}[lrange $letterList 2 end]]]
}
puts [phoneLetters $letters]