Игры программистов

Onboarding: http://www.codingame.com/

Onboarding: http://www.codingame.com/

Как-то совсем незаметно мы дошли до такого уровня, когда можно не только тяжело работать, изучая программирование, но и играть в него. Начнем мы с замечательного сайта codinGame.
На этом сайте нам предложат игры и головоломки, решать которые необходимо на одном из языков программирования. Мы будем их решать на С или С++ на Ваш выбор.

Onboarding

Начнём с первой и очень простой игры-головоломки «Onboarding».
Выбираем Single Game -> Onboarding -> C++. Проходим небольшой инструктаж (в дальнейшем его можно будет пропускать).
В игре Вы будете управлять лазерной пушкой, которая пытается защитить себя от надвигающихся врагов. Не пугайтесь. Враги больше всего напоминают комаров.

Игровой цикл

Бесконечно (до конца игры) повторяемый игровой цикл состоит из любого количества кода, который читает входной поток и выводит команду в выходной поток.

Вход

В первой строке входного потока нам сообщают количество врагов (int n).
Следующие n строк содержат имя врага и расстояние до него.

Выход

В выходной поток необходимо вывести одну строку — имя врага, которого Вы приказываете уничтожить (перевод строки обязателен).

Пример 1

В начале игры нам сразу предлагают испытать готовый пример программы управления пушкой. Но я буду всё показывать постепенно.

Всё, что делает наша программа, это при каждой возможности приказывает стрелять во врага, которого зовут HotDroid. Даже если его нет. Для вывода (строка 8) используется не совсем привычная конструкция, но смысл ее весьма прозрачен — вывести что-либо в стандартный поток вывода.
Запускаем программу на первом тесте. Оказывается она довольно долго сопротивляется. Пока не остаётся враг с неизвестным нам именем. Он-то и разрушает нашу пушку.
Можем перейти в режим отладки (крошечная кнопка Debug вверху игрового окна, где происходит бой). В этом режиме можно прогонять программу шаг за шагом в любом направлении и рассматривать происходящее.

Пример 2

Теперь рассмотрим пример в котором читаются входные «разведданные» о противнике
В строке 12 мы читаем в переменную count число врагов, обнаруженных на этом шаге игрового цикла. В строке 17 читаем имя и расстояние до очередного противника.

И, наконец, в 19 строке, не обращая внимание на разветданные, приказываем стрелять в того же HotDroid.
Программа также бездарно проваливает первый тест.
Самое время поразмышлять и модифицировать программу для прохождения первого теста.

Программа для первого теста Five enemies

Не знаю как Ваша программа, но моя не проходит второй тест «Imminent danger». Наша тактика стрельбы в последнего врага из списка позволяет быстрому дроиду подобраться к нам слишком близко.
Что же делать? Вывод очевиден — нужно уничтожать самого близкого к вам врага. Вот для чего нам сообщают о расстояниях до противников.
Попробуем?

Решение задачи
Обратите внимание, что после любого изменения в программе все ранее пройденные тесты снова считаются не пройденными. Т.е. после любого улучшения кода нужно будет повторить ранее пройденные тесты.

Если у Вас все получилось, можете попробовать другие игры этого или других сайтов и рассказать о них в рубрике «Игры программистов». Конечно, за дополнительные баллы в нашей таблице успеваемости. Но ведь не это главное, правда?
На этом сайте в ближайшее время будет проходить конкурс программистов. Посмотрите, возможно Вы сможете принять в нём участие. Если, конечно, научитесь писать программы, решающие подобные головоломки. Все участники конкурса после его окончания получат дополнительные баллы в соответствии с местом в рейтинговой таблице. Хотя опыт показывает, что чем выше вы в турнирной таблице, тем меньше вас беспокоят эти самые баллы.
Желаю успехов!

P.S. Хочу поблагодарить одного знакомого программиста за информацию об этом интересном сайте.

