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

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
Выполняем минимальные переделки, чтобы стрелять в какого-либо противника, имя которого появилось в разветданных.

Как видите объявление переменной enemy пришлось поставить перед циклом (строка 15). Это сделано для того, чтобы после цикла (строка 20) можно было приказать в него стрелять. Если оставить всё как было, то переменная будет видна только внутри цикла чтения данных и в 20-й строке не будет видна.

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

Решение задачи
Я завёл две переменные near_enemy (имя ближайшего врага) и min_distance (минимальное расстояние до врага). Можно, конечно, назвать переменные x и y, но так мне будет более понятен код. При описании первую переменную на всякий случай инициализирую пустой строкой («»), а вторую — «игровой бесконечностью» — числом 100 (по моим наблюдениям расстояний больше 100 в этой задаче не встречается).

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

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

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

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

  • ASCII ART <br />Опубликовал 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 <br />Опубликовал 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 <br />Опубликовал 15/10/2014Іванов Вячеслав Володимирович

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • There is no Spoon — Episode 1 <br />Опубликовал 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 <br />Опубликовал 16/12/2015Вустянюк Ігор Дмитрович

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

Related Images:

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

Добавить комментарий