30 lines
788 B
Plaintext
30 lines
788 B
Plaintext
import "./fmt" for Fmt
|
|
|
|
var r // recursive
|
|
r = Fn.new { |word, bl|
|
|
if (word == "") return true
|
|
var c = word.bytes[0] | 32
|
|
for (i in 0...bl.count) {
|
|
var b = bl[i]
|
|
if (c == b.bytes[0] | 32 || c == b.bytes[1] | 32) {
|
|
bl[i] = bl[0]
|
|
bl[0] = b
|
|
if (r.call(word[1..-1], bl[1..-1])) return true
|
|
var t = bl[i]
|
|
bl[i] = bl[0]
|
|
bl[0] = t
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
var newSpeller = Fn.new { |blocks|
|
|
var bl = blocks.split(" ")
|
|
return Fn.new { |word| r.call(word, bl) }
|
|
}
|
|
|
|
var sp = newSpeller.call("BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM")
|
|
for (word in ["A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"]) {
|
|
Fmt.print("$-7s $s", word, sp.call(word))
|
|
}
|