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

38 lines
890 B
Plaintext

#import system.
#import system'routines.
#import system'collections.
#import extensions.
#import extensions'routines.
#class(extension)op
{
#method canMakeWord &from:blocks
[
#var list := ArrayList new:blocks.
^ $nil == self literal upperCase seek &each:ch
[
#var index := list indexOf:(word [ word indexOf:ch &at:0 != -1 ] asComparer).
(index>=0)
? [ list remove &at:index. ^ false. ]
! [ ^ true. ].
].
]
}
#symbol program =
[
#var blocks := ("BO", "XK", "DQ", "CP", "NA",
"GT", "RE", "TG", "QD", "FS",
"JW", "HU", "VI", "AN", "OB",
"ER", "FS", "LY", "PC", "ZM").
#var words := ("", "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse").
words run &each:word
[
console writeLine:"can make '":word:"' : ":(word canMakeWord &from:blocks).
].
].