Вступление
Короче говоря: несколько дней назад я случайно начал вязать носок, и довольно логичная структура простых стежков приводит меня к мысли: почему бы нам просто не связать носок ASCII?
вход
На входе находится четное целое число N в диапазоне [2,30]
.
Выход
Выходной носок, очевидно.
Структура
Потому что мы будем использовать только простые стежки, которые вы будете использовать только v
для нисходящей строчки и >
для строчки справа. Позвольте мне объяснить полную структуру с примером для N=8
:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- Первый блок - это верхняя часть. Имеет ширину
N
и высотуN*1.5
- После этого начинается пятка. Вы вычитаете по одному
v
на ряд с правой стороны, пока не получитеN/2
ширину. Затем вы добавляетеN/2
строки ширинойN/2
внизу, чтобы закончить вязание вниз. Обратите внимание, что это дает общее количествоN/2 + 1
строк с ширинойN/2
первая часть:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- Теперь начинаются боковые вязки. Вы начинаете с первой уменьшенной строки, заполняете ее
>
до шириныN
и добавляете еще две. Продолжите этот процесс, включая первый ряд сN/2
шириной - Заполните строки ниже этого уровня и добавьте
N*1.5
время>
к этому - Оставьте внешние части такими, какие они есть, и добавьте в ряд под первой и над лазером еще две,
>'s
пока не закончите.
вторая часть:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
правила
Трейлинг новых линий в порядке.
Вы можете выбирать между прописными или строчными буквами, V
но это должно быть согласованным.
Это код-гольф, поэтому выигрывает самый короткий код в байтах.
Контрольные примеры
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
v
илиV
взаимозаменяемо? Я собираюсь предположить, что на данный момент этоv
разрешено только одно, но разрешениеV
повлияет на количество байтовОтветы:
Pyth - 93 байта
Объяснение:
Вы можете попробовать это здесь!
источник
Mathematica, 104 байта
Безымянная функция, принимающая положительное четное целое число в качестве входных данных и возвращающая строку (с завершающим переводом строки). Обратите внимание, что перевод строки между двумя строками кода выше является частью кода. Основную работу выполняет функция
c
, неоправданное определение которойсоздает таблицу списков, каждый из которых состоит из нескольких
"v"
s подряд, за которыми следуют несколько">"
s, за которыми следует новая строка . К счастью, диапазон#3
для внешнегоTable
может иметь имя переменной, на которое можно ссылаться в выражениях#1
и#2
; это позволяетc
вызывать функцию как с постоянными, так и с переменными аргументами. Все остальное - просто вычисления, а оператор соединения строк""<>
выравнивает вложенные списки, которые возникают бесплатно.источник
Python, 3,5
183177 байтОбъяснение входящего.
Попробуйте онлайн!
источник
n,v=int(input()),'v'
? Тогда это ничего не спасает.Groovy, 168 байтов
Это безымянное закрытие. Подход полностью аналогичен моему ответу на Python 3.5 .
Попробуйте онлайн!
источник
Пакетный, 279 байт
Примечание: вторая строка заканчивается пробелом. У пакета есть проблемы с отображением
>
s в переменных, поэтому я должен: а) использовать замену; б) вызвать подпрограмму, чтобы повторить исправленную строку. На самом деле у меня есть три подпрограммы:a
используется для пятки. Одинv
удаляется каждый раз, а три>
добавляются. Два дополнительных>
s добавляются так, чтобы подпрограмма могла провалиться вb
подпрограмму.b
используется для нижней части стопы. Два>
с удаляются каждый раз. Подпрограмма затем проваливается вc
подпрограмму.c
печатает текущую строку носка, заменяя символ-заполнитель так, чтобы>
s печатался правильно.Четвертая строка обрабатывает ширину ноги, в то время как пятая строка обрабатывает ее длину. Седьмая строка обрабатывает длину стопы, а восьмая строка обрабатывает верхнюю половину высоты стопы, добавляя два
>>
к каждой строке после ее печати. Это работает для размеров носков, кратных 4, и для других размеров носков выполняется регулировка, чтобы самая длинная линия не повторялась.источник
PHP, 229 байт
довольно ленивый подход
печатает ведущий перевод строки. Беги с
-nr
.сломать
источник
постоянный ток , 269 байт
Хорошо, хорошо ... это массивно . Это было нелегко, я скажу вам так много, что со всеми ссылками на регистры, сравнениями, макросами, отсутствием способностей манипулирования строками и т. Д. Тем не менее, мне было весело собрать все это вместе, и это все, что действительно имеет значение, верно ? ;)
Попробуйте онлайн!
источник