22 lines
577 B
Tcl
22 lines
577 B
Tcl
package require Tcl 8.6
|
|
|
|
proc abc {word {blocks {BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM}}} {
|
|
set abc {{letters blocks abc} {
|
|
set rest [lassign $letters ch]
|
|
set i 0
|
|
foreach blk $blocks {
|
|
if {$ch in $blk && (![llength $rest]
|
|
|| [apply $abc $rest [lreplace $blocks $i $i] $abc])} {
|
|
return true
|
|
}
|
|
incr i
|
|
}
|
|
return false
|
|
}}
|
|
return [apply $abc [split $word ""] [lmap b $blocks {split $b ""}] $abc]
|
|
}
|
|
|
|
foreach word {"" A BARK BOOK TREAT COMMON SQUAD CONFUSE} {
|
|
puts [format "Can we spell %9s? %s" '$word' [abc $word]]
|
|
}
|