Вступление
Tangrams - классическая загадка, вовлекающая расположение / подгонку блоков в различные формы. От китайского 七巧板 - буквально означает «семь досок мастерства». Давайте возьмем эту идею и используем семь фигур Тетромино, чтобы заполнить сетку.
Вызов
Напишите функцию или программу, которая принимает массив координат сетки в качестве входных данных и выводит заполненную сетку 10 на 20, заполненную кусочками тетриса, за исключением указанных координат.
Оптимизируйте свой счет, пытаясь сохранить равномерное распределение фигур.
критерии
Используйте этот набор координат для выполнения вашей задачи. Есть пять наборов координат. Не стесняйтесь изменять формат, в котором записаны координаты, но не значения.
Набор данных № 2 не может быть решен - в этом случае просто выведите сетку с заполненными входными ячейками (т. X
Е. Там, где находятся отверстия).
вход
Координаты сетки представляют собой «дыры» в сетке. Это клетки, которые не могут содержать какую-либо часть тетромино.
Координаты сетки:
(0,0), (1,0), (2,0), ... (9,0)
(0,1), (1,1), (2,1), ... (9,1)
.
.
.
(0,19), (1,19), (2,19), ... (9,19)
Используйте стиль массива вашего языка программирования для ввода координат.
Представьте отверстия в сетке с помощью ASCII
X
или другой печатной формы .
Выход
Используя стандартную сетку Tetris размером 10 ячеек и высотой 20 ячеек , напечатайте сетку раствора тогда и только тогда, когда сетка может быть заполнена полностью и идеально, используя кусочки тетромино.
Кусочки построенных с буквами I
, O
, L
, J
, T
, Z
, S
следующим образом :
I
I L J
I OO L J T ZZ SS
I OO LL JJ TTT ZZ SS
пример
Пример выходного решения без входных координат:
ZZIIIILLLI
JZZTTTLLLI
JJJSTLOOLI
SZZSSLOOLI
SSZZSLLJJI
TSOOSLLJII
TTOOSSLJII
TZOOSSLZII
ZZOOSSZZII
ZJJJJSZLLI
TTTJJOOILI
ITZJJOOILI
IZZTTTLIII
IZOOTZLIII
IJOOZZLLII
LJJJZSSTII
LLLTSSTTTI
LLLTTSSZJI
OOLTSSZZJI
OOIIIIZJJI
С распределением следующим образом:
I
I L J
I OO L J T ZZ SS
I OO LL JJ TTT ZZ SS
11 6 8 6 6 7 6
Примечания
Координаты представляют собой единое целое X
и Y
положение на сетке. Сетка основана на 0, что означает, что координата (0,0)
должна быть либо верхней левой, либо нижней левой ячейкой, по выбору автора.
Кирпичи могут:
- быть выбранным по усмотрению автора.
- вращаться так, как считает автор.
- размещаться на сетке в любом месте по усмотрению автора (иначе: нет гравитации тетриса)
Кирпичи не могут:
- размещаться за пределами сетки.
- перекрыть существующий кирпич или отверстие в сетке.
- быть нестандартной тетрис тетромино.
счет
Ваша оценка в формате:
(1000 - [байтов в коде]) * (M / 10 + 1)
Где M - множитель для распределения частей, используемых в ваших наборах решений.
Самый высокий балл по мартовским идам побеждает.
Чтобы вычислить M, добавьте наименьшее индивидуальное значение распределения тетромино для каждого набора, а затем возьмите среднее значение, округленное в меньшую сторону, чтобы вычислить M.
Например:
Set 1: 5
Set 2: 4
Set 3: 5
Set 4: 6
Set 5: 3
6 + 4 + 5 + 4 + 4 = 21/5 = 4,6
Таким образом, вы должны использовать в 4
качестве значения М.
Примечание. Если у множества нет решения, не учитывайте это множество при вычислении M, так как оно не имеет распределения тетромино.
источник
Ответы:
Python 3 , 819 байт, M = 0, счет = 181
Это программа грубой силы DFS. Он строит массив NumPy и вставляет все введенные отверстия. Затем он берет самую левую незаполненную плитку в верхнем ряду, в которой она есть, и помещает тетромино. Рекурсивно, теперь мы делаем это снова - когда мы не можем либо найти решение, либо возвращаемся назад и пробуем другой фрагмент при первой же возможности.
Значение M равно 0, поскольку он пытается использовать элементы в определенном порядке и почти всегда находит решение без последнего в списке. Я пытался использовать произвольно упорядоченный список каждый цикл, чтобы сделать более равномерное распределение, но я получил только M 2, что не стоило байтов, необходимых для импорта random.shuffle .
Я не могу прокомментировать приведенный ниже код, так как во время игры в гольф я давно забыл, чем он занимается. Общая идея:
Попробуйте онлайн!
Образец теста:
источник