RosettaCodeData/Task/ABC-Problem/Elena/abc-problem.elena

46 lines
1,019 B
Text
Raw Permalink Normal View History

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