2019-09-12 10:33:56 -07:00
|
|
|
import system'routines;
|
|
|
|
|
import system'collections;
|
|
|
|
|
import extensions;
|
|
|
|
|
import extensions'routines;
|
2016-12-05 22:15:40 +01:00
|
|
|
|
2017-09-23 10:01:46 +02:00
|
|
|
extension op
|
2016-12-05 22:15:40 +01:00
|
|
|
{
|
2019-09-12 10:33:56 -07:00
|
|
|
canMakeWordFrom(blocks)
|
|
|
|
|
{
|
|
|
|
|
var list := ArrayList.load(blocks);
|
2016-12-05 22:15:40 +01:00
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
^ nil == (cast string(self)).upperCase().seekEach:(ch)
|
|
|
|
|
{
|
|
|
|
|
var index := list.indexOfElement
|
|
|
|
|
((word => word.indexOf(0, ch) != -1).asComparator());
|
2016-12-05 22:15:40 +01:00
|
|
|
|
2017-09-23 10:01:46 +02:00
|
|
|
if (index>=0)
|
2019-09-12 10:33:56 -07:00
|
|
|
{
|
|
|
|
|
list.removeAt(index); ^ false
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
^ true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2016-12-05 22:15:40 +01:00
|
|
|
}
|
|
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
public program()
|
|
|
|
|
{
|
2020-02-17 23:21:07 -08:00
|
|
|
var blocks := new string[]{"BO", "XK", "DQ", "CP", "NA",
|
2016-12-05 22:15:40 +01:00
|
|
|
"GT", "RE", "TG", "QD", "FS",
|
|
|
|
|
"JW", "HU", "VI", "AN", "OB",
|
2019-09-12 10:33:56 -07:00
|
|
|
"ER", "FS", "LY", "PC", "ZM"};
|
|
|
|
|
|
2020-02-17 23:21:07 -08:00
|
|
|
var words := new string[]{"", "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse"};
|
2016-12-05 22:15:40 +01:00
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
Enumerator e := words.enumerator();
|
|
|
|
|
e.next();
|
2016-12-05 22:15:40 +01:00
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
words.forEach:(word)
|
|
|
|
|
{
|
|
|
|
|
console.printLine("can make '",word,"' : ",word.canMakeWordFrom(blocks));
|
|
|
|
|
}
|
|
|
|
|
}
|