Поиск в ширину

Dec 21, 2011 18:46

Клёвая реализация сабжа от antilamer:

data Tree a = Nil | Branch (Tree a) a (Tree a)

bfs t = [x | Branch _ x _ <- b]
where
b = t:[x | Branch l _ r <- b, x <- [l,r]]

Ленивость, все дела.

отсюда.

haskell, lazy evaluation, fp, программирование

Leave a comment

Comments 13

lionet December 21 2011, 16:36:09 UTC
Ошибка, там t а не b в конце.

Reply

lomeo December 21 2011, 17:11:34 UTC
Не понял твоего замечания. Если самую последнюю b заменить на t, то где рекурсия, т.е. собственно обход дерева?

Но там ошибка есть, да. Этот bfs не завершается :-( А если поправить, то уже не будет так красиво.

Reply

gliv December 21 2011, 19:22:48 UTC
О, замечательно! :)
Клевая реализация ... Там ошибка есть ... Если поправить, то уже не будет так красиво
Напомнило "могу печатать 1200 символов в минуту, но такая фигня получается" ;)

Reply

lomeo December 21 2011, 20:04:20 UTC
Я ошибку поздно заметил :-)

Reply


Leave a comment

Up