
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.88] |
![]() |
|
Сообщ.
#1
,
|
|
|
Вот прошу помочь мне доделать задачку про Восьмерку! смысл в том что в квадрате 8х8 есть цифры от 0 до 7 и пустое место b. необходимо перемещать цифры так чтобы они из перемешанного состояния по порядку выстроились. то есть из
0 1 2 3 4 5 6 7 (0 1 2 3 4 5 6 7 b). вот как у меня выводится (breadth-first-search '(0 1 2 3 4 5 6 b 7)) ""Najdeno (0 1 2 3 4 5 6 7 B) za 3 shaga. Rasshiril 9 uzla, hranil maximum 5 uzlov." А как сделать так чтобы и сами шаги перебора выводились, то есть когда меняет местами цифры - это выводить как бы по шагам. вот, часть кода. [CODE] (defun successors (grid) "Return a list of new grids consisting of all possible moves from GRID." (delete nil (list (up grid) (down grid) (left grid) (right grid)))) (defun finished? (grid) "Return T if GRID is in perfect order with the 'hole' at the end, NIL otherwise." (equal grid '(0 1 2 3 4 5 6 7 b))) (defun breadth-first-search (start) (let ((open (list start)) ; the list of nodes to be examined (closed (list)) ; the list of nodes already examined (steps 0) ; number of iterations (expanded 0) ; total number of nodes expanded (stored 0)) ; max number of nodes stored at any one time (loop while open do (let ((x (pop open))) (when (finished? x) (return (format nil "Najdeno ~a za ~a shaga. Rasshiril ~a uzla, hranil maximum ~a uzlov." x steps expanded stored))) (incf steps) (pushnew x closed :test #'equal) (let ((successors (successors x))) (incf expanded (length successors)) (setq successors (delete-if (lambda (a) (or (find a open :test #'equal) (find a closed :test #'equal))) successors)) (setq open (append open successors)) (setq stored (max stored (length open)))))))) Если мало комментариев - поясню, просто билась с не долго так, вот очень прошу помочь доделать! если что - в ответ тоже что нибудь помогу! просто вот досталась задачка)) |
Сообщ.
#2
,
|
|
|
Спасибо, уже рзобралась!))
![]() |