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