Побег от Зурга

Nov 26, 2007 23:21

Я тут как-то на досуге перевёл статью Мартина Эрвига "Побег от Зурга". В этой статье показывается, как на Хаскелле решаются типичные прологовские задачи поиска с возвратом, и рассказывается, что Хаскелл гораздо проще для студентов, чем Пролог...

Побег от Зурга

Упражнение в логическом программировании

Мартин ЭРВИГSchool of EECS, Oregon State ( Read more... )

haskell, zurg

Leave a comment

Comments 20

deni_ok November 26 2007, 18:50:32 UTC
Здорово! Спасибо.

Reply

geniepro November 26 2007, 19:10:32 UTC
Всегда пожалуйста... ;о)

Reply


а аааааа ex_croco667 November 26 2007, 20:15:30 UTC
Ну нету, нету, и не может быть в русском языке словоформы "мультипарадигменный"! В русском языке может быть словоформа "мультипарадигмальный". Если сомневаетесь, приведите пример хоть одного слова на "-менный", имеющего более чем два слога в корне. И/или хотя бы один пример слова на "-менный" с корнем иностранного происхождения.

И только я вас очень прошу, не надо ссылаться на безграмотный наколенный перевод неплохой, вообще говоря, книжки Джеймса Коплиена. Герой-переводчик стране не известен, ибо отказался, видимо, от указания авторства. И правильно сделал -- такой перевод способен репутацию уничтожить навсегда. А между тем, именно после появления чудовищной словоформы "мультипарадигменный" в заглавии этой книжки она стала встречаться и в других местах.

Reply

Re: а аааааа geniepro November 26 2007, 21:38:45 UTC
А можно поинтересоваться, где Вы откопали слово "мультипарадигмальный"? Его, как и слова "мультипарадигменный", нет в словарях (в интернете).
Но "мультипарадигменный" хотя бы в википедии употребляется, в отличии от...

"мультипарадигмальный" -- слух режет невообразимо...

Хорошо, пусть рассудит гугл:
"мультипарадигмальный" -- 103 ссылок
"мультипарадигменный" -- 1100 ссылок

Хотя что нам гугл? Яндекс-словари:
"парадигмальный" -- 155 ссылок
"парадигменный" -- 0 ссылок

Ох уж эта парадигма, грамматический пример, система форм одного слова... Какие же у неё самой словоформы?

ЗЫ. Вы знаете, языки имеют тенденцию к изменению со временем... ;о)

Reply

Re: а аааааа geniepro November 26 2007, 21:44:53 UTC
> Если сомневаетесь, приведите пример хоть одного слова на "-менный", имеющего более чем два слога в корне. И/или хотя бы один пример слова на "-менный" с корнем иностранного происхождения.

Вапще-то это некорректная постановка вопроса -- "м" является частью корня "парадигм", а слов с окончанием "-енный" найти можно много... Ну например, "качественный"...

Reply

Re: а аааааа igde November 28 2007, 08:24:19 UTC
>>>хотя бы один пример слова на "-менный" с корнем иностранного происхождения.
форменный

Reply


prince_florizel November 28 2007, 09:15:11 UTC
Спасибо! Очень интерсное реешение. А как посмотреть результат (ходы)? Что в main надо вызвыть?

Reply


prince_florizel November 28 2007, 13:58:35 UTC
Спасибо! Уже сам справился. Проще можно? Только начинаю на Хаскелле.

Вот первое решение:

main = do

let move1 = solution !! 0
putStrLn ("First solution=" ++ show move1)
getLine

Reply


prince_florizel November 28 2007, 14:04:22 UTC
Разобрался! И оба решения ещё проще. ;-)

main = do
putStrLn ("Solutions=" ++ show solution)
getLine

Reply

А Вы ещё вот так попробуйте: geniepro November 29 2007, 06:51:20 UTC

main = sequence_ $ map (putStrLn . unlines . map show) $ map fst solution
на печать выводится все (два) решения:

Right [Buzz,Woody]
Left Buzz
Right [Hamm,Rex]
Left Woody
Right [Buzz,Woody]

Right [Buzz,Woody]
Left Woody
Right [Hamm,Rex]
Left Buzz
Right [Buzz,Woody]

Reply

Re: А Вы ещё вот так попробуйте: prince_florizel November 29 2007, 06:56:23 UTC
Спасибо огромное! Разберу эту волшебную строчку. ;-)

Reply

Re: А Вы ещё вот так попробуйте: geniepro November 30 2007, 17:23:17 UTC
Я там немного переусложнил, лучше так:

main = putStrLn $ unlines $ map (unlines . map show . fst) solution
Очень просто -- берём список результатов solution, каждый элемент которого является списком ходов вправо/влево + конечный положение игрушек, которое нас не интересует (ведь мы итак его знаем, так что берём только ходы по fst), и обрабатываем (map) так, что все ходы преобразуются в текстовый вид (map show). Получившийся список строк сцепляем в одну строку с переносами (unlines), и имеем снова список строк, который также сцепляем по unlines. Полученную строку печатаем (putStrLn)

Reply


Leave a comment

Up