Программирование пролога для начинающих

Пытаюсь выучить пролог. Я хочу написать в прологе код для общего списка чисел. Пока у меня есть pick_numbers_general(List, N, NumList), где List - общий список (включая вложенные), а N - число.

Предикат считается успешным, если NumList - это список чисел в List, включая числа во вложенных списках, больше N. Порядок появления чисел в Numlist такой же, как и в L, поэтому, например, pick_numbers_general([g,h,1,[2,[n,3]],p],1,NumList) истинно, когда NumList равно [2,3].


person Gunther    schedule 16.02.2011    source источник


Ответы (1)


Подсказка: вы выполняете сразу три операции. Если вы разделите их, эти упражнения станут намного проще.

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