Объединение списка списков в единый список - PullRequest
0 голосов
/ 28 апреля 2018

Пожалуйста, соблюдайте требования ввода / вывода:

Input:    
[[h,i],[h,e,l,l,o],[l,a,p,t,o,p]]

Просто мне нужно избавиться от этих ,:

Expected output: 
[hi, hello, laptop].

Мой код:

make_LoL([],Res).
make_LoL([H|T],Res) :-  
    atom_con(H,Out),
    newRes = [Out|Res], 
    make_LoL(T,newRes).

atom_con([],Out).
atom_con([H1,H2,H3|T],Out) :-
    atom_concat(H1,H2,Ou),
    atom_concat(Ou,H3,Out),
    atom_con([], Out).

Когда я запускаю его, он зацикливается навсегда. Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 29 апреля 2018

Проверьте, работает ли это:

string([], []).
string([H | T], [S | Z]) :- helper(H, S), string(T, Z).

helper([A], A).
helper([H | T], S) :- helper(T, Z), atom_concat(H, -, Z1), atom_concat(Z1, Z, S).  

Если подсписок пуст, сопоставление с шаблоном не удастся, и результат будет ложным. Таким образом, это решение работает только тогда, когда каждый подсписок содержит хотя бы один символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...