25 lines
752 B
Plaintext
25 lines
752 B
Plaintext
procedure main(A)
|
|
blocks := ["bo","xk","dq","cp","na","gt","re","tg","qd","fs",
|
|
"jw","hu","vi","an","ob","er","fs","ly","pc","zm",&null]
|
|
every write("\"",word := !A,"\" ",checkSpell(map(word),blocks)," with blocks.")
|
|
end
|
|
|
|
procedure checkSpell(w,blocks)
|
|
blks := copy(blocks)
|
|
w ? return if canMakeWord(blks) then "can be spelled"
|
|
else "can not be spelled"
|
|
end
|
|
|
|
procedure canMakeWord(blks)
|
|
c := move(1) | return
|
|
if /blks[1] then fail
|
|
every i := 1 to *blks do {
|
|
if /blks[i] then (move(-1),fail)
|
|
if c == !blks[i] then {
|
|
blks[1] :=: blks[i]
|
|
if canMakeWord(blks[2:0]) then return
|
|
blks[1] :=: blks[i]
|
|
}
|
|
}
|
|
end
|