24 lines
895 B
Plaintext
24 lines
895 B
Plaintext
canSpell := proc(w)
|
|
local blocks, i, j, word, letterFound;
|
|
blocks := Array([["B", "O"], ["X", "K"], ["D", "Q"], ["C", "P"], ["N", "A"], ["G", "T"], ["R", "E"], ["T", "G"],
|
|
["Q", "D"], ["F", "S"], ["J", "W"], ["H", "U"], ["V", "I"], ["A", "N"], ["O", "B"], ["E", "R"],
|
|
["F", "S"], ["L", "Y"], ["P", "C"], ["Z", "M"]]);
|
|
word := StringTools[UpperCase](convert(w, string));
|
|
for i to length(word) do
|
|
letterFound := false;
|
|
for j to numelems(blocks)/2 do
|
|
if not letterFound and (substring(word, i) = blocks[j,1] or substring(word, i) = blocks[j,2]) then
|
|
blocks[j,1] := undefined;
|
|
blocks[j,2] := undefined;
|
|
letterFound := true;
|
|
end if;
|
|
end do;
|
|
if not letterFound then
|
|
return false;
|
|
end if;
|
|
end do;
|
|
return true;
|
|
end proc:
|
|
|
|
seq(printf("%a: %a\n", i, canSpell(i)), i in [a, Bark, bOok, treat, COMMON, squad, confuse]);
|