задача
Даны два натуральных числа:
- Нарисуйте прямоугольник с размерами, указанными двумя целыми числами.
- Повторите шаг 3, пока не останется свободного места.
- Нарисуйте и заполните самый большой квадрат, касаясь трех сторон (оставшегося) прямоугольника.
- Выведите полученный прямоугольник.
пример
Например, наш вклад 6
и 10
.
Нарисуем полый прямоугольник размером 6 х 10:
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
После многократного заполнения квадратов мы получили бы следующее:
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaaccdd
aaaaaaccdd
Есть 4 квадрата здесь ( a
, b
, c
, d
), каждый с длиной стороны 6
, 4
, 2
, 2
соответственно.
Правила и свобода
- Вы должны использовать разные буквы для каждого квадрата.
- Вы можете выбрать, какие буквы поддерживать, если все поддерживаемые буквы являются печатными символами и поддерживаются как минимум
10
символы. - В каждой итерации шага 3, описанного выше, у вас есть два варианта (кроме последней итерации, где у вас есть только один выбор). Оба варианта действительны.
- Количество необходимых квадратов не будет превышать количество букв, которые вы поддерживаете.
- Вы можете заполнить квадраты буквами, которые вы поддерживаете в любом порядке .
Testcases
Входные данные: 6, 10
Вывод:
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaaccdd
aaaaaaccdd
или
aaaaaaccdd
aaaaaaccdd
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
или
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
ccddaaaaaa
ccddaaaaaa
или
ccddaaaaaa
ccddaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
или
ddddddaaaa
ddddddaaaa
ddddddaaaa
ddddddaaaa
ddddddbbcc
ddddddbbcc
Входные данные: 1,1
Вывод:
a
Входные данные: 1,10
Вывод:
abcdefghij
Входные данные: 10,1
Вывод:
a
b
c
d
e
f
g
h
i
j
Обратите внимание, что есть больше возможностей, чем я могу включить для тестовых случаев выше.
счет
Это код-гольф . Кратчайший ответ в байтах побеждает.
Применяются стандартные лазейки .
code-golf
ascii-art
arithmetic
Дрянная Монахиня
источник
источник
Ответы:
Древесный уголь , 30 байт
Попробуйте онлайн! Объяснение:
Досадно, что команда Oblong от Charcoal не примет
0
измерения, которое стоит мне 4 байта. Другой подход заключался бы в цикле whileg * d
, но потом я не мог понять, как выполнять итерацииb
(что предопределено строчными буквами).источник
W×γδ
, как мне каждый раз печатать разные буквы?)Pyth , 34 байта
Попробуйте онлайн!
источник
Haskell , 90 байт
Попробуйте онлайн!
источник
Желе , 32 байта
Попробуйте онлайн!
Ṁ,ạ/y
ты хочешь объяснения? Вот.Я могу, вероятно, играть в гольф немного больше, используя неявные аргументы вместо
³,⁴
.источник
Haskell , 181 байт
Попробуйте онлайн!
Для
10
байтов больше вы получите хорошую спираль вместо :)Попробуйте онлайн!
Ungolfed
В
(#)
оператор ставит две матрицы рядом друг с другом, но переставляет правильный, например:Это в основном рекурсивная версия алгоритма Евклида, но вместо того, чтобы забывать делители и остатки и возвращать
gcd
, он строит из него квадраты и накапливает их(#)
.s
Переменный являются остальными символами , которые мы можем использовать:Фактическая функция просто вызывает функцию сверху со строкой всех печатных символов:
источник
import Data.List
чтобы использоватьtranspose
.164
..