Пролог 2

Пролог 2

Допоможіть вирішити задачку про вовка, козу, капусту. Потрібно перевезти на інший берег

кого-небудь - ми самі вибираємо, потім вибираємо, хто прийде наступний на цей берег і знову

вибираємо кого перевозити, і так в циклі на кожному кроці вважаємо втрати, якщо є (вовк їсть

козу, коза їсть капусту). На тому березі, завжди залишається 2 - який був до цього і тільки

що перевезений.
Я спробувала реалізувати через базу даних, але у мене не зовсім виходить, можна через

списки, але у самій теж не виходить. (((


domains
Koza, Kapusta, Volk, s = string
sum = integer

database - lev
animals (s)
database - prav
animals1 (s)

predicates
dialog
na4alo
open
repeat

clauses
repeat.repeat: -repeat.
open: -consult ( "lev.dbo", lev).
dialog: -
repeat,
write ( "Kogo vi hotite perevezti:"), nl,
consult ( "lev.dbo", lev),
readln (S),
retract (animals (S), lev),
assert (animals1 (S), prav),
write ( "Kto pridet sleduschej?"), nl,
readln (X),
assertz (animals (X)),
save ( "lev.dbo", lev),
save ( "prav.dbo", prav),
write ( "Vi hotite prodolzhit? Y / N"), nl,
readln (Z),
Z = "N".


Але тут треба дописати перевірку, що типу коза капусту їсть, вовк - козу, цикл у мене

повторюється до тих пора поки я сам не натисну стоп і вважає втрати на кожному кроці.
Помогите плиз.

Схожі статті