Предыстория
Отказ от ответственности: может содержать вымышленную информацию о кенгуру.
Кенгуру пересекают несколько этапов развития. Когда они становятся старше и сильнее, они могут прыгать выше и дольше, и они могут прыгать больше раз, прежде чем проголодаться.
На стадии 1 , кенгуру очень мало и не может прыгать на всех. Несмотря на это, постоянно требует питания. Мы можем представить образец активности кенгуру на стадии 1 , как этот.
o
На стадии 2 , кенгуру может делать небольшие прыжки, но не более чем 2 , прежде чем он проголодается. Мы можем представить стадии 2 образец активности кенгуру , как это.
o o
o o o
После стадии 2 кенгуру быстро улучшается. На каждом последующем этапе кенгуру может прыгать немного выше (1 единица в графическом представлении) и в два раза больше. Например, шаблон активности кенгуру на стадии 3 выглядит следующим образом.
o o o o
o o o o o o o o
o o o o o
Для стадии n модель активности состоит из 2 n-1 V-образных прыжков с высоты n .
Например, для этапа 4 есть 8 прыжков на высоту 4 .
o o o o o o o o
o o o o o o o o o o o o o o o o
o o o o o o o o o o o o o o o o
o o o o o o o o o
задача
Напишите полную программу или функцию, которая принимает положительное целое число n в качестве входных данных и печатает или возвращает художественное представление ASCII шаблона активности кенгуру stage n .
Допускается окружающий пробел и escape-коды ANSI, если шаблон выглядит точно так, как показано выше.
Если вы выбираете функцию, которая возвращает выходные данные, она должна возвращать одну строку или массив символов, который отображает правильный вывод при печати. Возвращение массива строк не допускается.
Вместо этого вы можете использовать любой печатный символ без пробелов o
, если он согласован с шаблоном действия и со всеми шаблонами в вашем ответе.
Это код-гольф ; пусть победит самый короткий ответ в байтах!
o
. Можете ли вы также использовать какой-либо символ для представления пробелов (если они отличаются?)?Ответы:
05AB1E ,
1210 байтОбъяснение:
Использует кодировку CP-1252 . Попробуйте онлайн!
источник
MATLAB,
92 90 8684 байтаПопробуйте онлайн!
eye
создает идентичную матрицу. Если мы перевернем его и объединим оригинал, то есть[fliplr(p),p]
получим (дляn=3
):С
repmat(...,1,2^n/2)
повторением этого2^(n-1)
раза и получимИз этого мы просто удаляем ненужные столбцы, с
A(:,n+1:n:end)=[];
источник
Древесный уголь , 14 байтов
Попробуйте онлайн!
объяснение
Nλ
вводит целое число вλ
.P^
является разнонаправленной печатью (SE и SW) из×λo
(умножение строки наλ
сo
). ЗатемF⁻λ¹
запускается цикл forλ - 1
, который‖O→
отражает все это с наложением.источник
P^
это разнонаправленная печать (SE и SW) » Круто, это то, что вы не часто видите в языках программирования!Python 2 , 87 байт
Попробуйте онлайн!
Использует формулу для координат,
(i,j)
которые содержат круг, затем соединяет и печатает сетку. Там много гольф запах здесь -''.join
два вложенных диапазонов,for
болееexec
, так что, вероятно, будет улучшение.источник
Python 2,
8381 байтПопробуйте онлайн!
источник
exec
Befunge,
9891 байтЭто использует
,
вместоo
, так как это позволяет нам сэкономить пару байтов.Попробуйте онлайн!
объяснение
Учитывая номер этапа n , мы начнем с вычисления следующих трех параметров шаблона:
Jump_len нормирована , чтобы избежать его равна нулю на стадии 1 кенгуру с:
Затем мы можем вывести шаблон перехода, перебирая координаты x и y области вывода и вычисляя соответствующий характер для вывода для каждого местоположения. У координат отсчет от п - 1 до 0, и х координат отсчета от ширины - от 1 до 0. определить , является ли точка должны быть показан с помощью следующей формулы:
Show_dot логическое значение используется в качестве индекса таблицы , чтобы определить фактический характер для вывода в каждом месте. Чтобы сэкономить место, мы используем начало последней строки исходного кода в качестве этой таблицы, поэтому наш
o
персонаж в конечном итоге становится,
.источник
J ,
2825 байтСохранено 3 байта благодаря @ Конор О'Брайен .
Это основано на уловке палиндрома от @ muddyfish's растворе .
Попробуйте онлайн!
объяснение
источник
' o'{~3 :'(}."1,.~|."1)^:y=i.y'
. Хотел бы я найти способ удалить этот явный глагол ... Черт^:
.u&v
довольно приятно.Пайк, 11 байт
Попробуй это здесь!
источник
Haskell , 100 байт
Попробуйте онлайн! Использование:
k 3
.Объяснение:
Для данной строки
r
, столбцаc
иm = 2(n-1)
ano
устанавливается, еслиc mod m
равноr
илиm-r
. Самое внешнее понимание списка устанавливает диапазонr
отn-1
до0
, следующий устанавливает диапазонc
от0
доm*2^(n-1)
и самое внутреннее действует как условный возврат,'o'
если приведенная выше формула выполнена, и' '
иначе. Это дает список строк, который превращается в одну строку, разделенную новой строкойunlines
. Дляn=1
функции выдает ошибку деления на ноль, поэтому этот случай обрабатывается явно в первой строке.источник
['o'|mod c m`elem`[m-r,r]]
часть!C #,
180, 173171 байтНе выиграю это, публикуя для других участников C # как что-то, что они могут победить.
полная программа:
редактировать: -7 байт благодаря @KevinCruijssen
редактировать: -2 байта, если
источник
,i
; вы можете использовать повторноi
вместоn-1
проверки if;||
может быть|
;j++
могут быть удалены и++
могут быть добавлены вj
. Итак, всего:(n)=>{var s=new string[n];for(int x=0,a=1,j=0,i;j<=Math.Pow(2,n)*(n*n-n);){i=j++%n;s[n-i-1]+=x%n==i?'o':' ';if(i==n-1){x+=a;a*=x==i|x==0?-1:1;}}return string.Join("\n",s);};
( 173 байта )||
и&&
продолжал в полной программе.Pyth , 30 байт
Программа, которая принимает ввод целого числа и печатает результат. Использует кавычку
"
вместоo
.Попробуйте онлайн!
Как это работает
источник
Python 2 ,
11511310898 байтПопробуйте онлайн!
Использование
range(-n+1,n-1)
для создания абсолютного количества пробелов между дном иo
генерациейи затем добавление большего количества копий, вращение всего на 90º и добавление последнего
o
внизу справаисточник
J ,
5847 байтСохранено 11 байт с использованием идеи единичной матрицы из @ flawr решений .
Попробуйте онлайн!
Прямое применение определения.
объяснение
For
n = 3
, создает единичную матрицу порядка n .Затем отразите это, чтобы сделать
Повторите это 2 n -1 раз и опустите голову каждой строки на дубликаты
Используйте эти значения в качестве индексов в массиве char
[' ', 'o']
для вывода 2d массива charисточник
JavaScript (ES6), 83 байта
источник
Желе , 11 байт
TryItOnline!
Как?
Печатаемый символ используется
0
.Основывается на методе ответа Денниса на его предыдущий вопрос о кенгуру.
источник
ŒḄ¡Ṭ€z0o⁶ṚY
.MATL, 27 байт
Попробуйте это в MATL Online
источник
Python 3 , 177 байт
Попробуйте онлайн!
источник
Perl 6 ,
1049388 байтВставляет
o
в 2D-массив, а затем печатает его.источник
05AB1E , 16 байтов
Попробуйте онлайн!
Почему и как?
источник
Java 8, 254 байта
Golfed:
Ungolfed:
Выход программы:
источник
PHP, 157 байт
Ungolfed:
источник
'o'
с1
и каждый''
с0
. Надеюсь, что это работает, Кроме того, пробелы могут быть замененыO
или9
. Важным является шаблон, согласно правилам. Но сначала проверьте