Задача:
Рассмотрим проблему: «учитывая шахматную доску без одного квадрата, нарежьте ее на 21 L-триомино». Существует хорошо известное конструктивное доказательство того, что это можно сделать для любого квадратного размера шахматной доски, который является степенью двойки. Он работает, разбивая шахматную доску на меньшую шахматную доску с отверстием в ней и одним большим триомино, а затем наблюдая, что это триомино можно рекурсивно разрезать на четыре триомино.
В этом задании вы должны разрезать шахматную доску 8x8 на L-образные триомино, а затем раскрасить их четырьмя цветами, чтобы ни у двух соседних триомино не было одинакового цвета.
Технические характеристики:
Ваш ввод - это позиция отверстия, представленная в виде пары целых чисел. Вы можете выбрать, какой из них является индексом столбца, а какой - индексом строки. Вы можете выбрать, начинается ли каждое из них с 0 или с 1, и от какого угла они увеличиваются. Вы можете потребовать A..H в качестве первой координаты вместо 0..7 или 1..8. Вы также можете принять обе координаты, упакованные в одно целое число 0,63 или 1,64 в лексикографическом порядке (основной ряд или основной столбец, слева направо или справа налево, вверх вниз или вниз вверх). Вы можете написать полную программу или функцию.
Вы можете выводить мозаику как ASCII, как цветной ASCII или как графические примитивы. Если вы выбираете вывод ASCII, вы можете выбрать любые четыре печатных символа ASCII для представления четырех цветов. Если вы выбираете цветной ASCII, вы можете выбрать любые четыре печатных символа ASCII или только один символ, отличный от пробела. Отверстие должно быть представлено символом пробела. Если один из ваших персонажей является символом пробела, никакое триомино рядом с лункой или на краю шахматной доски не может быть такого цвета.
Если вы выбираете цветной ASCII или графический вывод, вы можете выбрать любые четыре цвета из # 000, # 00F, # 0F0, # 0FF, # F00, # F0F, # FF0, #FFF или их ближайших эквивалентов, доступных в вашей среде. Если вы выбираете графический вывод, ваши графические примитивы должны быть заполнены квадратами размером не менее 32x32 пикселей и разделены не более чем двумя пикселями другого цвета. Если вышеупомянутое превышает разрешение экрана вашей среды, требование минимального размера смягчается до самого большого квадратного размера, который все еще помещается на экране.
Вы можете выбрать любую действительную плитку данной шахматной доски. Вы можете выбрать любую четырехцветную плитку по вашему выбору. Ваш выбор четырех цветов должен быть одинаковым для всех выходов, но вы не обязаны использовать каждый цвет в каждом выходе.
Примеры:
Возможный вывод для ввода = [0, 0] (верхний левый угол)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
Другой возможный вывод той же программы (input = [0, 7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
Другая программа может также произвести для ввода «D1» (обратите внимание на нестандартную, но разрешенную ориентацию шахматной доски),
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA