Marinka
1

Разработать программу для поиска пути в лабиринте

01.10.2014, 00:19. Показов 1802. Ответов 3
Метки нет (Все метки)

Здравствуйте! Помогите, пожалуйста​, разработать программу для поиска пути в лабиринте на лиспе. Предусмотреть возможность задания входа и выхода, наглядное представление найденных решений. Нашла такую программу, но на Home Lisp она не работает. Подскажите, пожалуйста, почему. Спасибо!
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(defun find_room (point labirint) 
 
(cond ((null labirint) nil) 
 
((eql (caar labirint) point) (second (car labirint))) 
 
(t (find_room point (cdr labirint)))))
 
 
 
(defun find_path_r (labyrinth path) 
 
(let ((room (find_room (car path) labyrinth))) 
 
(case room 
 
((nil) nil) 
 
((out) (nreverse (cons 'out path))) 
 
(t (find_path_r labyrinth (cons room path)))))) 
 
 
 
(defun find_path (labyrinth) 
 
(find_path_r labyrinth (cons 'in nil)))
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2014, 00:19
Ответы с готовыми решениями:

Программа поиска пути в лабиринте
Здравствуйте! Задали в универе написать программу на Билдере, которая бы искала путь в лабиринте....

Алгоритм поиска пути в лабиринте
159 ошибок помогите разобраться #include "conio.h" // Для функции getch() #include <string.h>...

алгоритм поиска кротчайшего пути в лабиринте
суть в том, чтобы найти кротчайший путь в лабиринте, организованном в StringGrind случайным образом...

Реализация волнового алгоритма поиска пути в лабиринте
Люди прошу помощи бьюсь над этой фигнёй уже 3 недели. На форуме впервые прошу не ругать за...

3
Модератор
Эксперт функциональных языков программированияЭксперт Python
33773 / 18811 / 3967
Регистрация: 12.02.2012
Сообщений: 31,551
Записей в блоге: 12
01.10.2014, 10:16 2
Дорогая Marinka, знаешь, чем отличается вдумчивый студент от... не очень? Вдумчивый никогда не скажет просто "не работает". Это слова не программиста, а юзера. Какую ошибку выдает программа в HomeLisp?

Добавлено через 1 час 40 минут
Вот работающий код поиска пути, основанный на обходе в глубину. Путь, конечно, получается далеко не всегда кратчайший. Графы задаются списками ребер.

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(defun search (v graph chk)  ;; найти первую вершину, связанную с v и непосещенную
  (dolist (i graph nil)
    (when (and (eq v (car i)) (not (member (cadr i) chk))) (return (cadr i)))
    (when (and (eq v (cadr i)) (not (member (car i) chk))) (return (car i)))))
 
(defun dfs! (graph &optional (chk '(1)) (stack '(1))) ;; обход в глубину
  (let ((w (if (null stack) nil (search (car stack) graph chk))))
       (cond ((and (null w) (null stack)) nil)
             ((null w) (dfs! graph chk (cdr stack)))
             (t (cons (list (car stack) w) (dfs! graph (cons w chk) (cons w stack)))))))
 
(defun dfs (graph v)  ;; более удобный интерфейс обхода в глубину
  (dfs! graph (list v) (list v)))
 
(defun search-path (lst e) ;; поиск пути
  (cond ((null lst) nil)
        ((eq (cadar lst) e) (list (car lst)))
        (t (cons (car lst) (search-path (cdr lst) e)))))
 
(defun task (graph b e) ;; собственно решение
  (search-path (dfs graph b) e))
 
;; пробуем:
 
(task '((1 2) (1 3) (2 4) (2 5) (3 5) (3 6) (4 5) (5 6)) 1 5)
 
==> ((1 2) (2 4) (4 5))
4
0 / 0 / 0
Регистрация: 20.09.2014
Сообщений: 9
01.10.2014, 22:56 3
Подскажите, почему не выдает результат
Миниатюры
Разработать программу для поиска пути в лабиринте  
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
33773 / 18811 / 3967
Регистрация: 12.02.2012
Сообщений: 31,551
Записей в блоге: 12
02.10.2014, 11:37 4
Цитата Сообщение от Anko Посмотреть сообщение
Подскажите, почему не выдает результат
- старое ядро HomeLisp. В Этой нити лежит более свежее ядро. Скачайте, распакуйте и замените файлы на новые.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2014, 11:37
Помогаю со студенческими работами здесь

Алгоритм поиска пути в лабиринте, заданном связным графом
использовать алгоритм поиска пути в лабиринте, заданном связным графом. граф уже задан в самой...

Рекурсия (не могу из нее выйти) поиска пути в лабиринте
Добрый день, друзья! Пытаюсь реализовать программу, которая бы находила путь в лабиринте(интовый...

Исправить программу нахождения пути в лабиринте
Не могу доделать Лабиринт Вот код программы Program meh; uses crt; var mass:array of...

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки )
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void lab...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru