Я хотел бы разбить список слов, разделенных целыми числами, в список списков.Пролог: Разделить список на целое число в списке списков
Пример запроса и ожидаемый результат:
?- separatewords([h,e,l,l,o,1,o,v,e,r,3,t,h,e,r,e], X).
X = [[h,e,l,l,o],[o,v,e,r],[t,h,e,r,e]].
следующие вещи, которые я уже достигнутые Нарезка список в один список до первого целого числа и один после первого целого:
Пример запроса с результатом :
?- take1word([h,e,l,l,o,1,o,v,e,r,3,t,h,e,r,e], X, Y).
X = [h,e,l,l,o], Y = [o,v,e,r,3,t,h,e,r,e]. % OK
Мой код:
take1word([H|T],[],T) :-
integer(H).
take1word([H|T],[H|Hs],Y) :-
( float(H), take1word(T,Hs,Y)
; atom(H), take1word(T,Hs,Y)
).
Для разделения слов мой код выглядит следующим образом:
separatewords([],[]).
separatewords([H|T],L) :- separatewords(T,[take1word([H|T],)|L]).
Это только дать мне false
как результат, но я не знаю, что я делаю неправильно.
Это сработало - спасибо! –