Разделить список строк на список списков в прологе - PullRequest
0 голосов
/ 21 апреля 2020

Я начинаю изучать Пролог и хотел бы знать, как реализовать функцию, которая превращает список строк в упорядоченный список списков символов. Например:

?- f([sheep,dog,cat],Z).

должен возвращать

Z=[[c,a,t], [d,o,g], [s,h,e,e,p]].

Я знаю, что я должен использовать предикаты sort (L1, L2) и atom_chars (A, B) соответственно. Но как именно я пишу код? В Интернете очень мало уроков по Прологу, поэтому я действительно не знаю, как это сделать ... Заранее спасибо!

1 Ответ

1 голос
/ 22 апреля 2020

Вдохновленный oneliner false, обернутый структурой модульного тестирования:

:-begin_tests(split).

data([sheep,dog,cat]).

test(one) :- data(L),
             sort(L,L2),
             maplist(atom_chars,L2,Exploded),
             format("~q\n",[Exploded]),
             L2 = [[c,a,t], [d,o,g], [s,h,e,e,p]]. 


:-end_tests(split).

rt :- run_tests(split).
?- rt.
% PL-Unit: split [[s,h,e,e,p],[d,o,g],[c,a,t]]
. done
% test passed
true.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...