2016-11-12 4 views
0
removeSecond([H|[X|T]], L) :- L = [H|T]. 

это мой код, но я не могу получить его, чтобы вернуть это необходимыеФункция пролога removeSecond, которая удаляет второй элемент данного списка. Например:

Например результаты:

removeSecond ([A [A B] C], L) 
Returns L = [A C] and 
removeSecond ([A B [C D]], L) 
Returns L = [A [C D]] 
+0

Что вы имеете в виду с '[A [A B] C]'? Вы имеете в виду '[A, [A, B], C]'? Или '[A | [A | B] | C] '? И точно, что вы ожидаете и что получаете? – max66

+0

m просто пытается удалить второй элемент списка. evertime Я положил его в пролог, я получаю эту ошибку amzi_listener: listen $ ((removeSecond (NEAR HERE [A [A B] C], L))) – Corey

+0

Элементы списка в Прологе должны быть разделены запятыми. Но результаты, которые вы показываете (если используются запятые), выглядят правильно. Второй элемент списка '[A, [A, B], C]' - '[A, B]'. Удаление второго элемента приводит к '[A, C]', который является тем, что вы получили. Аналогично, вторым элементом списка '[A, B, [C, D]]' является 'B'. При удалении это приводит к '[A, [C, D]]'. Если вы не ожидаете результатов, пожалуйста, объясните, что вы ожидаете. – lurker

ответ

0

я не понимаю, где, exacly, это проблема, но вы ...

описание товара removeSecond/2 нижеследующий?

removeSecond([H1, _ | T], [H1 | T]). 
+0

im просто пытается удалить второй элемент списка. evertime Я положил его в пролог, я получаю эту ошибку amzi_listener: listen $ ((removeSecond (** НИКОГДА ЗДЕСЬ ** [A [A B] C], L))). – Corey

+0

Что относительно пустых списков? А те, у кого есть один элемент? – false

Смежные вопросы