17 lines
753 B
Erlang
17 lines
753 B
Erlang
-module(abc).
|
|
-export([can_make_word/1, can_make_word/2, blocks/0]).
|
|
|
|
blocks() -> ["BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS",
|
|
"JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"].
|
|
|
|
can_make_word(Word) -> can_make_word(Word, blocks()).
|
|
can_make_word(Word, Avail) -> can_make_word(string:to_upper(Word), Avail, []).
|
|
can_make_word([], _, _) -> true;
|
|
can_make_word(_, [], _) -> false;
|
|
can_make_word([L|Tail], [B|Rest], Tried) ->
|
|
(lists:member(L,B) andalso can_make_word(Tail, lists:append(Rest, Tried),[]))
|
|
orelse can_make_word([L|Tail], Rest, [B|Tried]).
|
|
|
|
main(_) -> lists:map(fun(W) -> io:fwrite("~s: ~s~n", [W, can_make_word(W)]) end,
|
|
["A","Bark","Book","Treat","Common","Squad","Confuse"]).
|