RosettaCodeData/Task/ABC-problem/Prolog/abc-problem-1.pro

23 lines
616 B
Prolog
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
abc_problem :-
2026-02-01 16:33:20 -08:00
maplist(abc_problem, ['', 'A', bark, bOOk, treAT, 'COmmon', sQuaD, 'CONFUSE']).
2023-07-01 11:58:00 -04:00
abc_problem(Word) :-
2026-02-01 16:33:20 -08:00
L = [[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]],
2023-07-01 11:58:00 -04:00
2026-02-01 16:33:20 -08:00
( abc_problem(L, Word)
-> format('~w OK~n', [Word])
; format('~w KO~n', [Word])).
2023-07-01 11:58:00 -04:00
abc_problem(L, Word) :-
2026-02-01 16:33:20 -08:00
atom_chars(Word, C_Words),
maplist(downcase_atom, C_Words, D_Words),
can_makeword(L, D_Words).
2023-07-01 11:58:00 -04:00
can_makeword(_L, []).
can_makeword(L, [H | T]) :-
2026-02-01 16:33:20 -08:00
( select([H, _], L, L1); select([_, H], L, L1)),
can_makeword(L1, T).