Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2016, 10:17   #1
MariaD
Пользователь
 
Аватар для MariaD
 
Регистрация: 10.01.2013
Сообщений: 56
Вопрос [Haskell] Расстановка 8 ферзей

Задача о безопасной расстановке 8 ферзей(королев), ходят по горизонтали и вертикали
Поясните последние 2 строчки

Код:
import Control.Monad (foldM)
import Data.List ((\\))
 
main :: IO ()
main = mapM_ print $ queens 8  --печатает все аргументы ф-ции queens
 
queens :: Int -> [[Int]] 
queens n = foldM f [] [1..n]
 where
      f qs _ = [q:qs | q <- [1..n] \\ qs, q `notDiag` qs] 
      q `notDiag` qs = and [abs (q - qi) /= i | (qi,i) <- qs `zip` [1..]]
_-все что угодно
q:qs-множество, где q начало , а qs- конец?
в q заносятся числа от 1 до 8
(qi,i) <- qs `zip` [1..] - список пар?
\\ -неассоциативный список. в результате xs//ys первые значения каждого элемента из ys
заносятся в стек и удаляются из xs
в данном случае первые значения каждого элемента из qs заносятся в стек и удаляются из q(от 1 до 8)?
zip объедин ДВОИХ списков 1 элем с 1, [1..] бесконечный список
MariaD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расстановка ферзей. Delphi Lucky2011 Помощь студентам 4 11.02.2013 05:04
8 ферзей Роза!!! Паскаль, Turbo Pascal, PascalABC.NET 3 23.02.2011 10:54
8 ферзей battlefrogg Помощь студентам 5 06.05.2010 15:28
8 ферзей slim5 Общие вопросы Delphi 0 15.06.2008 11:46