32 lines
754 B
Plaintext
32 lines
754 B
Plaintext
import <Utilities/Conversion.sl>;
|
|
import <Utilities/Sequence.sl>;
|
|
import <RegEx/RegEx.sl>;
|
|
|
|
main(args(2)) :=
|
|
let
|
|
result[i] := args[i] ++ ": " ++ boolToString(can_make_word(args[i], InitBlocks));
|
|
in
|
|
delimit(result, '\n');
|
|
|
|
InitBlocks := "BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM";
|
|
|
|
can_make_word(word(1), blocks(1)) :=
|
|
let
|
|
regEx := "(\\a" ++ [toUpper(head(word))] ++ "|" ++ [toUpper(head(word))] ++ "\\a)";
|
|
|
|
newBlocks := replaceFirst(blocks, regEx, "");
|
|
in
|
|
true when size(word) = 0
|
|
else
|
|
false when size(newBlocks) = size(blocks)
|
|
else
|
|
can_make_word(tail(word), newBlocks);
|
|
|
|
toUpper(letter(0)) :=
|
|
let
|
|
ascii := asciiToInt(letter);
|
|
in
|
|
letter when ascii >= 65 and ascii <= 90
|
|
else
|
|
intToAscii(ascii - 32);
|