Ваша задача: по заданному номеру n
сгенерировать знак «+», который находится n
вдали от его центра. Если это сбивает с толку, проверьте контрольные примеры.
Стандартные методы ввода: вывод должен быть строковым или печатным. Применяются стандартные лазейки.
Input: 1
Output: + ] 1 away from center `+`.
Input: 2
Output: + ] 2 away from center `+`.
+++ ] 1 away from center `+`.
+
Input: 3
Output: + ] 3 away from center `+`.
+
+++++
+
+
Это код-гольф , поэтому выигрывает самый короткий код!
Ответы:
Древесный уголь , 5 байт
Попробуйте онлайн!
источник
P+
= крест).Python 2 , 53 байта
Попробуйте онлайн!
источник
JavaScript (ES6),
6765636059 байтx-1
, первого на,--x
а второго наx
."\n"
на`[newline]`
.repeat
, уменьшив его размер. (С почетным упоминанием Мари за ее усилия тоже)Попытайся
источник
"\n"
двумя пробелами и буквальнымa='repeat',v=.....
и` `[a]
repeat()
но мои первые несколько попыток оказались на 2 или 3 байта больше, поэтому я отказался от него! Я еще раз посмотрю на это, когда вернусь к компьютеру.x=>(v=(` `[r='repeat'](--x)+`+<newline>`)[r](x))+`+`[r](x*2+1)+`<newline>`+v
MATL , 11 байт
Попробуйте онлайн!
Пояснение с примером
Посмотрим
n = 3
.источник
Древесный уголь ,
1613 байтПопробуйте онлайн!
Использует другой подход от другого ответа древесного угля.
объяснение
Теперь верхний левый угол завершен, он будет выглядеть примерно так:
Последний шаг является ключом к этой программе, он использует верхнюю левую часть плюса, чтобы сгенерировать остаток плюса, отражая его в юго-восточном направлении (вправо и вниз).
источник
Язык программирования Шекспира ,
749743 байтаПопробуйте онлайн!
Изменить: сделал ответ совместимым с официальной реализацией SPL - я не мог заставить его работать раньше.
Гольф 6 байтов, потому что номера сцен не должны быть последовательными.
Объяснение :
SPL - esolang, разработанный, чтобы быть похожим на пьесы Шекспира. Положительные существительные имеют значение 1 (здесь используется cat ), а отрицательные существительные имеют значение -1 (ни один не использовался, но свинья - одна из них). Прилагательные изменяют константу, умножая ее на 2.
Все до первой точки является названием и не имеет значения.
Символы являются целочисленными переменными, у каждого из них также есть стек, но мне не нужно было использовать эту функцию.
Акты и сцены используются в качестве меток
Это полезно, только если на сцене одновременно находятся два персонажа.
Читает число и заставляет Форд запомнить это.
Как вы можете видеть, английский действует в SPL. Это делает ценность Пака "разной между кошкой и мной". Но что это значит?
cat
это положительное существительное, так что этоPuck = 1 - Ford
.Exeunt - это просто множественное число «выхода», и без аргументов означает, что все на сцене выходят.
Это также,
Page = 1 - Ford
но это говорит другой актер, такI
что будет неправильно. Поскольку это цикл, я не могу просто скопировать значениеPuck
.Довольно просто сейчас.
Ajax = Puck * Page
,«as [adj] as» -
==
оператор.Если Ajax == 0 ... "кошка" - 1, "большая кошка" - 2, "большая большая кошка" - 4 и так далее. После подстановки простых констант мы получаем «сумму суммы 32 и 8 и 2 и 1» -> «сумму суммы 40 и 2 и 1» -> «сумму 42 и 1» -> «43», что является ASCII для +.
иначе это просто «жир, жир, жир, жир, кошка», поэтому Ajax получает значение 32, ASCII для пространства.
Это команда для вывода символа.
Это конструкция цикла. «Вы суммируете себя и кошку»
if(Page != Ford) goto Scene III
. Остальная часть программы использует те же компоненты, так что вот более читаемая версия псевдокода:источник
If not,let us return to Scene III.
" -1; разбивает четвертую стену: PЖеле , 11 байт
Попробуйте онлайн!
источник
Mathematica, 39 байт
CrossMatrix
является встроенным, который генерирует матрицу требуемой формы с1
s вместо+
s и0
s вместо пробелов. Если мы умножим эту матрицу на"+"
, это заменит1
s на+
s, оставив0
s без изменений (очевидно ...0*x = 0
и1*x = x
, верно?). Затем мы заменяем нули вручную пробелами, используя/. 0->" "
. Наконец, мы печатаем каждую строку матрицы с помощьюPrint@@@(...)
.источник
Print
так можно использовать.C 69 байтов
Не очень интересно ... Зацикливается на квадрате, распечатывая соответствующий символ.
источник
Рубин,
4140 байтПопробуйте онлайн!
источник
GNU sed ,
10499 байт-5 благодаря сешумаре
Включает +1 для
-r
Принимает участие в одинарных.
Попробуйте онлайн!
источник
s/( *2)2(2*)/\1\n\1\2/
и,s/(.*)(\n1*)/&\n\1/
как показано здесь , для общего балла 99.Луа
113, 90 байтисточник
Python 2 , 52 байта
Попробуйте онлайн!
53-байтовая альтернатива ( TIO ):
источник
R, 54 байта
Сокращение 7 байт благодаря @Jarko Dubbeldam:
предыдущий ответ:
источник
function(n){a=matrix("",n*2-1,n*2-1);a[n,]="x";a[,n]="x";a}
будет 59 байт!matrix("",y<-n*2-1,y)
a[n,]=a[,n]="x"
работает тоже, сохраняя еще несколько байтов.scan()
и превращая их в программу, а не в функцию:n=scan();a=matrix("",y<-n*2-1,y);a[n,]=a[,n]="+";a
PowerShell , 48 байт
Попробуйте онлайн!
Принимает участие
$n
. Начинается с построения строки--$n
пробелов, соединенных с+
. Это преобразуется в массив, используя оператор запятой, (недавно уменьшенный)$n
раз. Этот массив хранится в$x
паренсе и инкапсулируется для размещения копии в конвейере.Затем мы делаем среднюю часть, которая является
+
строкой, умноженной на соответствующее количество раз. Это осталось на конвейере. Наконец, мы$x
снова включили трубопровод.Все они остаются в конвейере при завершении программы, и неявный
Write-Output
вставляет новую строку между элементами.источник
Perl 5 , 45 байт
44 байта кода +
-p
флаг.Попробуйте онлайн!
Некоторые похожие (но все же разные) подходы:
48 байтов (47+
-p
):50 байтов (49+
-n
):источник
Python 2 ,
60,56 байтПопробуйте онлайн!
источник
CJam , 23 байта
Попробуйте онлайн!
объяснение
Это кажется немного неоптимальным, но идея состоит в том, чтобы наложить следующие две сетки:
Который дает желаемый результат.
источник
CJam, 17
Попробуйте онлайн
Объяснение:
источник
Октава,
3631 байтВдохновлен ответом @LuisMendo на MATL.
Попробуйте онлайн!
Предыдущий ответ:
Попробуйте онлайн!
источник
05AB1E ,
151412 байтПопробуйте онлайн!
-2 спасибо Эмигне.
источник
F'+}¹·<×)û.c
для 12.Python 2, 65 байт
Попробуйте онлайн!
источник
JS (ES6),
887473 байтаВероятно, можно играть в гольф больше.
источник
"\n"
двумя пробелами и буквальнымJavaScript (ES6), 60 байт
Выводит два завершающих символа новой строки. Альтернативная формулировка, также 60 байтов:
источник
PowerShell, 48
Кажется, не становится короче этого (и почти такой же подход, как и другое решение):
или
источник
V ,
191815 байтГольф 3 байта благодаря @ nmjcman101 с использованием
.
иÒ+
Попробуйте онлайн!
источник
REXX, 81 байт
источник
PHP, 68 байт
83 байта
источник
$m=$argn
и предварительно увеличивая,$i
а не увеличивая его. Вы также можете сохранить байт, переместив$m
назначение на конец и опустив скобки.for(;$i<$c=-1+2*$m=$argn;)echo"\n".str_pad("+",$c," +"[$m==++$i],2);
while(++$y<2*$n=$argn)echo"\n",str_pad("+",$n*2-1," +"[$y==$n],2);
66 байт (и сохранить еще один с физическим разрывом строки)MUMPS, 48
5053байтаисточник
Brain-Flak , 216 + 1 = 217 байт
+1 байт от
-A
флагаПопробуйте онлайн!
Объяснение приехать
источник