リストのリストのすべてのリストの最初の要素を削除しようとしています。 たとえば、[[1,2]、[3,4]]を表示するには、[[2]、[4]]を返す必要があります。 ほとんどの状況では、以下のこのコードは正常に動作します:Prologのリストのリストの各リストから最初の要素を削除する最も良い方法は?
remove_firstElem([],[]).
remove_firstElem([[_H|T]|Ls],[T|L]) :-
remove_firstElem(Ls,L).
しかし、私は希望[1]、[2] []のようなリストのために、それは[[]、[]]、[]を返すのではなくします。私がこれまで試したどのような
は、次のようになります。
remove_firstElem([_H|Ls],L) :-
length(_H,1),
remove_firstElem(Ls,L).
しかし、それは[ ],[[ ]],[[ ]],[[ ],[ ]]
を返し、私は本当にそれが悪いのか分かりません。
私はそれを修正する手助けはできますか?助けてくれてありがとう!
:
を私たちは、さらにバックトラックの量が少なくなるような文を、並べ替えることができます。 'remove_firstElem([[]]、L)'と似ています。 –
を[[]]に戻すと、[]が返されます。返されるリストに空のリストは存在しません。 – Fallin