В этой задаче нужно придумать генератор — однострочное выражение на языке Python, результатом вычисления которого будет двумерный массив (список вложенных списков), заполненный по некоторому правилу.
Например, пусть нужно задать следующий массив (для удобства добавлены дополнительные пробелы между элементами):
0 0 0 0 0 0 0 1 2 3 4 5 0 2 4 6 8 10 0 3 6 9 12 15 0 4 8 12 16 20В этом массиве n = 5 строк, m = 6 столбцов, и элемент в строке i и столбце j вычисляется по формуле: A[i][j] = i * j.
Ответом на это задание будет следующее выражение-генератор:
[[ i * j for j in range(m)] for i in range(n)] Вам нужно создать текстовый файл, записать в его первой строчке заданное выражение (только одно выражение в квадратных скобках, например, достаточно просто скопировать текст, записанный выше) и сдать на проверку данный файл. Не нужно писать инструкции вроде A = [...] или print(...)).
В выражении должны использоваться переменные n и m, означающие число строк и столбцов в массиве. Считывать эти переменные с клавиатуры не нужно, они уже будут автоматически определены на момент запуска вашего решения.
Если в задании сказано, что массив — квадратный, то число строк и столбцов в нем равно n, а значение m не определено и использовать его нельзя.
Проверка будет осуществляться при помощи интерпретатора языка Python версии 3, в частности, это означает, что в генераторах нужно использовать функции range, а не xrange.
Заполните прямоугольный массив целыми числами начиная с нуля спиралью, закручивающейся по часовой стрелке из левого верхнего угла к центру массива.
0 1 2 3 4 5 6 7 8 9 29 30 31 32 33 34 35 36 37 10 28 51 52 53 54 55 56 57 38 11 27 50 65 66 67 68 69 58 39 12 26 49 64 63 62 61 60 59 40 13 25 48 47 46 45 44 43 42 41 14 24 23 22 21 20 19 18 17 16 15
Петя и Вася недавно нашли очень интересную игру. У них есть большой квадрат с ребром \(N\). Вася и Петя по очереди загадывают другие квадраты, лежащие внутри большого, после чего вырезают их (при этом часть загаданного квадрата уже может быть вырезана ранее либо выходить за пределы большого квадрата). После некоторого количества ходов они должны безошибочно назвать площадь оставшейся фигуры.
Зная размер большого квадрата и размеры малых, вырезаемых квадратов, вычислите площадь фигуры, полученной после того, как все малые квадраты будут вырезаны из большого.
В первой строке целое число \(N\) — размер ребра квадрата (\(1 \le N \le 100\)). Во второй строке целое число \(M\) — количество вырезаемых квадратов. В следующих \(M\) строках (\(1 \le M \le 13\)) содержатся тройки целых чисел \(X\), \(Y\), \(A\) (разделённые пробелом), которые задают квадрат с углами в точках с координатами \((X + 1, Y + 1)\) и \((X+A, Y+A)\). Считайте, что большой квадрат имеет координаты углов \((1,1)\) и \((N,N)\). Рёбра всех квадратов параллельны осям координат. (\(0 \le X, Y \le N\), \(1 \le A \le N\)).
Целое число \(S\) — площадь фигуры, получившейся после вырезания из большого квадрата всех малых квадратов.
6 3 3 3 3 4 4 2 5 5 1
27
Вы занимаетесь компьютерной безопасностью. Недавно один из ваших клиентов разработал новый тест, предназначенных для того, чтобы отличить человека от программы. Ваша задача — протестировать его эффективность.
Тест основан на игре «Морской бой». Эта игра проводится на клетчатом поле размером 10 × 10 клеток. Перед началом игры вы должны разместить десять кораблей на этом поле. Каждый корабль задается числом последовательных клеток, расположенных горизонтально или вертикально. Вы должны разместить один четырехклеточный корабль, два трехклеточных, три двухклеточных и четыре одноклеточных корабля. Никакие два корабля не могут иметь общую или соседние по стороне или углу клетки.
После того, как все корабли расставлены, тест продолжается в течение некоторого количества раундов. В каждом раунде выбирается одна клетка, по которой производится стрельба. Корабль тонет, если по каждой его клетке пришлось не менее одного попадания. Тест заканчивается, когда все корабли утонули.
Назовем сложностью расположения кораблей количество раундов, которое потребуется для того, чтобы завершить тест. Идея теста в том, что люди будут создавать более сложные расположения, чем программы.
Вы же выяснили, что порядок, в котором производится стрельба по клеткам, заранее задан, по каждой клетке стреляют ровно один раз. Теперь вам нужно написать программу, которая создает самое сложное расположение кораблей.
Входной файл состоит из десяти строк, каждая из которых содержит десять чисел. Каждое число обозначает номер раунда, в котором по соответствующей клетке будет вестись стрельба. Все числа различны и лежат в диапазоне 1... 100.
Выведите какое-нибудь оптимальное расположение кораблей для данного порядка стрельбы. Пустые клетки должны быть обозначены точкой ('.'), занятые клетки должны быть обозначены решёткой ('#').
1 2 3 4 5 6 7 8 9 10
36 37 38 39 40 41 42 43 44 11
35 64 65 66 67 68 69 70 45 12
34 63 84 85 86 87 88 71 46 13
33 62 83 96 97 98 89 72 47 14
32 61 82 95 100 99 90 73 48 15
31 60 81 94 93 92 91 74 49 16
30 59 80 79 78 77 76 75 50 17
29 58 57 56 55 54 53 52 51 18
28 27 26 25 24 23 22 21 20 19
...####...
..........
#....##...
#.#.....#.
........#.
...###....
.#........
........#.
..#.....#.
.....#..#.
Юный программист решил придумать собственную игру. Игра происходит на поле размером \(N \times N\) клеток, в некоторых клетках которого расположены города (каждый город занимает одну клетку; в каждой клетке может располагаться не более одного города). Всего должно быть чётное количество городов.
Изначально про каждую клетку игрового поля известно, расположен ли в ней город или нет. Чтобы начать игру, необходимо разделить игровое поле на два государства так, чтобы в каждом государстве было поровну клеток-городов.
Граница между государствами должна проходить по границам клеток таким образом, чтобы из любой клетки каждого государства существовал путь по клеткам этого же государства в любую другую его клетку (из клетки можно перейти в соседнюю, если они имеют общую сторону). Каждая клетка игрового поля должна принадлежать только одному из двух государств, при этом государства не обязаны состоять из одинакового количества клеток.
Требуется написать программу, которая с учетом сказанного разделит клетки заданного игрового поля между двумя государствами.
Первая строка входного файла содержит одно целое положительное число N, задающее размер игрового поля (\(1 \leq N \leq 50\)).
Последующие N строк содержат по \(N\) заглавных латинских букв (без пробелов), кодирующих соответствующие клетки игрового поля: ‘C’ обозначает клетку, занятую городом, ‘D’ – пустую клетку. Гарантируется, что на поле есть хотя бы два города и всего их четное число.
Выходной файл должен содержать \(N\) строк по \(N\) цифр (без пробелов) в каждой, кодирующих соответствующие клетки. Цифра 1 обозначает, что данная клетка принадлежит первому государству, цифра 2 – данная клетка принадлежит второму государству. Если решений несколько, необходимо вывести любое из них.
Правильные решения для тестов, в которых всего два города, будут оцениваться из 40 баллов.
Несмотря на выделение отдельной группы тестов с двумя городами, на окончательную проверку будут приниматься только решения, правильно работающие также для всех тестов из условия задачи.
3 DDD DDC DDC
111 111 112
5 DDDDD CDCDC DCCDC DDDDD DDDDD
11111 11111 12222 22222 22222
Король Квадратландии прекрасно знает, сколько солдат патрулирует каждый квадрат своей квадратной страны. Теперь он желает оценить обороноспособность Квадратландии. Хорошо известно, что она зависит от количества солдат, которые патрулируют границу. Он поручает эту непростую задачу вам — своему придворному счетоводу.
Посчитайте общее количество солдат, патрулирующих пограничные квадраты.
На первой строке дано одно натуральное число n —величина Квадратландии (число квадратов по одной стороне) (1 ≤ n ≤ 100) . Дальше идут n строк по n неотрицательных чисел в каждой - количество солдат, которые охраняют каждый квадрат. Эти числа не превышают 10 6 .
Выведите одно число — обороноспособность
3 1 2 3 3 4 7 0 2 3
21