PROLOG - Разделить список - PullRequest
       1

PROLOG - Разделить список

0 голосов
/ 31 октября 2018

Я использую SWI-PROLOG, и у меня возникают проблемы с разделением списка следующим образом:

L = [a,b,c,d].

RESULT = [[a,b],[b,c],[c,d]].

Я пытаюсь подойти к этому в C / Java / и т.д. вроде как, но я никуда не денусь.

Буду признателен за любую помощь в этом простом деле, спасибо!

1 Ответ

0 голосов
/ 31 октября 2018

Одним из возможных решений является следующее: splitList([], []). splitList([_], []). splitList([A,B|T], R):- splitList([B|T], R1), R=[[A,B]|R1].

Идея состоит в том, что вы продолжаете вызывать split до тех пор, пока не доберетесь до случая [X] (только один элемент в списке)

[a,b,c,d] ->
[b,c,d] ->
[c,d] ->
[d]

В этот момент вы попадаете во второй случай, и начинается откат

  R1 = [] => R = [[c,d]|[]] 

и так далее. Лучший способ - посмотреть след.

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