Можете ли вы решить эту проблему для двух списков?Если это так, то вы способны решить эту проблему для любого их числа:
pairup_lists( [A, B | T] , X ):-
pairup_lists( [B | T] , Y),
pairup_two_lists( A, Y, X).
Вам необходимо добавить здесь несколько угловых случаев,и реализовать предикат pairup_two_lists/3
.
Зная заранее, что их будет только три, вы можете встроить рекурсию и объединить все в один предикат, pairup_three_lists/4
.
Как, тогда, чтобы решить проблему pairup_two_lists/3
?
Если первый список является одноэлементным списком, разве проблема не станет эквивалентной другой, более простой, pair_up_an_element_and_a_list/3
проблеме?
И еслив первом списке больше элементов, так что его можно разбить на голову и хвост, разве та же логика не применима к работе со списком хвостов, элемент за элементом, пока не останется больше элементов для работы?