Для тех кто не совсем в теме

Спешу поздравить всех –  не так давно прошел очередной ICFP Contest,  в котором мы очередной раз учавстовали. Для тех, кто еще не знает, в двух словах – это международное сореврнование для людей, обладающих даром программирования ;) Так, в этом году в этом соревновании более-менее активно учавствовало около 200 команд.

Как обычно соревнование проходило три дня. Команды, которые отослали решения в первые 24 часа, учитываются в т.н. lighting round’e. Все-все хватит ;) Правила и условие задачи можно спокойно прочитать в интернете.

Участники

В этом году в нашей команде было всего два человека – это Я (tt.kilew) Павел Тайкало, и Роман Мазур. Кроме нас, время от времени, подключался Александр Тищенко (amenaphes), и Павел Башмаков (pbashmakov).

Поиски подсказок и планы

Хотя в этом году подсказок не было выложено в интернета, как это часто бывало в предыдущих годах, я выделю одну предложение для этой фазы, потому что мы с Ромой, наверное, за месяц до начала соревнования более-менее регулярно просматривали страницу организаторов в поисках подсказок. Правда, все попытки найти хоть что-то оказались напрасными. Ну и ладно, в любом случае, они не особо помогали и в прошлых годах.
Ну и еще немного о подготовке. Буквально за несколько часов до начала, в репозитории был уже закоммичен код следующего плана:


package com.stanfy.icfp10;
public class ICFPTaskSolver{
  public static void main(String[] args) {
    ICFPTaskSolver icfpTaskSolver = new ICFPTaskSolver();
    icfpTaskSolver.initialize();
    icfpTaskSolver.makeICFPTask();
    icfpTaskSolver.submitICFPTask();
    icfpTaskSolver.profit();
  }
  public void initialize() {
    System.out.println("Initialized");
  }
  public void makeICFPTask() {
    System.out.println("ICFP Task Started");
  }
  public void submitICFPTask() {
    System.out.println("ICFP Task submitted");
  }
  public void profit() {
    System.out.println("Profit");
  }
}

Как оказалось, такой план, был не только у нас.

Начало непонимания

15:00(Дальше все время по локальному киевскому +3:00 GMT). Сервер, как ни странно, выдержал первую атаку ICFP-шеров. И уже через минуту мы уже вгрызались в полученное нами задание.

 

До недавнего времени мне приходилось заниматься разработкой только веб-приложений на Java и лишь в конце апреля я впервые познакомился с операционной системой Android. Мне предложили заняться разработкой приложения для бронирования отелей BookingApp для конкурса от HTC — HTC Android Developers Contest.

Мы решили, что разработка Android приложения для конкурса это отличная возможность не только рассказать о себе, но и сделать свой собственный продукт для Android, который потом в Stanfy сможем развивать дальше. Один из наших проектов для iPhone как раз в то время находился в разработке и мы решили сделать для него Android версию.

В результате, через полтора месяца работы появилось приложение BookingApp для Android и iPhone.

Назначение приложения — поиск отелей и апартаментов по городам Украины, с возможностью ознакомиться с описанием и ценами найденных объектов, просмотреть фотографии, узнать их месторасположение на карте, сделать звонок и выполнить заказ прямо из приложения.

Осознавая, что работы предстоит немало я потихоньку погружался в теорию. По мере ознакомления с теоретическими основами и техническими аспектами разработки я узнал о многих отличительных особенностях платформы. Приятной новостью стало  также то, что процесс написания кода может осуществляться на языке Java с помощью плагина, встраиваимого в среду разработки Eclipse — вещи, с которыми давно работал и которые хорошо знакомы.

Процесс

После установки всех необходимых компонентов я приступил к созданию традиционного для всех начинающих приложения «Hello world», при этом ознакомился со структурой типичного android-проекта в среде Ecliplse. Обрадовал также тот факт, что для компиляции и сборки готового приложения не требуется никаких вспомогательных утилит — среда разработки делает это автоматически. Запускать и производить отладку готовых приложений можно как и на реальных устройствах, так и на встроенном эмуляторе, процесс настройки которых легкий и сравнительно недолгий. Для вывода вспомогательных сообщений из программы существует специальная консоль.

 

Наряду с органиацией интересных соревнований по программированию, с целью популяризации правильного понимания роли разработчика, в отличие от кодера, мы еще и сами любим принимать участие и следить за интересностями в этой области.

