Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу помогите пожалуйста разработать программу
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Настя1994 Настя1994 вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.12.2014
Exclamation помогите пожалуйста разработать программу - 08.12.2014, 03:44

помогите пожалуйста разработать программу (на лиспе) для логической задачи:

Три миссионера и три каннибала находятся на левом берегу реки. Все хотят перебраться на другой берег. Имеется лодка, вмещающая не более двух человек. Если на каком-то берегу каннибалов окажется больше, чем миссионеров, то они съедят миссионеров. Найти последовательность перемещений лодки с одного берега на другой, гарантирующую безопасность миссионерам

У меня есть пример про козу, волка, капусту, и там их тоже нужно на лодке перевезти с одного берега на другой..
Задача очень похожая, но я не понимаю как сделать( Кто сможет мне помочь?((
lisp Код:
(defun make-state (farmer wolf goat cabbage)
    (list farmer wolf goat cabbage))
(defun farmer-side (state) (nth 0 state))
(defun wolf-side (state) (nth 1 state))
(defun goat-side (state) (nth 2 state))
(defun cabbage-side (state) (nth 3 state))

(defun safe (state)
    (if (not (eq ( goat-side state) ( farmer-side state)))
        (cond
            (( eq ( wolf-side state) ( goat-side state)) nil)
            (( eq ( cabbage-side state) ( goat-side state)) nil)
            (T state))
    state))
   
(defun farmer-takes-self (state)
    (safe (make-state
            (opposite ( farmer-side state))
            (wolf-side state)
            (goat-side state)
            (cabbage-side state))))
           
(defun farmer-takes-wolf ( state)
    (cond
        ((equal (farmer-side state) (wolf-side state))
            (safe (make-state (opposite (farmer-side state))
                    (opposite ( wolf-side state))
                    (goat-side state)
                    (cabbage-side state))))
        (t nil)))
       
(defun farmer-takes-goat (state)
    (cond
        ((equal (farmer-side state) (goat-side state))
            (safe (make-state (opposite (farmer-side state))
                    (wolf-side state)
                    (opposite (goat-side state))
                    (cabbage-side state))))
    (t nil)))
   
(defun farmer-takes-cabbage ( state)
    (cond
        ( ( equal ( farmer-side state) ( cabbage-side state) )
            ( s a f e (make-state ( opposite ( farmer-side state) )
                    ( wolf-side state)
                    ( goat-side state)
                    ( opposite ( cabbage-side state) ) ) ) )
    (t nil)))
   
(defun opposite (side)
    (cond
        ((equal side ’e ) ’w)
        ((equal side ’w) ’e)))
       
(defun path (state goal been-list)
    (cond
        ((null state) nil)
        ((equal state goal) (reverse (cons state been-list)))
        ((not (member state been-list :test #’equal))
            (or
                (path (farmer-takes-self state)
                    goal (
                    cons state been-list))
                (path (farmer-takes-wolf state)
                    goal (cons state been-list))
                (path (farmer-takes-goat state)
                    goal
                    (cons state been-list))
                (path (farmer-takes-cabbage state)
                    goal
                    (cons state been-list))))))
       
Запрос:
       
(print (path ’(w w w w)( e e e e ) ()))

Последний раз редактировалось Настя1994; 08.12.2014 в 03:47
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста написать программу Malika)) C++ Builder 1 24.05.2014 21:13
Разработать программу для игры «Ним» student11 Lisp 0 24.04.2014 22:51
написать программу на С++, помогите пожалуйста прол Задания за деньги 2 27.12.2013 10:31
Помогите пожалуйста написать программу :* Tatka_Axe Pascal 0 02.03.2012 12:59
помогите пожалуйста написать программу!! AlyonaZvereva Любые вопросы от новичков 0 03.12.2011 14:57
Как разработать программу DFD IRD SADT Vanom Вопросы начинающих программистов 0 20.12.2010 23:58
пожалуйста, помогите подправить программу gali Prolog 1 09.05.2010 19:15
Помогите разработать программу, которая выполняет следующие операции: Vovchik4417 Prolog 0 10.12.2009 17:25
Помогите пожалуйста доделать программу! VIP 5.1-5.2 ЗАМУЧИНННЫЙ Prolog 2 03.08.2008 00:04
Требуется разработать программу для смс сообщений brulik Symbian 1 12.12.2005 13:03
Разработать программу аналог SQL Sergem Общие вопросы создания ПО 2 27.07.2005 09:54



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов