26 lines
735 B
Plaintext
26 lines
735 B
Plaintext
function r(word, bl)
|
|
if word == "" then return true end
|
|
local c = word:byte(1) | 32
|
|
for i = 1, #bl do
|
|
local b = bl[i]
|
|
if c == b:byte(1) | 32 or c == b:byte(2) | 32 then
|
|
bl[i] = bl[1]
|
|
bl[1] = b
|
|
if r(word:sub(2), bl:slice(2)) then return true end
|
|
bl[1], bl[i] = bl[i], bl[1]
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
local function new_speller(blocks)
|
|
local bl = blocks:split(" ")
|
|
return |word| -> r(word, bl)
|
|
end
|
|
|
|
local sp = new_speller("BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM")
|
|
local words = {"A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"}
|
|
for words as word do
|
|
print(string.format("%-7s %s", word, sp(word)))
|
|
end
|