Учитывая два положительных целых чисел, «A» и «B», выход ASCII - арт «ящик» , который через символы в ширину и б символов высотой. Например, с «4» и «6»:
****
* *
* *
* *
* *
****
Просто верно? Вот поворот: граница рамки должна состоять из чередующихся символов «a» и «b». Это начинается в верхнем левом углу и продолжается по часовой стрелке. Например, предыдущий пример с 4 и 6 должен быть
4646
6 4
4 6
6 4
4 6
6464
А и В могут быть двузначными числами. Например, входы «10» и «3» должны вывести это:
1031031031
1 0
3013013013
Для того чтобы вывод был относительно небольшим, вам не нужно поддерживать три или более цифр. Кроме того, поскольку входы ограничены положительными целыми числами, «0» является недопустимым входом, с которым вам не нужно обращаться.
Вот еще несколько тестов:
Input: (3, 5)
Output:
353
5 5
3 3
5 5
353
Input: (1, 1)
Output:
1
Input: (4, 4)
Output:
4444
4 4
4 4
4444
Input: (27, 1)
Output:
271271271271271271271271271
Input: (1, 17)
Output:
1
1
7
1
1
7
1
1
7
1
1
7
1
1
7
1
1
Input: (12, 34):
Output:
123412341234
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
432143214321
Вы можете принимать и выводить данные в любом приемлемом формате, а стандартные лазейки запрещены. Поскольку это код-гольф, выигрывает самый короткий ответ в байтах!
a
1, то левая или правая?Ответы:
Pyth ,
6551 байтПопробуйте онлайн!
источник
C #, 301 байт
Я уверен, что здесь можно сделать гораздо больше игры в гольф, но я просто счастлив, что нашел решение, которое сработало.
Черт возьми, я нашел ошибку, когда нижняя строка была в неправильном порядке!
Старая версия: 280 байт
источник
Python 2, 199 байт
источник
Рубин, 128 байт
Вывод трейлинга новой строки, если высота равна 1.
Идеальная ссылка: https://ideone.com/96WYHt
источник
[w,h]*""
вместо"%d%d"%[w,h]
4 байтов, и вам не нужны круглые скобкиs[q-2,w].reverse
, но тогда вам понадобится пробел после:
, поэтому -1 байт.JavaScript,
213212202Конечно, есть возможности для улучшения.
Изменить: Сохраненный байт благодаря TheLethalCoder
источник
`${c}${a}`.repeat(l+1)
может сэкономить вам байт.W=W.substr(0,a-2).replace(/./g," ")
такW=" ".repeat(a-2)
ли? (Ваш код на самом деле работаетa=1
?)C, 311 байт
Использует автоматически включенные библиотеки
stdio.h
иstring.h
.источник
JavaScript (ES6), 171 байт
Где
\n
представляет буквальный символ новой строки. Создает повторяющуюся строку цифр, а затем решает, что объединить, основываясь на том, в какой строке мы находимся; верхняя строка - это просто начальный фрагмент повторяющейся строки цифр, нижняя строка (если есть) - это обратный срез от середины строки, а промежуточные строки создаются с использованием символов, взятых из других частей строки.источник
(w,h)=>
наw=>h=>
сохранение байтаTSQL, 291 байт
Golfed:
Ungolfed:
скрипка
источник
Python 3,
155148 байтГольф от 7 дополнительных байтов:
Заменены
2*w+2*h-4or 1
наmax(1,2*w+2*h-4)
и['',s[-i-1]][w>1]
для(s[-i-1]if w>1else'')
.Предыдущая версия:
источник