リスト内のすべての数値をどれだけ深くネスティングしてもカウントするプログラムが必要です。私は別のリストの中にいない場合に数字を数えることができましたが、深くネストされた要素を介して再帰的に働いているわけではありません。私はこれまでのところ、これを持っている:Prologはリスト内の数字を再帰的にカウントします
count([],0).
count([H|Tail], N) :-
count(Tail, N1),
( number(H)
->N is N1 + 1
; is_list(H)
-> count(H,N)
; N = N1
).
私はcount([a,1,[2,b],3],N)
を呼び出すことだったのであれば、出力はN=3
する必要があります。しかし、私はN=2
しか得ていません。誰かが私の2番目のケーステストに追加するのを助けてくれますか?深くネストされた数値要素では、ここで使用可能なすべてのソリューションが機能しません。
ありがとうございました!
あなただけで開始するリストを平らにすることはできません、そのから数字を数えますか? – RoadRunner
いいえ、私はflattenで解決策を試しましたが、ネストされたサブリストに対して再帰を使用することが期待されているので、 "落胆"していました。 –