Я работаю над проблемой пролога, где у меня есть входной список положительных, отрицательных и «0 "номера. Я должен создать и затем вывести другой список по отношению к первому, где каждый положительный, отрицательный и «0» номер заменяется на «1», «-1» и «0» соответственно.Prolog - новый список с положительными, отрицательными и «0» элементами с 1, -1, 0 соответственно по отношению к списку ввода
Я начал с того, что принимает список, а затем заменяет каждый элемент положительным, а затем отрицательным, а затем «0», но я не думаю, что он работает правильно.
replace(_, _, [], []).
replace(O, 1, [O|T], [1|T2]) :- H = 1 replace(O, 1, T, T2).
replace(O, -1, [O|T], [-1|T2]) :- H = -1 replace(O, -1, T, T2).
replace(O, 1, [O|T], [0|T2]) :- H = 0 replace(O, 0, T, T2).
Спасибо за любую помощь!
Заменить '==' на '=: ='. В противном случае 'convert (0 + 1,1)' преуспевает, но 'convert (0 + 0,0)' терпит неудачу. И: 'convert (N, S): - S - знак (N) .' или более компактно:' maplist (\ N^S^(S - знак (N)), In, Out) ' – false
@false: thanks , Я отредактирую ответ – CapelliC