Уважаемым читателям хочу представить первый сборник отчётов по ежемесячным конкурсам по функциональному программированию, которые проводятся под эгидой ФП(ФП). Сборник содержит пять отчётов, а также некоторое количество дополнительных материалов. Всем, кто интересуется функциональным программированием и собирает литературу по нему, данная книга будет интересна.
Книга выпущена только в виде электронного издания и распространяется на безвозмездной основе (но всякий всегда может перечислить благодарность в пользу ФП(ФП), и я буду этому очень рад). Те, кто ещё не может отказаться от бумажных вариантов книг, всегда смогут воспользоваться технологией печати по требований (print on demand) и заказать себе экземпляр в малой типографии. В частности, в издательстве Самиздал можно заказать печатный вариант этой книги прямо «из коробки»: Альманах 2011. Там же есть и все остальные мои книги. Более того, при заказе любой моей книги вы можете указать в примечании, что заказ надо отправить на адрес автора (в издательстве знают), и тогда я с удовольствием поставлю автограф, после чего перешлю книгу заказавшему.
Ну а далее в этой заметке будет приведено расширенное содержание Альманаха, в том числе и для того, чтобы здесь был набор ссылок на отдельные заметки, которые я публиковал на Хаброхабре.
Конкурс № 1. Возраст детей математиков
Традиционный ежемесячный конкурс по функциональному программированию основался совершенно спонтанно. Случилось это в августе 2011 года, а на конкурс была задана задача о возрасте троих детей математика. Сама задача является крайне простой, а смысл конкурса заключался в том, чтобы выразить задачу на каком-либо языке программирования и решить её. Выражение условия в формализованном виде должно было по моему замыслу дать путь к решению. Так и произошло, к примеру, с моим решением, написанном на прекрасном языке Haskell.
Заметка для Хаброхабра по результатам конкурса не писалась.
Конкурс № 2. Кто на ком женат?
Второй конкурс также прошёл ещё тогда, когда идея ежемесячных конкурсов до конца ещё не оформилась. Мною была найдена также совсем несложная задача, которую всё так же надо было выразить при помощи своего любимого языка программирования. Задача называется «Кто на ком женат» и пришла к нам ещё с дореволюционных времён. Опять же, совсем несложная задача, и её вполне возможно решить аналитическим путём за пару минут. Тем не менее, формализация на языке программирования занятна.
Заметка для Хаброхабра по результатам конкурса всё так же ещё не писалась.
Конкурс № 3. Задачи о переправах
На третий конкурс по функциональному программированию, который к октябрю 2011 года уже оформился как периодический ежемесячный процесс со своим регламентов, планами, ключевыми датами, возможностью участвовать в конкурсе в качестве соорганизатора, многочисленными призами и т. д., была задана задача про крестьянина, волка, козу и капусту. Вроде бы задача простая, но опять же, её надо было выразить на своём любимом языке программирования так, чтобы при выполнении программы был вычислен правильный ответ. Более того, конкурсантам рекомендовалось сразу же писать обобщённый решатель подобных задач, потому как для так называемой проверки общности решений всем участникам давалось ещё несколько подобных задач с разным количеством действующих лиц, из которых кто-то мог грести, а кто-то не мог, а правила дружбы и вражды были совершенно произвольны. В итоге, многие справились с поставленной задачей, а мною был написан целый фреймворк для решения любых подобных задач.
- Заметка для Хаброхабра по результатам конкурса: Фреймворк для решения задач о переправах на языке Haskell.
Конкурс № 4. Цифровые индикаторы
Великолепный dastapov подогнал задачу на четвёртый конкурс. Задача заключалась в том, чтобы для заданного набора символов найти такой способ кодирования, в котором использовалось бы минимальное количество значащих элементов. Например, для обыкновенного семипозиционного индикатора цифр, используемого во всевозможных электронных приборах (древних :), надо было найти такие подмножества позиций индикатора, перегорание которых не влияло на стопроцентное распознавание символов. В качестве примеров конкурсантам были даны семипозиционный индикатор электронных цифр и девятипозиционный способ записи цифр для индекса. Кто-то из конкурсантов умудрился так решить задачу, что у него оказалось для десяти цифр только два значащих бита. Но это было из области курьёза :). В целом, все справились и получили призы.
- Заметка для Хаброхабра по результатам конкурса: Решение задачи о перегорающих лампочках на языке Haskell.
Конкурс № 5. Составление чисел из чисел
Всё тот же Дмитрий Евгеньевич, подогнал задачу и на пятый конкурс по функциональному программированию, который проходил в декабре 2011 года. На этот раз почтеннейшей публике была дана проблема построения арифметических выражений из заданного набора чисел при помощи произвольных арифметических операций и скобок. Целью упражнения является построение такого арифметического выражение, которое при вычислении давало бы требуемый результат. Задача решается на функциональных языках программирования в лёт, поэтому те конкурсанты, которые используют функциональную парадигму в своей работе, в этом конкурсе отличились. Ну и к слову надо отметить, что автором задачи, представленной именно на конкурс, был кто-то из пользователей ЖЖ, который при помощи неё собеседовал соискателей на вакансию разработчика. Впрочем, как всегда на конкурсе требовалось написать наиболее общее решение.
- Заметка для Хаброхабра по результатам конкурса: Конструирование и вычисление арифметических выражений на языке Haskell.
Дополнительные ссылки
Осталось привести только некоторые ссылки, чтобы любой заинтересовавшийся мог скачать себе описанный Альманах, а также дополнительные материалы, если кто-то заинтересуется. Вот некоторые мои книги для скачивания:
- Альманах «Конкурсы по функциональному программированию за 2011 год» — данный том является первым выпуском ежегодного Альманаха «Конкурсы по функциональному программированию», который составляется по результатам проводимых автором конкурсов в сети Интернет. Альманах структурирует и сводит воедино всю информацию, касающуюся конкурсных задач и их решений при помощи языка функционального программирования Haskell.
- Воспитание естественнонаучного мировоззрения у детей дошкольного и младшего школьного возраста. Том 1. Некоторые рекомендации родителям — в книге предлагается описание личного опыта автора в деле воспитания у детей естественнонаучного мировоззрения, системного подхода к познанию окружающего мира и кибернетического метода исследования. По возможности книга написана простым языком, в ней приведены многочисленные примеры, методики и подходы. При этом книга не является педагогическим изданием, в ней всего лишь описывается авторское видение на проблемы воспитания детей. Книга будет интересна любому родителю, который хочет воспитать в своих детях тягу к науке и технологиям.
- 14 занимательных эссе о языке Haskell и функциональном программировании — в книге представлено 14 статей автора, которые в разное время были опубликованы или подготовлены к публикации в научно-популярном журнале для школьников и учителей «Потенциал». Статьи расположены и связаны таким образом, чтобы они представляли собой логически последовательное повествование от начал к более сложным темам. Также в книге сделан упор на практические знания, предлагается решение многих прикладных задач при помощи языка функционального программирования Haskell.
- Методы получения, представления и обработки знаний с НЕ-факторами — в монографии рассматриваются три последовательных процесса работы со знаниями — получение, представление и обработка, причём акцент сделан на так называемых НЕ-факторах, то есть факторах неопределённости, которые обычно присутствуют в знаниях экспертов. Приводится обзор современных методов, подходов и технологий извлечения, представления и обработки таких знаний, даётся богатый список специализированной литературы.
Все те, кто перечислит свою благодарность в Фонд Поддержки Функционального Программирования ФП(ФП), смогут рассчитывать на персональный электронный экземпляр какой-либо моей книги (на выбор благодарного читателя) с моим автографом и дарственной надписью. Для этого после перечисления благодарности достаточно связаться со мной по электронной почте darkus.14@gmail.com
или прислать личное сообщение здесь.
Автор: Darkus