Я сейчас пытаюсь написать программу на Прологе, которая печатает таблицу типа
x x x x
x x x x
x x x x
5 6 7 8
x x x x
x x x x
x x x x
1 2 3 4
Вы можете себе представить, что в супермаркете есть полки, а x
s - пустые полки и полки которым есть товар, присваивается номер. Таким образом, 1
представляет полку с идентификатором шельфа 1, 6
- это полку с идентификатором шельфа 6 et c
Я хочу написать функцию, которая выполняет итерацию по массиву, в котором хранятся все местоположения полок и ShelID, и печатает ShelID. Если это пустая полка без идентификатора, ее следует распечатать как x
, как показано выше.
Программа успешно распечатывает идентификатор полки при точном совпадении, но не обрабатывает сценарий случая ios, где полка пуста и не имеет идентификатора.
Как мне это сделать?
Я уже проверил обучающее видео https://www.youtube.com/watch?v=SykxWpFwMGs&t=352s и еще одну публикацию переполнения стека 'if' в прологе? , но они, похоже, неприменимы в моем случае, потому что это включает в себя более 2 возможностей (при печати строки (5, 6, 7, 8), строки (1, 2, 3, 4), и строки, которые печатают (х, х, х, x), а не просто if-then-else
, который, по сути, обрабатывает только два случая.
Код, который я написал до сих пор, выглядит следующим образом (я знаю, что синтаксис может быть полностью испорчен. У меня нет нашел хорошую документацию)
% shelves locations
map([point(1,1), point(1,2), point(1,3), point(1,4),
point(2,1), point(2,2), point(2,3), point(2,4),
point(3,1), point(3,2), point(3,3), point(3,4),
point(4,1), point(4,2), point(4,3), point(4,4),
point(5,1), point(5,2), point(5,3), point(5,4),
point(6,1), point(6,2), point(6,3), point(6,4),
point(7,1), point(7,2), point(7,3), point(7,4),
point(8,1), point(8,2), point(8,3), point(8,4)]).
print_shelf(1,4):-
ShelfID is 5,
write(ShelfID).
print_shelf(2,4):-
ShelfID is 6,
write(ShelfID).
print_shelf(3,4):-
ShelfID is 7,
write(ShelfID).
print_shelf(4,4):-
ShelfID is 8,
write(ShelfID).
print_shelf(1,8):-
ShelfID is 1,
write(ShelfID).
print_shelf(2,8):-
ShelfID is 2,
write(ShelfID).
print_shelf(3,8):-
ShelfID is 3,
write(ShelfID).
print_shelf(4,8):-
ShelfID is 4,
write(ShelfID).
print_shelf(Other, Hoka):-
Hoka =/= 4,
Hoka =/= 8,
NonID is 'x',
write(NonID).
%print_map... yet to be implemented...
ПРИМЕЧАНИЕ. Если вы хотите ответить на этот пост, пожалуйста, напишите свой ответ, опубликовав ответ с некоторыми конкретными примерами, к которым я могу привести, а не просто писать комментарий к моему посту с вопросом. Если вам хочется написать комментарий типа «Просто посетите www.learnprolognow.org», НЕ пишите комментарий в первую очередь. Я не спрашиваю такого ответа. Весь смысл написания этого поста чтобы найти объяснение, которое я не мог найти в существующем онлайн Электронные ресурсы. Пожалуйста, пишите комментарий вместо того, чтобы публиковать ответ, только если вы пытаетесь уточнить, что такое мой вопрос или что я имел в виду в той части кода, которую я предоставил перед тем, как опубликовать ответ. Заранее спасибо