Другие игры программистов

  • ASCII ART
    Опубликовал 16/04/2017 Вадим Гордийчук

    Task In stations and airports you often see this type of screen: Have you ever asked yourself how it might be possible ...

  • Chuck Norris
    Опубликовал 11/05/2017 Антон Куперман

    A task from codingame.com Task Binary with 0 and 1 is good, but binary with only 0, or almost, is even better! Originally, ...

  • Conway Sequence
    Опубликовал 15/10/2014 Іванов Вячеслав Володимирович

    Conway Sequence Conway Sequence — седьмая по счету игра уровня сложности medium, основанная на свойствах последовательности Конвея (правильнее было бы назвать ...

  • Heat Detector
    Опубликовал 16/10/2014 Вустянюк Ігор Дмитрович

    Задача Речь пойдёт о первой задаче уровня Medium на сайте  codingame.com. По сюжету Бэтмен должен отыскать бомбу в многоэтажном доме. Ему ...

  • Horse-racing Duals
    Опубликовал 16/10/2014 Вустянюк Ігор Дмитрович

    Задача Рассмотрим последнюю задачу уровня Easy с сайта codingame.com. Некоторое количество лошадей участвует в скачках и у каждой есть некая характеристика, ...

  • Puzzle — Temperatures
    Опубликовал 15/10/2014 Ілларіонова Марія Валеріївна

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

  • Ragnarök — Power of Thor
    Опубликовал 12/10/2014 Байков Дмитро

    Четвертая по счету игра на сайте называется Ragnarök — Power of Thor, где нам посчастливилось быть Великим Воином Тором. Тору необходимо самым ...

  • Ragnarök — Power of Thor
    Опубликовал 14/10/2014 Вустянюк Ігор Дмитрович

      Задача Есть Тор. А у Тора был источник силы. Больше нет. Тор движется по прямоугольному полю и ему известны его координаты и ...

  • Skynet — The Chasm
    Опубликовал 12/10/2014 Байков Дмитро

    Вторая по счету игра на сайте называется Skynet — The Chasm. В игре мы будем управлять мотоциклистом, который изо всех сил ...

  • Skynet: The Chasm
    Опубликовал 13/10/2014 Іванов Вячеслав Володимирович

    Вторая по списку игра на сайте codingame.com проверяет умение примата пользоваться условными операторами, интуицией и программой по физике за десятый ...

  • Skynet: the Virus
    Опубликовал 14/10/2014 Бронфен-Бова Роман

    SKYNET FINALE — LEVEL 1 Los Angeles 2029 — Resistance HQ — Review of facts: В минувшую субботу, сотни отважных бойцов рисковали ...

  • Temperatures
    Опубликовал 14/10/2014 Вустянюк Ігор Дмитрович

    Задача взята с сайта codingame.com Задача. Задан набор целых чисел (значения температуры за различные моменты времени). Нужно вывести из них ...

  • The Descent
    Опубликовал 14/10/2014 Вустянюк Ігор Дмитрович

    Задача Мы летим на падающем космическом корабле над горами. Наша задача  — запрограммировать пушки корабля так, чтобы уничтожить горы, тем самым не ...

  • There is no Spoon — Episode 1
    Опубликовал 15/04/2017 Вадим Гордийчук

    Task The Goal The game is played on a rectangular grid with a given size. Some cells contain power nodes. The rest ...

  • Разбор Proggy-Buggy Contest
    Опубликовал 16/12/2015 Вустянюк Ігор Дмитрович

    5 декабря компанией DataArt проводилась международная  юмористическая олимпиада по программированию Proggy-Buggy Contest. Задачи на ней не были сложными, но решать их нужно ...

Мазурок Игорь Евгеньевич

Мазурок Игорь Евгеньевич

Разработчик программного и информационного обеспечения.
Доцент Одесского национального университета имени И.И.Мечникова
Учёный в области защиты и противодейтствия в интеллектуальных информационных системах
Мазурок Игорь Евгеньевич

Latest posts by Мазурок Игорь Евгеньевич (see all)

2 thoughts on “Игры программистов