Поиск:

Ответ в темуСоздание новой темы Создание опроса
> задача о восьми ферзях, помогите с задачей 
:(
    Опции темы
rang3r
Дата 17.5.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



Доброго времени суток!! помогите с задачей:"Решить задачу о восьми ферзях на языке Lisp".
Нашел решение на языке ConstraintLisp не могу понять как переписать его на язык MuLisp. Код решения
Код

;;; определение класса Queen
(defclass Queen ( )
    (( x :initarg :x :accessor x );;; координата по горизонтали
    ( y :initarg :y :accessor y)));;; координата по вертикали
;;; основная процедура поиска решения
(define Queens ( )
(let ((Chessboard ( make-queens)) );;; создаем массив из восьми ферзей
    (cldotimes ( I 7 );;; начальное значение переменной I 0
        (cldotimes ( J (- 7 I ));;; начальное значение переменной J 0
            (constraints ( x (aref Chessboard I ))
                ( x (aref Chessboard (+ J I 1 ))) (1+ I) (+ J I 2 ))))
( generateObjs Chessboard );;; генерация решения
( printArrayObjs Chessboard )));;; вывод результатов
;;; ограничения отсутствия вертикальных и диагональных атак
(define constraints (x1 x2 y1 y2)
    (constr (/= x1 x2));;; по вертикали
    (constr (/= (+ x1 y1 ) (+ x2 y2 ))) ;;; по главной диагонали
    (constr (/= (- x1 y1 ) (- x2 y2 ))));;; по второй диагонали
;;; создаем массив ферзей
(defun make-queens ( )
    (let ( (queen-array (make-array 8 )))
        (dotimes (I 8 queen-array )
            (setf (aref queen-array I )
                (make-instance 'queen :x (make-cvar-in '((1 ,8 )))
                                      :y (1+ I) )))))

Данное решение использует классы, мне же надо только при помощи фукнций, помогите плз!!!!
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0370 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.