Соревнование
Учитывая строку, выведите текст в форме квадрата.
Вы можете предположить, что текст всегда будет помещаться в квадрат и что он никогда не будет пустой строкой.
Вы также можете предположить, что никогда не будет новых строк.
пример
Input:
Hi, world
Output:
Hi,
wo
rld
Тестовые случаи
Input:
Hi, world! Hello
Output:
Hi,
worl
d! H
ello
Input:
Lorem ipsum dolor sit amt
Output:
Lorem
ipsu
m dol
or si
t amt
Input:
H
Output:
H
правила
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах! Ответ Tiebreaker является наиболее одобренным.
- Стандартные лазейки запрещены.
Ответы:
Vim,
59, 57, 48 байт / нажатий клавишПоскольку V имеет обратную совместимость, вы можете попробовать это онлайн!
Я случайно получил ответ на этот ответ, поэтому я снова просмотрел его. Мои навыки игры в vim-гольф значительно выросли за последние 7 месяцев, поэтому я увидел, что этот ответ был очень неудачным. Этот намного лучше.
источник
Brainfuck ,
116112 байтовПопробуйте онлайн!
Безопасный в ароматах BF, который не маскирует клетки
256
, не поддерживает нулевые байты.Удалите начальные стрелки вправо, если аромат поддерживает отрицательную память на 4 байта сохранено.
объяснение
Программа делится на 3 этапа:
Этап 1
На этом этапе мы помещаем все символы на ленту, сохраняя при этом количество символов.
Это лента для ввода
abcdefghi
после этой ленты:009
граф.Для каждого символа мы перемещаем первый ноль слева
[<]
и затем добавляем один к счетчику<<+>>>
, а затем перемещаемся к крайнему правому нулю[>]
правому чтобы подготовиться к следующему символу.Этап 2
Этот этап делает квадратный корень из длины, хранящейся во второй ячейке.
Это продолжает вычитать
1, 3, 5, 7, ...
до тех пор, пока число не достигнет нуля, сохраняя при этом количество итераций.Это работает, потому что квадратные числа могут быть выражены как
1 + 3 + 5 + ...
.Этап 3
Обозначим квадратный корень найденной выше длины как
n
.Этот этап выводит
n
символы за раз, а затем выводит новую строку, пока лента не будет очищена.источник
Python 2, 55 байт
источник
05AB1E , 5 байтов
Попробуйте онлайн!
источник
»
сейчас переводы строк.MATL , 6 байтов
Попробуйте онлайн!
объяснение
источник
Желе,
87 байтСохраненный байт благодаря @ Деннис .
Попробуйте онлайн.
объяснение
источник
œs
иs
сделать то же самое здесь.½
не работает вместоƽ
?s
иœs
поэтому они приведут к int.JavaScript (ES7), 49 байт
44 байта только в Firefox Nightly 43-46 (
**
был введен некоторое время между Firefox Nightly 42 и 43 иg
как отдельный параметр был удален некоторое время между Firefox Nightly 46 и 47):источник
+
вs.length*+.5
*+
синтаксис раньше. Может ли кто-нибудь объяснить это?**
.J, 9 байт
Это монадический хук над строкой ввода:
Правильный зубец - это серия композиций:
Слева - формирующий глагол, переключаемый таким образом, чтобы он работал в формате ловушки.
Вот некоторые промежуточные результаты:
В словах:
источник
$~,~@
напоминает какой-то смайлик, но@
кажется странным для уха, но&
подходит лучше, или$~,~&
$~2#%:@#
равно 8. Левая часть вилки может быть константой.C, 64 байта
Позвоните
f()
со строкой в квадрат.Попробуйте это на Ideone .
источник
int
аргументом вместоchar*
?int*
поскольку при добавлении он будет неправильно масштабироваться.s+=write(puts(""),s,m));
вместоs+=m)printf("%.*s\n",m,s);
Perl, 23 + 4 (
-pF
флаги) = 27 байт-2 байта благодаря @DomHastings
-1 байтов благодаря @DomHastings
Попробуйте онлайн!
Расширения : вычисляет квадратный корень (давайте назовем его
S
для объяснения) размера входных данных (это всегда будет целое число) (@F
используется в скалярном контексте, таким образом, возвращая его размер), затем добавьте новую строку после каждого блокаS
символы.источник
$@
;;) Вы можете сохранить байт, используяy///c
вместо длины, и я думаю, что вы также можете использовать буквальную новую строку. Я пытался что-то сделать с настройкой$,
и сопоставлением, но я думаю, что это намного короче!$@
! Спасибо за тоy///c
, что склоняюсь к тому, что он существует.$=
вместо$@
, что позволяет не использовать-l
флаг.-pF
зш, 36 байт
Принимает ввод в качестве аргумента командной строки, выводит в STDOUT.
источник
05AB1E ,
86 байтСпасибо @quartata за сообщение о функции квадратного корня
Попробуйте онлайн!
объяснение
источник
«
это сокращение от присоединения к новым строкам :).«
Python,
9475716563 байтаСтарая версия:
источник
input()
по умолчанию для получения ввода в кавычках, если вы не хотите специально удалить эту опцию.CJam , 8 байт
Попробуйте онлайн!
объяснение
источник
Pyth, 8 байт
Попробуйте онлайн
Как это работает
источник
Dyalog APL, 10 байт
Объяснение:
тесты:
источник
Чеддер, 27 байтов (не конкурирующий)
Я добавил
.chunk
функцию некоторое время назад, но удалил ее при переходе на новый формат stdlib и забыл добавить ее заново. У Чеддера есть специальныйsqrt
оператор, но**.5
он корочеПопробуйте онлайн!
объяснение
источник
Утилиты Bash + GNU, 25
Не очень отличается от ответа @ Doorknob , но
dc
это более короткий способ получить квадратный корень.источник
𝔼𝕊𝕄𝕚𝕟, 11 символов / 14 байтов
Try it here (ES6 browsers only).
Генерируется с помощью этого кода (запускается в консоли браузера переводчика):
источник
Brainfuck, 83 байта
Попробуйте онлайн!
Это использует ту же идею, что и Leaky Nun's ответ . Он попросил помочь в игре в гольф в чате, а затем предложил добавить это в качестве нового ответа. (На самом деле то, что я написал в чате, было 84-байтовым решением, очень похожим на это.)
Для сравнения, дополнительный
>
вначале требуется для реализаций мозгового бездействия, которые не допускают отрицательных адресов памяти.Как и ожидалось, он находит длину ввода, затем принимает квадратный корень, а затем печатает строки соответственно. Он использует в качестве идеальных квадратов частичные суммы
1 + 3 + 5 ...
.источник
Brain-Flak ,
11096 байтПопробуйте онлайн!
Второй раствор, 96 байт
Попробуйте онлайн!
объяснение
Здесь я объясняю первое решение, оба имеют одинаковую длину, но мне нравится первое, потому что оно круче и использует несколько приятных трюков.
Самая важная часть кода - это модифицированная функция квадратного корня, которую я написал некоторое время назад. Оригинальная версия была
И это работает, но мы на самом деле хотим две копии отрицательного квадратного корня. Зачем? Нам нужны две копии, потому что мы перебираем строку на двух уровнях: один для создания строк и один для подсчета количества строк. Мы хотим, чтобы оно было отрицательным, поскольку циклы с отрицательными значениями дешевле.
Чтобы сделать это негативным, мы перемещаемся
[...]
так, чтобы это выглядело такЧтобы сделать две копии, мы меняемся при появлении попсов
Теперь, когда у нас есть этот бит, мы можем собрать его вместе с высотой стека, чтобы получить первый кусок кода, который нам нужен.
Мы переходим в стэк, потому что нашей функции квадратного корня требуются два свободных нуля для вычислений, и потому что она делает вещи немного дешевле в будущем с точки зрения переключения стеков.
Теперь мы строим основной цикл
Это довольно просто, мы зацикливаемся n раз каждый раз, перемещая n элементов и закрывая их новой строкой (ASCII 10).
Как только цикл завершен, нам нужно изменить порядок вывода, поэтому мы просто добавим стандартную обратную конструкцию.
источник
PHP, 51 байт
источник
Perl 6 , 38 байт
Объяснение:
источник
Чеддер, 57 байт
Поскольку переменные не работают, мне придется передавать переменные через лямбда-приложение.
Кроме того, оказывается, что даже если бы переменные работали, все равно было бы короче использовать лямбда-приложение.
использование
источник
Пайк, 5 байт
Попробуй это здесь!
источник
Java 1.7, 110 байт
Попытайся! (Ideone)
Я попробовал другой подход с функцией, возвращающей результат в виде строки, но просто нужно объявить строку и оператор return уже дороже (в байтовом выражении), чем оператор print.
Должен любить многословие Java ... :)
источник
i=0
,i<k
иs.substring(i*k,i++*k+k)
вместо тогоi=-1
,++i<k
,s.substring(i*k,i*k+k)
. Кроме того, обычно мы используем простоJava 7
вместоJava 1.7
, но это хорошо, что вы добавили его, многие люди забывают сделать это.R ,
5954 байтаПопробуйте онлайн!
Печать с завершающим переводом строки. Удивительно коротко, учитывая, как плохо R обрабатывает струны.
источник
PowerShell, 56
5861байтисточник
Руби
-p
,403330 байт-7 байт от @Jordan.
Попробуйте онлайн!
источник
Выпуклый , 7 байт
Попробуйте онлайн!
Интересный факт:
_,mQ/\*
также работает на TIO из-за того, как он работает.Как я забыл сделать операцию с квадратным корнем из 1 символа?
источник