RosettaCodeData/Task/ABC-problem/Wren/abc-problem.wren

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))
}