Я пытаюсь найти 2 минимальных числа из двух списков. Я могу найти из одного списка, но что, если второе минимальное число во втором списке.Пролог Найти минимальные цифры из 2 списков
Например, min_in_list([2,8,7], [5,3,4], M)
следует M = [2, 3]
.
Код, указанный ниже для одного списка.
min_in_list([Min],Min). % We've found the minimum
min_in_list([H,K|T],M) :-
H =< K, % H is less than or equal to K
min_in_list([H|T],M). % so use H
min_in_list([H,K|T],M) :-
H > K, % H is greater than K
min_in_list([K|T],M). % so use K
Лучше всего было бы иметь два минимальные переменные, а затем перебирать списки и сравните как, заменяя значения, когда это необходимо. Я не пролог, поэтому я не могу помочь в кодировании. –
Если ваш 'min_in_list' работает для одного списка, вы можете использовать его дважды:' min_in_list (L1, L2, [M1, M2]): - min_in_list (L1, M1), min_in_list (L2, M2). подобно нечетному предикату, тем не менее, у него были бы жестко закодированные аргументы, чтобы независимо получать минимальные значения из двух разных списков, если нет других отношений между списками, которые вы не упомянули. – lurker
Я не понимаю, как это отличается от поиска минимума для каждого списка отдельно? –