====== Комментарии к проектам на codingame ====== ===== ONBOARDING (Вводный урок) ===== [[https://www.codingame.com/training/easy/onboarding]] {{:001_onboarding.png?nolink&400|}} **Условие** Обучающая миссия для всех новичков: ваша программа должна найти, какая из двух целей является ближайшей. **Цель** Ваша программа должна уничтожать вражеские корабли, стреляя в ближайшего врага на каждом ходу. import sys # импорт системной библиотеки import math # импорт библиотеки математических функций # "бесконечный" цикл игры (останавливается извне, когда тесты будут пройдены) while True: enemy_1 = input() # имя первого врага dist_1 = int(input()) # дистанция до первого врага enemy_2 = input() # имя второго врага dist_2 = int(input()) # дистанция до второго врага # Здесь надо написать программу, которая находит имя врага, который ближе к защищаемому объекту. # Если требуется вывести отладочную информацию в консоль, следует использовать: # print("Debug messages...", file=sys.stderr) # где вместо "Debug messages...", можно выводить нужные сообщения или значения переменных... # Вместо фразы "name of the enemy" вывести значение переменной (enemy1 или enemy2), которое принадлежит врагу, # который находится ближе к защищаемому объекту. print("name of the enemy") ===== THE DESCENT (Снижение) ===== [[https://www.codingame.com/training/easy/the-descent]] {{:the_descent_.png?nolink&400|}} **ЧТО Я БУДУ ИЗУЧАТЬ?** Циклы Решение этой головоломки поможет вам понять концепцию циклов и способы получения максимального значения из списка целых чисел. **Задача** Простая проблема - опробовать платформу CodinGame: ваша программа должна найти самую высокую гору из списка гор. **Цель** Уничтожьте горы до того, как ваш корабль столкнется с одним из них. Для этого стреляйте в самую высокую гору на своем пути. import sys import math # "Бесконечный" цикл, который заканчивается извне, когда пройдены все тесты. # В каждом шаге цикла while передается набор из 8 значений (высоты 8 вершин). # Необходимо найти номер самой высокой вершины в каждом шаге цикла while. while True: for i in range(8): mountain_h = int(input()) # на каждом из 8 шагов цикла, считывается высота одной из 8 вершин # To debug: print("Debug messages...", file=sys.stderr) # Для того, чтобы разрушить гору, следует написать индекс (номер) самой высокой вершины. # Замените "4" на имя переменной, которая хранит номер самой высокой вершины. print("4") ====== TEMPERATURES (температуры) ====== * [[https://www.codingame.com/training/easy/temperatures]] **ЧТО Я БУДУ ИЗУЧАТЬ?** Условные операторы, циклы, массивы. **Условие** Ваша программа должна анализировать записи температур, чтобы найти наиболее близкие к нулю. {{:temperaturs.png?600|}} **Инструкция** Напишите программу, которая печатает температуру, ближайшую к 0 среди вводимых данных. Если два числа одинаково близки к нулю, положительное целое число должно считаться ближайшим к нулю (например, если температуры равны -5 и 5, то отобразите 5). **Ввод данных** Строка 1: N , количество измерений температуры для анализа Строка 2: значения измерений температуры, представленные в виде целых чисел в диапазоне от -273 до 5526 **Вывод** Выведите 0 (ноль), если температура не указана. В противном случае отобразите температуру, ближайшую к 0. **Ограничения** 0 ≤ N <10000 **Пример** Ввод Вывод 5 1 1 -2 -8 4 5 import sys import math n = int(input()) # количество измерений температуры # функция split() преобразует строку значений, разделенных пробелами, в список (массив) # пример: # >>> a = "1 -2 -8 4 5" # >>> a.split() # >>> ['1', '-2', '-8', '4', '5'] # result = 0 # целевая переменная for i in input().split(): # функция int(i) преобразует значение температуры, представленное в текстовом виде, к целочисленному значению t = int(i) # ........ вычисления ............. # To debug: print("Debug messages...", file=sys.stderr) print(result) # вывод результата ====== POWER OF THOR - EPISODE 1 ====== * [[https://www.codingame.com/training/easy/power-of-thor-episode-1]] **ЧТО Я БУДУ ИЗУЧАТЬ?** Условные операторы Простое решение использует 8 условий. Есть способ упростить его и использовать только 4 условия. **Условие** Ваша программа должна позволять Thor достигать координаты источника энергии на 2D-поле. {{:thor.png?nolink&400|}} **Правила** Тор движется по карте, которая в ширину 40 единиц, а в высоту 18 единиц. Обратите внимание, что координаты (X и Y) начинаются в левом верхнем углу! Это означает, что самая верхняя левая ячейка имеет координаты «X = 0, Y = 0», а самая нижняя правая ячейка имеет координаты «X = 39, Y = 17». При перемещении Тора по поверхности, его координаты меняются. Цель Тора, достичь точки с координатами источника энергии. import sys import math # --- # Hint: You can use the debug stream to print initialTX and initialTY, if Thor seems not follow your orders. # light_x: X позиция энергетического источника # light_y: Y позиция энергетического источника # initial_tx: Thor's starting X position (точка начала движения Тора на оси x) # initial_ty: Thor's starting Y position (точка начала движения Тора на оси y) light_x, light_y, initial_tx, initial_ty = [int(i) for i in input().split()] # игровой цикл (заканчивается автоматически, когда Тор достигнет цели, или когда у него закончится энергия) while True: remaining_turns = int(input()) # Уровень энергии, которая остается еще у Тора. # To debug: print("Debug messages...", file=sys.stderr) # Для перемещения Тора, следует вывести одно из направлений: N NE E SE S SW W or NW print("SE") ====== Mars Lander - Episode 1 (посадка на Марс - эпизод 1) ====== * [[https://www.codingame.com/ide/puzzle/mars-lander-episode-1]] * [[https://www.codingame.com/training/medium/mars-lander-episode-2]] **Цель** Эта головоломка научит вас, как сравнивать значения, используя простое условие. {{::mars1.png?nolink&400|}} ====== BRACKETS, EXTREME EDITION (правильная скобочная последовательность) ====== [[https://www.codingame.com/training/easy/brackets-extreme-edition]] Стек, цикл... **Цель** Правильная скобочная последовательность. Это означает, что все скобки (), квадратные скобки [] и фигурные скобки {}должны быть правильно спарены и вложены. Выражение не содержит пробельных символов. [[https://yadi.sk/i/iZGayhgkXha83]] ====== PAPER LABYRINTH (бумажный лабиринт) ====== [[https://www.codingame.com/training/medium/paper-labyrinth]] Graphs, BFS, Pathfinding, Strings, Compression