====== Комментарии к проектам на 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