Введение:
Вдохновленный комментарием @MagicOctopusUrn к ответу @ Emigna 's 05AB1E на мою задачу « Это была просто ошибка » :
8F9ÝÀNð×ý}».∊
Я сделал сделал космический корабль пасть! И я был взволнован предложением 12-байтового редактирования. - Волшебная Осьминог Урна 17 июля 17: 20
Который является 05AB1E (устаревшая) программа, приводящая к этому:
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
Вызов:
Ввод: непустая строка
Выходные данные: Изнутри наружу добавьте еще один пробел между каждым символом в каждой строке, аналогично тому, как это сделано в приведенном выше выводе, равный length - 1
. Таким образом, для ввода 1234567890
на самом деле вывод будет следующим:
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
Зачем? Длина 1234567890
есть 10
. Итак, начнем с вывода 10 строк: первая строка без пробелов; второй с одним пробелом; третий с двумя; и т. д. И затем (без length - 1
дублирования средней строки с пробелами) мы возвращаемся к начальному вводу, спускаясь вниз.
Правила соревнований:
- Вход гарантированно будет непустым (длина
>= 1
). (Для ввода с одним символом мы просто выводим этот символ.) - Допускается любое количество пробелов / пробелов / пробелов, если только вывод (где угодно на экране) является правильным. (Пустые строки между выходными строками также не допускаются.)
- Ввод будет содержать только печатные символы ASCII, исключая пробелы (диапазон кодовых точек
[33, 126]
) - Ввод / вывод является гибким. Входные данные могут быть приняты как STDIN, аргумент или параметр функции. Может быть списком / массивом / потоком символов вместо строки. Выходными данными также могут быть список / массив / поток символов вместо строк; может быть напечатано в STDOUT; возвращается как строка с разделителями новой строки; и т.п.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
Input: @
Output:
@
Input: test
Output:
test
t e s t
t e s t
t e s t
t e s t
t e s t
test
Input: ?!
Output:
?!
? !
?!
Input: Spaceship
Output:
Spaceship
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
Spaceship
Input: 05AB1E
Output:
05AB1E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
05AB1E
Input: )}/\
Output:
)}/\
) } / \
) } / \
) } / \
) } / \
) } / \
)}/\
ಠ_ಠ
затем понимаете, что это потому, что вы случайно сделали это год назадಠ⌣ಠ
.Ответы:
Japt ,
86 байтПринимает ввод как массив символов, выводит массив строк.
Попытайся
объяснение
Оригинал, 8 байт
I / O - это строка Использует
-R
флаг. Включает конечные пробелы в каждой строке.Попытайся
объяснение
источник
S.ç()
FTW еще раз :-)R ,
10599858479 байт-6 благодаря @Kevin Cruissen и @Giuseppe
-14 от перехода на метод на основе регулярных выражений
-1 благодаря @Giuseppe
-5 благодаря @digEmALl
Попробуйте онлайн!
источник
in(r<-
.s
один раз, так что вы можете просто использовать его в качестве аргументаwrite
непосредственно; доводит вас до 99 байт1
а не""
вwrite
? Я копаю ваше использованиеMap
!collapse
аргументом,paste
но этого просто не происходит ...JavaScript (ES6), 53 байта
Принимает ввод как массив символов.
Попробуйте онлайн!
источник
Древесный уголь , 10 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
[
к]
- или это другой отдельной командой?Холст , 8 байт
Попробуй это здесь!
7 байт версия была слишком хороша для этой проблемы ..
источник
/
с вX
?─
- вертикальный палиндромиз. Палиндромизация Canvas делает классные вещи . Перекрывающаяся часть тоже имеет свой характер .Python 2 ,
7270686665 байт-2 байта благодаря Кевину Круйссену
-3 байта благодаря овсу
Попробуйте онлайн!
источник
c==len(w)-1
может быть в гольф на 1 байт сc+2>len(w)
. РЕДАКТИРОВАТЬ: В вашей новой 70-байтовой версии,0<c
может бытьc
.05AB1E ,
109 байтовСохранено 1 байт благодаря Аднану
Попробуйте онлайн!
объяснение
источник
S
. Ввод гибкий, поэтому ввод в виде списка разрешен.»
может быть опущено.»
и измените циклv
на картуε
.εINð×ý}û»
работает?Рубин ,
5449 байтПопробуйте онлайн!
Принимает ввод как массив символов, выводит массив строк.
источник
Japt ,
98 байт-1 байт от @Shaggy
Попробуйте онлайн!
источник
SpX
->Xî
для сохранения 1 байта.PowerShell ,
6654 байта-12 байт благодаря маззи
Попробуйте онлайн!
Принимает ввод через splatting, который в TIO проявляется как отдельные аргументы командной строки для каждого символа.
Сначала мы устанавливаем
$a=$args
в качестве входного аргумента. Затем мы устанавливаем$x
равным.count
этому массиву-1
. Затем нам нужно перебрать буквы, чтобы построить космический корабль. Это делается путем построения диапазона от0
до$x
, затем$x
обратно до0
, затем с помощью,Get-Unique
чтобы вытащить только соответствующий диапазон.На каждой итерации мы берем наши входные аргументы и
-join
их вместе с соответствующим количеством пробелов. Каждая из этих строк остается в конвейере, и неявныйWrite-Output
дает нам новые строки бесплатно после завершения программы.источник
0..($x=($a=$args).count-1)+$x..0|gu|%{$a-join(' '*$_)}
Get-Unique
работает в диапазоне? Это безумие! Благодарность!05AB1E (legacy) , 9 байтов
Ввод в виде списка символов.
Попробуйте онлайн или проверьте все тесты .
Объяснение:
источник
[
,]
и(
,)
. Возможно, захотите добавить эти случаи, чтобы ловить уголь тоже. (Перенес другие комментарии в ответ Эминьи, потому что он был ответом, который я первоначально прокомментировал)û»
вместо.∊
.Haskell ,
6059 байтПопробуйте онлайн!
объяснение
Для строки (например.
"abc"
) Мы применяем сначалакоторый так же, как
Это неоднократно применяется
(?)
(добавляет пробел к каждому символу в диапазоне [33 ..] ) до техstr
пор, пока не будет столько строк, сколькоstr
имеет символов:["abc","a b c ", "a b c "]
Теперь нам нужно только объединить результат (без последнего элемента) с его обращенной противоположной частью:
источник
МАТЛ ,
252213 байтПопробуйте онлайн!
Благодаря Луису Мендо за то, что он предложил 5-байтовый гольф, который вдохновил меня сбрить еще 4 байта!
Пояснение с примером ввода
'abc'
:источник
Желе , 9 байт
Попробуйте онлайн!
Возвращает список строк; выходной сигнал предварительно проверен на TIO.
источник
,€⁶$LСŒḄ
. Другие, более похожие, 9-е:J’⁶ẋŒḄɓjⱮ
иJ’⁶ẋŒḄjⱮ@
(я искал короче, но пока без радости)LḶ⁶ẋ
илиŒḄ
. Тем не менее, если вам удастся найти сохранение, пингуйте меня. :-),€⁶$LСŒḄ
может оказаться недопустимым, так как он имеет сумасшедшее вложение, поэтому может потребоватьсяY
полная программа.['I', 'f', [[' '], 't', 'h', [['i']], 's'], ' ', 'i', ['s', ' '], 'a', [[' ', 's', 't'], 'r', ['i', 'n', 'g'], ' '], 'w', ['e', ' ', 'a', 'r', 'e'], ' ', 'd', 'o', ['o'], 'm', [[[[['e']]]]], [[[['d']]]], '!']
По крайней мере, я переиграл 05AB1E ...Pyth , 12 байт
Просто мое обязательное представление Pyth. Я очень горжусь этим, поэтому объяснение, скорее всего, скоро придет.
Попробуй это здесь!
Попробуй это здесь!
источник
Stax , 10 байт
Запустите и отладьте его
Выходы с пробелами в конце каждой строки.
Объяснение:
источник
Java (JDK 10) , 115 байт
Попробуйте онлайн!
источник
l-Math.abs(i)
может быть в гольфе доi<0?l+i:l-i
-2 байт.l-i<0?-i:i
?l-(i<0?-i:i)
(12 байт).K (ок) ,
2524 байтаРешение:
Попробуйте онлайн!
Объяснение:
Порт моего решения K4 :
Заметки:
источник
,:'
->+,
Паскаль (FPC) ,
143135 байтовПопробуйте онлайн!
Я, вероятно, выиграю только против Lenguage ...
источник
PHP,
8889 байттребует PHP 5 или более поздней версии для
str_split
. Запустите как трубу с-nR
или попробуйте онлайн .источник
К4 , 23 байта
Решение:
Пример:
Объяснение:
Имеет пробел в каждой строке.
источник
C #,
11310598 байтПопробуйте онлайн!
источник
s=>{
до и}
после, чтобы сделать его лямбда-функцией. Кроме того, одна вещь для гольфа - это удаление скобок вокруг петли. Попробуйте онлайн.Scala , 82 байта
Попробуйте онлайн
У Scala есть много ярлыков, которые мне здесь помогают, и это вполне читабельно! Попробуйте Scala
источник
0
доlength
количества пробелов, а не0
наlength-1
количество пробельных. Я не очень хорошо знаю Scala, но, похоже, вы можете решить обе проблемы с помощью +4 байта (всего 86 байтов) следующим образом:for(i<-(0 to a.size-1)union(-a.size+2 to 0))println(a.map(_+" "*Math.abs(i)).mkString)
снова добро пожаловать, и приятного пребывания! :)Oracle SQL, 115 байт
Не язык игры в гольф, но ...
Предполагая, что значение находится в столбце
v
таблицыt
:SQL Fiddle
Настройка схемы Oracle 11g R2 :
Запрос 1 :
Результаты :
(По какой-то причине SQLFiddle выводит значения в столбце по правому краю ... пробелов нет)
источник
(.)
ли.
его использовать,\0
вместо того чтобы использовать его,\1
как, например, в Java? РЕДАКТИРОВАТЬ: Неважно, это для$0
, а не\0
.. ( пример Java, что я имел в виду ).8086 машинный код,
5653 байтаСобран из:
Прецедент:
источник
length
количество пробелов и всего 9 строк, но средняя строка должна содержатьlength-1
количество пробелов, и вместо этого должно быть всего 7 строк (для четырехбуквенного слова «тест») ..: (Я надеюсь, что это не слишком дорого с точки зрения байтов, чтобы исправить?Haskell,
646059 байтПопробуйте онлайн!
источник
Баш ,
115,109,105,100,97,96,92,91, 90 байтов-5 и -3 благодаря Кевину Круассену
Попробуйте онлайн!
Обратите внимание , что поскольку
\
это оболочка побег символ, то тест)}/\
должен быть введен с дополнительным ,\
как это:)}/\\
.источник
in
иprintf
как в Python?bash
код только вводит в строку, ( т.е. только одна линия). Тем не менее, все тесты работают, хотя)}/\
должны быть в одинарных кавычках<<< ')}/\' read s; ...etc.
. Пробелы послеin
иprintf
необходимы.for
иdo
могут быть удалены.f=1
можно изменить наc=f=1
. Аf=f+c
может бытьf+=c
.f!=0
вf
в течение петли. Так же, как в JavaScript и Python,0
это ложь, и каждое другое положительное / отрицательное целое число, по-видимому, верно в Bash.Perl 6 , 43 байта
Попробуйте онлайн!
Возвращает список строк.
Объяснение:
источник
C (gcc) ,
131129111 байтовПопробуйте онлайн!
-20 байт благодаря потолку !
Попробуйте онлайн!
Или, если длина может быть принята в качестве параметра:
C (gcc),
105102 байта-1 байт, благодаря floorcat!
Попробуйте онлайн!
источник
x
скрыт и, таким образом, избыточно объявлен.PHP,
148146143141 байтВы можете проверить это так:
Выход
песочница
Расширенная версия
Попытка 2, 92 байта
увидев ответ @Titus, я уменьшил свой до этого:
Я пытался придумать способ использовать 1 цикл вместо 2 ... Верьте или нет, я почти никогда не использую
for
цикл в «реальном» коде. Это было~
побитовое Нет, что я скучал ...Это немного дольше в
92
поэтому я не чувствую себя так плохо. Но я все равно сделаю это как вторую попытку.$argn
это ввод из командной строкипесочница
источник
f
вместо того, чтобы назначать анонимную$f
-function f(
экономит 2 байта больше$f=function(
, и вы сохраняете другой байт каждый раз, когда вызываетеf(...)
вместо$f(...)
. В качестве альтернативы вы можете записать$s
, сохраняя 2 байта -($i)use($s)
это на 4 байта длиннее($i,$s)
, но вы сохраняете 3 байта для каждого вызова$f($i)
вместо$f($s,$i)
; на языках с автоматическим захватом, таких как JS, чаще всего это экономия, потому что вы не платите штраф заuse
утверждение.use
но это кажется более длительным, чтобы сделать это чувство$i
динамичным, это должно быть передано по ссылке. Таким образом, это должно бытьuse(&$i)
и$i
должно быть определено перед передачей его по ссылке$f
. Что означает установку его в родительской функции или перед любой другой. Для функции это может бытьfunction s($s,$i)
и просто знать, что ее нужно вызывать,s($s,0)
но это кажется уродливым, и это все11 bytes, use(&$i),$i
$s
и изменить\n
реальный возврат строки. Это получает его до143
2 от окончания строки и 1 от использованияf
вместо закрытия:function s($s){for(;$i<strlen($s);++$i)f($i,$s);for(--$i;--$i>=0;)f($i,$s);}function f($i,$s){echo chunk_split($s,1,str_repeat(' ',$i))." ";}
дополнительные функции, подобные этой, разрешены в соответствии с этой мета-публикацией: codegolf.meta.stackexchange.com/questions/7614/…