Pemrograman prolog pemula

Saya mencoba mempelajari prolog. Saya ingin menulis di prolog kode untuk daftar angka umum. Sejauh ini saya memiliki pick_numbers_general(List, N, NumList), di mana List adalah daftar umum (termasuk yang bersarang), dan N adalah angka.

Predikat berhasil jika NumList adalah daftar angka-angka di List, termasuk yang ada di daftar bersarang, lebih besar dari N. Urutan kemunculan angka di Numlist sama dengan L, jadi misalnya, pick_numbers_general([g,h,1,[2,[n,3]],p],1,NumList) benar jika NumList adalah [2,3].


person Gunther    schedule 16.02.2011    source sumber


Jawaban (1)


Petunjuk: Anda melakukan tiga operasi sekaligus. Jika Anda membaginya, latihan ini menjadi lebih mudah.

pick_numbers_general(List, Min, Numbers) :-
    flatten(List, Flat),
    filter_numbers(Flat, Numbers0),
    filter_greater_than(Numbers0, Min, Numbers).
person Fred Foo    schedule 16.02.2011