33 lines
975 B
Plaintext
33 lines
975 B
Plaintext
import ballerina/io;
|
|
|
|
function r(string word, string[] bl) returns boolean {
|
|
if word == "" { return true; }
|
|
int c = word[0].toBytes()[0] | 32;
|
|
foreach int i in 0..<bl.length() {
|
|
var b = bl[i];
|
|
if c == (b.toBytes()[0] | 32) || c == (b.toBytes()[1] | 32) {
|
|
bl[i] = bl[0];
|
|
bl[0] = b;
|
|
if r(word.substring(1), bl.slice(1)) { return true; }
|
|
var t = bl[i];
|
|
bl[i] = bl[0];
|
|
bl[0] = t;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function newSpeller(string blocks) returns (function(string) returns boolean) {
|
|
string[] bl = re ` `.split(blocks);
|
|
return function(string word) returns boolean {
|
|
return r(word, bl);
|
|
};
|
|
}
|
|
|
|
public function main() {
|
|
var sp = newSpeller("BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM");
|
|
foreach string word in ["A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"] {
|
|
io:println(word.padEnd(7), " ", sp(word));
|
|
}
|
|
}
|