Учитывая ввод двух целых чисел n и m , выведите ASCII-лестницу длины n и размера m .
Это ASCII-лестница длиной 3 и размером 3:
o---o
| |
| |
| |
+---+
| |
| |
| |
+---+
| |
| |
| |
o---o
Это ASCII-лестница длиной 5 и размером 1:
o-o
| |
+-+
| |
+-+
| |
+-+
| |
+-+
| |
o-o
Это ASCII-лестница длиной 2 и размером 5:
o-----o
| |
| |
| |
| |
| |
+-----+
| |
| |
| |
| |
| |
o-----o
Чтобы быть конкретным:
Длина ( n ) представляет количество квадратов, из которых состоит лестница.
Размер ( м ) представляет ширину и высоту внутренней части - то есть, не считая «границ» - каждого квадрата.
Каждый квадрат состоит из внутренней области, заполненной пробелами, окруженными
-
s сверху и снизу,|
s слева и справа и+
s во всех четырех углах.Границы между квадратами сливаются вместе, поэтому две строки подряд
+--...--+
сливаются в одну.Углы всей лестницы заменяются персонажем
o
.Вы можете при желании вывести завершающий перевод строки.
Длина лестницы ( n ) всегда будет ≥ 2, а размер ( м ) всегда будет ≥ 1.
Входные данные могут быть приняты в виде строки, разделенной пробелами / запятыми, массива / списка / и т. Д. Или двух функций / командной строки / и т. Д. аргументы. Аргументы могут быть приняты в любом порядке, наиболее удобном / наиболее подходящем для игры в гольф.
Поскольку это код-гольф , выигрывает самый короткий код в байтах.
Совет: Приведенные выше примеры также можно использовать в качестве тестовых случаев.
Ответы:
Pyth, 34 байта
Тестирование
Принимает аргументы newline, разделенные на STDIN.
Использует вспомогательную функцию,
:
которая строит каждый тип вертикальной строки из трех символов, затем реплицирует при необходимости, транспонирует и объединяет на новых строках.источник
Руби, 71
разряженный в тестовой программе
источник
;
послеh=0
, нужно место послеputs
. Но ваш счет увеличивается только на 1 символ, так как раньше было дополнительное местоputs
.CJam,
4342 байтаЯ не удовлетворен счетом. Но я не Деннис, верно?
Ввод 2 разделенных пробелами элементов. Длина первая
объяснение
источник
JavaScript (ES6), 89
... повтори, повтори, повтори ...
Тест
источник
document.getElementById('elem').
можно заменить наelem.
! +1 за это, но, пожалуйста, не могли бы вы указать некоторые документы по этому поводу?C #, 1412 байт
... Моя первая попытка CodeGolf, вряд ли победит, но она работает, так что мы идем:
источник
using System;class P{static int m;static void Main(){int n = int.Parse(Console.ReadLine());m = int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using System;class P{static int m;static void Main(){int n=int.Parse(Console.ReadLine());m=int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using C=System.Console;class P{static void Main(){int i,k,n=int.Parse(C.ReadLine()),m=int.Parse(C.ReadLine());System.Action<char,char> M=(x,y)=>C.WriteLine(x+new string(y,m)+x);M('o','-');for(k=0;k<n;k++){for(i=0;i<m;i++){M('|',' ');}if(k<n-1){M('+','-');}}M('o','-');}}
. Однако, скорее всего, здесь есть больший потенциал, просто немного изменив способы работы.Юлия, 87 байт
Это функция, которая принимает два целых числа и возвращает строку.
Ungolfed:
источник
pb - 147 байт
Это тот вызов, который, по праву, должен быть очень хорош. Рисование простых картинок с символами - это именно то, для чего был разработан pb. Увы, я думаю, это просто словесный язык.
Сначала берется длина ввода, затем размер. Принимает ввод в виде байтовых значений, например:
python -c 'print(chr(5) + chr(7))' | ./pbi.py ladder.pb
Смотри, веселая анимация!
С комментариями:
источник
Pure Bash,
132 130 128127 байтДа, я мог бы сбросить еще 1 байт, заменив последний
${p% *}
, но я предпочитаю это:Образец:
источник
Haskell,
10097 байтПример использования:
Как это работает:
Изменить: @ Кристиан Ирван нашел 3 байта. Благодарность!
источник
m=init$[1..l]>>("|"!" "<$u)++["+"!"-"]
=>(_:m)=[1..l]>>["+"!"-"]++("|"!" "<$u)
_:m=[1..l]>>["+"!"-"]++("|"!" "<$u)
работаетбрейкфук - 334 байта
Я ожидал, что это будет намного короче.
Это устанавливает «строку», которая выглядит
| (...) |
и выглядит как+----(...)----+
, печатая каждую из них по мере необходимости, с некоторым специальным регистром дляo
s сверху и снизу.Требуется интерпретатор, который использует 8-битные ячейки и позволяет вам идти влево от ячейки 0 (будь то отрицательные ячейки или циклы). По моему опыту, это самые распространенные настройки по умолчанию.
С комментариями:
источник
PowerShell, 77
80источник
Джольф, 36 байт
Попробуй это здесь!
объяснение
источник
Perl, 98 байт
источник
+
признаков в вашем коде. Считаете ли вы, что промежуточные ступени имеют+
знаки на каждом конце?($n,$m)=@ARGV;
и предположим, что они уже установлены - не уверен, в духе ли это Я должен это посмотреть.@ARGV
. Кроме того, при ответе кому-то не забудьте указать @username, чтобы он получал оповещение. Мне не нужно это делать, так как это ваш пост.C 122 байта
Попробуйте онлайн .
источник
Tcl, 187 байт
Этот код сделан для помещения в файл с аргументами, вводимыми в командной строке. укажите количество ящиков и ширину в указанном порядке.
источник
PHP, 81 байт
Ожидает 2 аргумента, передаваемых при непосредственном вызове команды PHP. Первый - это размер, а второй - количество шагов.
Может потребоваться некоторые улучшения.
источник
Python 2, 94 байта
'Ungolfed':
источник
Perl 5 , 91 + 1 (-a) = 92 байта
Попробуйте онлайн!
источник
Пип
-l
, 35 байтПопробуйте онлайн!
объяснение
Некоторые другие версии
Я пробовал много разных подходов, пытаясь поймать Пита ...
Мне особенно нравятся
t**b
те, которые используют математику для генерации вертикального шаблона лестницы:Затем
1000200020001
можно использовать для создания моделейo|||+|||+|||o
и- - - -
, которые составляют лестницу. К сожалению, я не мог сделать этот подход короче, чем метод соединения / переноса.источник