Выполнить кодирование длины с использованием пролога - PullRequest
0 голосов
/ 28 апреля 2020

Я начинаю изучать Пролог, решая другой пример. Я делаю кодирование длины прогона текстовых данных с использованием Пролога, который должен произвести символ, за которым следует число раз, которое это происходит в последовательности. Я хочу, чтобы ответ был в формате ниже. Это популярный вопрос, так как он есть на сайте 99 прологов, но я не мог найти правильный ответ в другом месте. Пожалуйста, проверьте код и посмотрите, можете ли вы помочь мне найти исправление.

формат ответа; [('a', 3), ('b', 2), ('c', 1), ('a', 2)]

myencode([],[]).
myencode([First|Rest], Encoded) :- run(Rest,First,1,Encoded).

run([], Last,N,[Last,N]).
run([H|T], Prev, N, Encoded) :-
    dif(N, Prev),
    Encoded=[Prev, N|Rest],
    run(T,H,1,Rest);
    succ(N,N1),
    run(T,H,N1,Encoded).
...