Было доказано, что следующие 13 квадратных плиток Ванга всегда апериодически покрывают плоскость . Это означает, что когда квадраты расположены в виде сетки со всеми соседними сторонами одного цвета, перевод шаблона никогда не будет совпадать с самим собой.
Мы представим каждую плитку в текстовом виде сеткой 3 × 3, заполненной пробелами в центре и углах, а также числами от 1 до 5 вместо цветов красного, зеленого, синего, желтого, серого по краям:
2 2 2 1 1 1 4 3 2 2 4 3 2
1 2 1 3 2 3 2 1 3 1 3 2 4 4 4 4 4 5 4 5 5 5 5 5 5 4
3 2 3 2 3 2 1 2 1 4 1 2 2
Цель
Ваша задача - написать программу, которая принимает ширину и высоту и выводит действительную сетку тайлов Wang с этими размерами. Действительным является тот, в котором все смежные края плиток имеют одинаковый цвет (или номер). Победит самая маленькая программа в байтах.
Ваш ввод должен исходить из аргументов stdin или командной строки, а вывод должен идти в stdout. Точный формат ввода может быть чем угодно, например >>> wangtiler 3 2
. Ширина и высота всегда являются положительными целыми числами.
Пример (ширина = 3, высота = 2)
Обратите внимание, что когда мы размещаем текстовые плитки, соседние ребра образуют необходимые избыточные пары цифр:
1 2 1
2 11 22 1
2 3 2
2 3 2
4 55 55 4
1 2 2
(Это НЕ правильный формат вывода.)
Мы можем сжать их горизонтально и вертикально, чтобы получить:
1 2 1
2 1 2 1
2 3 2
4 5 5 4
1 2 2
Этот сжатый формат является правильным выходным форматом, который вы должны использовать. Нечетные пронумерованные строки должны включать их завершающий пробел.
Графический бонус
Вместо текстового вывода ваша программа может выводить изображение мозаичной сетки. Графические плитки должны состоять из четырех 45-45-90 треугольников, расположенных в виде квадрата, и использовать пять легко различимых цветов, таких как плитки выше. Черные границы не требуются. Размер графических плиток должен быть не менее 32 × 32 пикселей. К ним не применяется "сжатие".
Пример бонусного изображения: (та же сетка, что и в примере выше)
Бонус стоит минус 150 байт.
Заметки
- Вы должны использовать этот набор из 13 плиток.
- Плитка не может быть повернута.
- Плитки могут появляться любое количество раз (в том числе ни одного).
- Вы можете предположить, что возможна допустимая плитка с любыми размерами.