Я получил список, состоящий из небольших списков внутри него, каждый список, состоящий из 2-х элементов:Пролога - получить первый список из списка списков
[[a,1],[b,2],[c,3]]
я использую функцию называется взятие (1, L, R) взять первый элемент из списка L и возвратить деталь R. код для функции отбора здесь:
take(0,X,X).
take(N,[H|T],[H|R]):-
N>0, M is N-1,
take(M,T,R).
на данный момент пробег может выглядеть следующим образом:
1 ?- take(1,[[a],[b],[c]],Taken).
Taken = [[a], [b], [c]]
Это то же самое, что и вход! Это то же самое для «обычного» списка 1 уровня глубины:
2 ?- take(1,[a,b,c],Taken).
Taken = [a, b, c]
Вопрос:
вопрос для вас, как я могу сделать результат выглядит следующим образом:
1 ?- take(1,[[a],[b],[c]],Taken).
Taken = [a]
Я хочу вернуть первые N элементов списка, который я отправляю.
Это выглядит подозрительно, как домашнее задание ... – Cameron
Лучше использовать 0 в качестве индекса первого элемента. – starblue