Как решить этот алгоритм в коде Пролог? (производственные системы) - PullRequest
0 голосов
/ 10 января 2019

Я один из самых больших новичков в Прологе и пытаюсь понять, как можно написать следующую загадку в виде кода Пролога:

"Чтобы проиллюстрировать производственную систему в действии, мы рассмотрим следующая задача. У нас есть три кирпича, каждый разного размера, сидя в куча У нас есть три идентифицируемые позиции, в которых мы хотим разместить кирпичи с роботизированной «рукой»; Назовите эти позиции 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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...