46 lines
1019 B
Plaintext
46 lines
1019 B
Plaintext
import system'routines;
|
|
import system'collections;
|
|
import extensions;
|
|
import extensions'routines;
|
|
|
|
extension op
|
|
{
|
|
canMakeWordFrom(blocks)
|
|
{
|
|
var list := ArrayList.load(blocks);
|
|
|
|
^ nil == (cast string(self)).upperCase().seekEach:(ch)
|
|
{
|
|
var index := list.indexOfElement
|
|
((word => word.indexOf(0, ch) != -1).asComparator());
|
|
|
|
if (index>=0)
|
|
{
|
|
list.removeAt(index); ^ false
|
|
}
|
|
else
|
|
{
|
|
^ true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public program()
|
|
{
|
|
var blocks := new string[]{"BO", "XK", "DQ", "CP", "NA",
|
|
"GT", "RE", "TG", "QD", "FS",
|
|
"JW", "HU", "VI", "AN", "OB",
|
|
"ER", "FS", "LY", "PC", "ZM"};
|
|
|
|
var words := new string[]{"", "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse"};
|
|
|
|
Enumerator e := words.enumerator();
|
|
e.next();
|
|
|
|
words.forEach:(word)
|
|
{
|
|
console.printLine("can make '",word,"' : ",word.canMakeWordFrom(blocks));
|
|
}
|
|
}
|