Я пытаюсь сделать rule
в Prolog
, где я проверяю, подходит ли он, если нет, я увеличиваю и проверяю снова, пока он не подходит.Но моя проблема в том, что когда я узнаю числа, где он fits
, и пытаюсь их вернуть, исходные числа остаются прежними.
** Обратите внимание, что это не оригинальное правило, моемного дольше и было бы слишком много, чтобы написать здесь, но я постарался сделать это как можно проще.
Кроме того, структура должна оставаться прежней.
make_it_fit(X,Y):-
does_it_fit(X, Y),
write(['Nums ', X,Y]).
%--- Check if fits, if not then increase number and check until fits
does_it_fit(X,Y):-
(fits(X,Y));
(find_new(X,Y,X1,Y1),does_it_fit(X1,Y1)).
Поэтому, когда я звоню:
?- make_it_fit(5,5).
Это идет к does_it_fit(5,5)
, делает fits(5,5)
, выясняетчто он не подходит, увеличивает числа до (6,6)
и вызывает does_it_fit(6,6)
, затем проверяет fits(6,6)
, выясняет, подходит ли он и возвращает.
Теперь, когда я пишурезультаты только для того, чтобы увидеть их, он по-прежнему печатает (5,5)
, а не (6,6)
.
Что я здесь не так делаю?
Если я не объяснил это достаточно четко, то сделайтерасскажите, и я постараюсь объяснить это дальше.