Компания GlobalLogic в этом году конкурс “Программания 2009″ делает намного интереснее и привносит в него движение и азарт из реальной жизни.

Организаторами соревнования, была придумана легенда (теория заговора) и внесена в пространство реальных городов. Ну и как же здесь без программирования? Все будет построено на программировании, но от задания можно будет ожидать чего угодно! Поэтому, стоит запастись и фанариком и кусачками колючей проволоки :) Это точно будет что-то интересное.

Принять участие в конкурсе “Программания 2009″ может любой желающий! И расстояние здесь – совсем не помеха! Достаточно хотя бы одного бойца иметь на полях реальной битвы в Киеве, Харькове или Львове, а дальше средства связи вам помогут.

Узнайте подробнее о Конкурсе, правилах участия и зарегистрируйтесь.

 

Результаты ICFP Contest 2009 наконец-то опубликованы!
Мы, как команда, принимавшая участие в этом соревновании, очень сильно ждали этих результатов, и наконец-то дождались ;)

По предварительным результатам у нашей команды было 50-е место, и мы рассчитывали получить в конечном итоге, место в районе 30-го, однако, узнав «Ответ на главный вопрос жизни, вселенной и всего такого»(с) нам ничего не оставалось, как занять 42 место.

Отдельно хотелось бы поздравить команду из Харькова THIRTEEN, которая на ICFPC’09 заняла второе место в общем зачете.

Ждем следующего года! ;)

 

Первую часть можно прочитать тут.

28.06.09 (09:00:16) Воскресенье(2й день)Спутники на одной орбите

То, что для одних – выходной, для других – день рабочий. Впрочем, Участие в ICFP – это дело добровольное, как оказалось, поэтому в этот день Саша не пришел нам помогать – видать, ему хотелось заданий вроде 2005-2007 годов выпуска. Впрочем. никто его винить не стал ;) Мне и самому задача показалась скучноватой, но раз дело начато – надо его достойно завершить.

Как догнать спутник, который находится рядом стобой на той же орбите мы не знали, однако зная периоды обращения спутников вокруг земли, можно было посчитать, сколько надо подождать, перед тем, как делать переход на другую орбиту. Причем время перехода с одной орбиты мы уже считали довольно точно. Задача мы решали следующим образом:

  • Проверяем разницу в углах между собой и спутником
  • Считаем, за какое время мы можем эту разницу “догнать”
  • Вычитаем из этого времени время перехода с орбиты на орбиту
  • Стартуем в нужное время.

 

Для начала, тем, кто не знаком, с тем, что такое IFCP Contest – прошу ознакомиться. Если, все же, лень, то это ежегодное соревнование контест для программистов со всеого мира. Одной из идей контеста было привлечение интереса к функиональным языкам программирования. Во всяком случае, без него, я бы, наверное, не так скоро узнал о таких вещах как Haskell. В свое время, я пытался разобраться с Prologom – достаточно хорошо выворачивает мозг. Хаскелл – тоже. ;) Довольно приятно осознавать, что научился мыслить немного по-другому.
Да. Отвлекся ;)

За много дней до начала

То, что такое ICFP, я знал уже не первый год, но мне все никак не получалось в нем поучавствовать, по разным причинам. Приятным исключением был прошлый год, когда была задача про управление марсоходом. К ICFP Contestу 2009 я готовился заранее – собирал команду, предупреждал всех за месяц. часто посещал http://icfpcontest.org, и следил за каждым изменением информации о нем. Так что, в моем случае, не получилось так, что ICFP свалился как снег на голову – все было распланировано заранее.

 

Для тех, кто не знает, кто не слышал, и кому просто интересно, сообщаю.

Грядет Sapka contest. Для тех кто не дружит с английским – контест – это соревнование.

Соревнование проводится нами для людей, которые любят программировать, а их программировать заставляют. Работа над ним ведется обычными программистами, которые любят участвовать и фанатеют от ICFP Programming Contest, и не преследует никаких особых целей, кроме как провести хорошо время в компании однодумцев, и расслабиться от того, что нам(вам) приходится делать каждый день.

Приглашаются все желающие и не желающие. Задача не покажется скучной ;)

Контест стартует 13 марта в пятницу (именно тогда появится задача на сайте), и последний день приема решений – 20 марта.

Подробнее – можете посмотреть на сайте контеста.

Предварительная регистрация (чтобы оценить количество людей) – тоже на сайте контеста.