Каннибал мен миссионерлер


(e.Left-bank)(e.Right-bank)



бет2/10
Дата07.02.2022
өлшемі38,44 Kb.
#84826
түріПрограмма
1   2   3   4   5   6   7   8   9   10
Байланысты:
Каннибал мен миссионерлер
Ассемблерде программалау негіздері, Ассемблерде программалау негіздері
(e.Left-bank)(e.Right-bank)
Простейшие объекты могут быть представлены РЕФАЛ-символами. Будем использовать для обозначения миссионера 'M' , а для каннибала -'C'. Ситуация, когда на левом берегу три миссионера и один каннибал, а на правом берегу два каннибала, может быть тогда представлена следующим образом:
('MMMC')('CC')
Так как порядок, в котором люди перечисляются, не играет роли, три миссионера и каннибал могут быть также представлены как 'CMMM' , 'MCMM' , и т.д. Нужно ли оставлять такую свободу в представлении или лучше фиксировать определенный порядок? Последний вариант, очевидно, предпочтительнее. Следует продумать заранее использование РЕФАЛ-представлений в образцах. При произвольном порядке символов для определения, находятся ли миссионеры на данном берегу, будет использоваться образец e1'M'e2 . Этот образец включает открытую e-переменную, которая означает просмотр выражения. Если принять соглашение о перечислении миссионеров перед каннибалами, то же самое может быть определено по более простому образцу 'M'e1 . Чтобы определить, имеется ли в группе хотя бы один каннибал, применяется e1'C' , а для определения, присутствуют ли в ней оба вида людей, применяется 'M'e1'C'. Здесь используется тот факт, что люди делятся только на два вида.
Теперь следует позаботиться о лодке. Один из способов - включить ее в качестве символа 'B' в описание соответствующего берега, скажем, так:
('MMMC')('BCC')
Однако, это будет не слушком удобно. Чтобы абстрагироваться от размещения лодки, будут применяться два образца:


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©www.engime.org 2024
әкімшілігінің қараңыз

    Басты бет