34 lines
837 B
Nim
34 lines
837 B
Nim
from strutils import contains, format, toUpper
|
|
from sequtils import delete
|
|
|
|
proc canMakeWord(s: string): bool =
|
|
var
|
|
abcs = @["BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS",
|
|
"JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"]
|
|
matched = newSeq[string]()
|
|
|
|
if s.len > abcs.len:
|
|
return false
|
|
|
|
for i in 0 .. s.len - 1:
|
|
var
|
|
letter = s[i].toUpper
|
|
n = 0
|
|
for abc in abcs:
|
|
if contains(abc, letter):
|
|
delete(abcs, n, n)
|
|
matched = matched & abc
|
|
break
|
|
else:
|
|
inc(n)
|
|
|
|
if matched.len == s.len:
|
|
return true
|
|
else:
|
|
return false
|
|
|
|
var words = @["A", "bArK", "BOOK", "treat", "common", "sQuAd", "CONFUSE"]
|
|
for word in words:
|
|
echo format("Can the blocks make the word \"$1\"? $2", word,
|
|
(if canMakeWord(word): "yes" else: "no"))
|