Большинство людей знакомы с тем, как считать овец, чтобы они уснули. Есть стадо овец, некоторые из которых прыгают через забор, и вы считаете, что овцы прыгают. Предположительно, это помогает успокоить ваш разум и привести вас в состояние сна, так что вы заснете.
Вот овца ASCII, стоящая справа и ожидающая подсчета:
'00^>
||
Вот овца ASCII, перепрыгивающая через забор:
'00^>
/\
++
Вот тот, который стоит слева, уже посчитав:
<^00'
||
Соревнование
Учитывая два входных целых числа, n
и m
, n > 2
описывая общее количество овец и m > 0
говоря, сколько овец уже подсчитано, выведите художественное представление ASCII подсчета количества овец, чтобы заснуть.
Теперь для поворота:
- Из-за размера загонов, в которых находятся овцы, верхний ряд может содержать только максимум
10
овец, не считая прыгающих в данный момент овец, которые также всегда должны быть в верхнем ряду. - Последующие ряды не могут иметь овец за пределами их соответствующих загонов (во втором ряду не может быть больше овец, чем в первом ряду, и то же самое для правого).
- Если
11
овец много или больше, в верхнем ряду должен быть10
плюс прыгающий баран. - Ведущие / конечные пробелы и пробелы между овцами не имеют значения, если:
- Между овцами должен быть как минимум один пробельный символ
- Все персонажи выстроены в линию соответственно.
Пока эти правила соблюдаются, фактическое расположение овец зависит от вашей реализации.
Примеры
Например, вот n=3
и m=1
самый простой случай.
'00^>
'00^> /\ <^00'
|| ++ ||
Вот n=11
и m=6
большинство овец, которые могут уместиться на одной горизонтальной линии.
'00^>
'00^> '00^> '00^> '00^> /\ <^00' <^00' <^00' <^00' <^00' <^00'
|| || || || ++ || || || || || ||
Вот другой пример того, с n=11
иm=1
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00'
|| || || || || || || || || ++ ||
Большой пример с n=30
иm=12
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> <^00' <^00'
|| || || || || || || || || ||
'00^> <^00' <^00'
|| || ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
Вот пример с n=17
иm=2
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || ||
Вот пример с n=19
иm=3
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00' <^00'
|| || || || || || || ++ || || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || || ||
'00^>
||
Обратите внимание, что все это примеры . В последнем случае вы можете создать вертикальный массив овец с правой стороны, который позволит левой стороне поместиться на два ряда. Или, может быть, квадрат 2х2 овец с правой стороны, который также поместил бы овец левой стороны на два ряда. И т.п.
I / O и правила
- Входные данные могут быть приняты в любом разумном формате и любым удобным способом .
- Лидирующие / завершающие символы новой строки или другие пробелы являются необязательными, при условии, что символы располагаются соответствующим образом.
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Вывод может быть на консоль, возвращен в виде списка строк, возвращен в виде одной строки и т. Д.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
n=11
аm=9
n=11
таких , что0<m<=10
. Это заставляет вас иметь всех овец в верхнем ряду и динамическое количество овец слева (n-1-m
) и справа (m
) от забора и не может использовать фиксированные размеры пера.Ответы:
APL (Dyalog Unicode) , 118 байтов SBCS
Анонимный инфикс лямбда. Принимает
n
как левый аргумент иm
как правый аргумент. Возвращает результат вложенного массива, но отображение этого вложенного массива по умолчанию соответствует спецификациям. Использует до девяти столбцов для подсчитанных овец и оставшихся столбцов для ожидающих овец.Попробуйте онлайн!
{
...}
анонимная лямбда;⍺
левый аргумент,⍵
правый аргументЭта функция состоит из трех частей: Ожидание , Прыжки и Счет . Каждый из них заключен в скобки, в результате получается список из трех элементов.
счетный
(r⍴(×/r←9,⍨∘⌈⍵÷9)↑⍵⍴⊂S←⌽↑''(b←'''00^<')' ||')
''(
...)' ||'
три линии зеркальной счетной овцы, средняя из которых:b←'''00^<'
тело и назначенb
↑
смешать список строк в матрицу символов (заполнение пробелами)⌽
отразить этоS←
назначитьS
(большой S heep)⊂
заключить его, чтобы мы могли иметь дело с ним как единое целое⍵⍴
использовать количество пересчитанных овец, чтобы циклически изменить(
…)↑
Взять из этого следующее количество элементов (заполнение прототипами, то есть тот же массив, но со всеми символами, замененными пробелами)⍵÷9
девятое число численных овец⌈
округлять9,⍨
добавить 9 к этомуr←
назначитьr
(то , что мы будем г eshape с, строк и столбцов)×/
продукт этого списка (это сколько элементов нам нужно, включая заливки)r⍴
изменить это в массив с длинами измеренийr
Прыжки
(↑(s←'>',⍨¯1↓b)' /\' ' ++')
(
...)' /\' ' ++'
три линии прыгающей овцы, первая из которых:¯1↓b
удалить последний символ изb
'>',⍨
добавить правую головуs←
хранить вs
(малый с Heep)↑
смешать список строк в матрицу символов (заполнение пробелами)Ожидание
(r⍴(×/r←d,⍨⌈w÷d←10-⍵⌊⊢/r)↑w⍴(w←⍺-⍵+1)⍴⊂s@2⌽S)
⌽S
зеркалоS
s@2
поставитьs
в строке 2 этого (замена текущих данных там)⊂
заключить его, чтобы мы могли иметь дело с ним как единое целое(
...)⍴
циклически изменить это до следующего размера:⍵+1
количество пересчитанных овец плюс один⍺-
вычесть это из общегоw←
назначитьw
( ш aiting)(
…)↑
Взять из этого следующее количество элементов (заполнение прототипами)⊢/r
самый правый элементr
(т.е. количество используемых столбцов для подсчитанных овец)⍵⌊
минимум всего и что10-
вычесть это из десятиd←
назначитьd
( d ifference; пропущенные столбцы)w÷
разделитьw
на это⌈
округлить (дает количество нужных строк)d,⍨
Appendd
r←
назначитьr
(то , что мы будем г eshape с, строк и столбцов)×/
продукт этого списка (это сколько элементов нам нужно, включая заливки)r⍴
изменить это в массив с длинами измеренийr
источник
n=11,m=9
правила «в верхнем ряду должно быть 10 плюс прыгающая овца»?Javascript,
281,293, 288 байтБудьте осторожны при использовании приведенного ниже фрагмента, есть большой риск внезапной нарколепсии.
источник
m = n
вы получили ошибку.C 392 байта
Спасибо @Jonathan Frech за сохранение байта!
Попробуйте онлайн!
раскатали:
источник
y+=1+!t
может бытьy-=~!t
.Python 2 ,
222277 байтПопробуйте онлайн!
источник
n=11
аm=2
.AWK , 293 байта
Попробуйте онлайн!
Я пытался использовать подстановки строк, чтобы избежать некоторых циклов, но это заняло намного больше кода.
объяснение
Я должен сказать, что овечье искусство довольно мило. :)
источник
Древесный уголь , 98 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Введите количество овец, которые уже были подсчитаны.
Введите общее количество овец и подсчитайте, сколько еще нужно посчитать.
Создайте массив из двух массивов. Каждый массив имеет следующие элементы:
Отразите холст и напечатайте наполовину прыгающих овец.
Перебери овец по ту сторону.
Распечатать овцу.
Если это конец строки, выведите несколько строк и пробелов, чтобы добраться до начала следующей овцы.
источник