Traffic Jam — как решить задачу на языке Haskell
Прошло два месяца с момента моей предыдущей публикации о конкурсах по функциональному программированию, и я спешу порадовать заинтересованных читателей новым отчётом о проведённом конкурсе. На этот раз, в декабре, я немного сплоховал, из-за чего конкурс получился смазанным, скомканным. Хотя, по свидетельству одного из участников, задача была интересной, несмотря на то, что это опять поиск по дереву состояний. Но у меня на работе была сдача одного из проектов, поэтому я опубликовал заготовленную задолго заготовку, а прорекламировать конкурс и позабыл. В итоге приняло участие только два человека. Ну и вы сами можете всё это изучить: условие, результат. В качестве задачи участникам была сформулирована необходимость реализовать решатель для игр типы Rush Hour или Traffic Jam — на квадратной парковке при помощи использования свободных мест для разгребания заблокированного пути необходимо освободить «красную» машину — своеобразные «расширенные пятнашки». В общем, я думаю, большинство читателей понимает, о чём речь. Собственно, на конкурс было представлено два решения — одно на языке программирования Clojure, а второй — на JS. В честь того, что конкурс был заключительным в этом году, призы уже получили все участники. Ну, а я традиционно представлю решение конкурсной задачи на языке программирования Haskell. Так что если кому-то интересно —добро пожаловать под кат…