24 lines
736 B
Plaintext
24 lines
736 B
Plaintext
blocks:List Tuple Symbol:= _
|
|
[(B,O),(X,K),(D,Q),(C,P),(N,A),(G,T),(R,E),(T,G),(Q,D),(F,S), _
|
|
(J,W),(H,U),(V,I),(A,N),(O,B),(E,R),(F,S),(L,Y),(P,C),(Z,M)]
|
|
|
|
|
|
findComb(l:List List NNI):List List NNI ==
|
|
#l=0 => []
|
|
#l=1 => [[s] for s in first l]
|
|
r:List List NNI:=[]
|
|
for y in findComb(rest l) repeat
|
|
r:=concat(r,[concat(x,y) for x in first l])
|
|
return r
|
|
|
|
canMakeWord?(word,blocks) ==
|
|
word:=upperCase word
|
|
bchr:=[map(char,map(string,s::List(Symbol))) for s in blocks]
|
|
c:=[[j for j in 1..#blocks | member?(word.k,bchr.j)] for k in 1..#word]
|
|
reduce(_or,[test(#removeDuplicates(l)=#word) for l in findComb(c)])
|
|
|
|
|
|
Example:=["a","bark","book","treat","common","squad","confuse"]
|
|
|
|
[canMakeWord?(s,blocks) for s in Example]
|