Я один из самых больших новичков в Прологе и пытаюсь понять, как можно написать следующую загадку в виде кода Пролога:
"Чтобы проиллюстрировать производственную систему в действии, мы рассмотрим
следующая задача. У нас есть три кирпича, каждый разного размера, сидя в
куча У нас есть три идентифицируемые позиции, в которых мы хотим разместить
кирпичи с роботизированной «рукой»; Назовите эти позиции 1, 2 и 3. Наша цель
это разместить кирпичи в этих положениях в порядке их размера, с
самый большой в положении 1 и самый маленький в положении 3. "
Так как же это работает на самом деле? Я предполагаю, во-первых, нужно иметь рабочую память, описанную так:
(brick name: brick1 size: 3 position: heap)
(brick name: brick2 size: 4 position: heap)
(brick name: brick3 size: 5 position: heap)
Целью будет brick3 в позиции 1, brick2 в позиции 2 и brick 1 в позиции 3.
Я также знаю, что мне нужно 2 правила производства, первое из них помещает самый большой кирпичик в руку, а другое помещает кирпич из руки в следующую позицию, но как мне представить эти правила как код Пролога? и какую команду я бы запустил, чтобы получить результат?
Редактировать: я только знаю, что мои правила должны быть:
IF (brick position: heap name: n size: s)
−(brick position: heap size:{> s})
−(brick position: hand)
THEN MODIFY 1 (position hand)
IF (brick position: hand)
(counter value: i)
THEN MODIFY 1 (position i) MODIFY 2 (value [i + 1])