Вызов
Робину нравится иметь объявление переменных в форме стрелки. Вот как он это делает:
- Введите любое количество строк
- Упорядочить их по возрастанию
Выведите их, упорядоченные по середине, чтобы примерно сформировать отрицательный наконечник стрелки, вот так (в зависимости от того, какой порядок в гольфе лучший):
5 or 4 3 2 1 1 2 3 4 5
Тестовые случаи
Входные данные:
bow
arrows
sheriffOfNottingham
kingRichard
maidMarian
princeJohn
sherwoodForest
Выход:
sheriffOfNottingham
kingRichard
maidMarian
bow
arrows
princeJohn
sherwoodForest
Входные данные:
a
bb
cc
Вывод (оба действительны):
bb
a
cc
cc
a
bb
Входные данные:
one
four
seven
fifteen
Возможный вывод (единственный другой допустимый вывод - его вертикальное зеркало):
seven
one
four
fifteen
Заметки
Строки находятся в camelCase и не имеют цифр или специальных символов, только строчные и прописные буквы.
Входными данными могут быть все что угодно: через запятую как одна строка, массив, ... Разрешен любой формат ввода / вывода.
- Между строками одинаковой длины принимается любой заказ.
Ответы:
Python 2 , 47 байт
Попробуйте онлайн!
источник
[::-2]
непосредственно, чтобы сохранить 5 байтов.R ,
6348 байтПопробуйте онлайн!
Сортируйте по длине строки, затем объедините перевернутый список с отсортированным списком, наконец, возьмите каждый 2-й элемент, начиная с 1 на основе индекса 1.
источник
o<-L[...
Другой способ «стрелочные переменные». Менее важный в стороне,pryr::f(...)
работает здесь за 46. Попробуйте онлайн!R + pryr
поэтому я обычно избегаю этого, если нет веской причины - как и в вопросах теории чисел,numbers
- это необходимо.JavaScript 77 байт
Принимает ввод как массив строк, выводит отсортированный по стрелкам массив строк.
объяснение
источник
f=
. 77f=x=>x?f(x-1)
. Если это так, вам нужно включить его,f
так как вы вызываете его в своей функции. Однако, поскольку вы не используете рекурсию, вам не нужно включать ееf
. В Meta есть несколько постов, этот, кажется, объясняет это немного лучше. codegolf.meta.stackexchange.com/a/9032/8340C # (интерактивный компилятор Visual C #) , 89 байт
Попробуйте онлайн!
источник
K (ок) , 24 байта
Решение:
Попробуйте онлайн!
Объяснение:
Создайте
6 4 2 0 1 3 5
последовательность, используйте ее для индексации входных длин по возрастанию и используйте ее для индексации исходного массива:источник
Желе ,
98 байтПопробуйте онлайн!
также 8 байтов.
Спасибо @EriktheOutgolfer и @JonathanAllan за то, что оба предложили игру в гольф для экономии байта.
источник
Ṛ€1¦
может статьm"-
.LÞŒœṚ;¥/
Рубин , 51 байт
Попробуйте онлайн!
источник
05AB1E ,
65 байтСохранено 1 байт благодаря Кевину Круйссену
I / O - это список строк.
Ссылка изменена для ввода / вывода с разделением новой строки для упрощения тестирования.
Попробуйте онлайн!
объяснение
источник
R
и заменить«
на,i
чтобы сохранить байт, так как третье правило маркированного пункта допускает обе версии не чередования.J 11 байт
Попробуйте онлайн!
Сначала разберемся.
Затем мы уменьшаем форму списка справа налево, но чередуя, с какой стороны мы помещаем новый элемент. Выполнено.
источник
PowerShell , 66 байт
Попробуйте онлайн!
Принимает ввод через splatting, который проявляется в TIO как отдельные аргументы командной строки.
sort
s наl
английском языке, сохраняет его в$a
и строит диапазон от1
доcount
входных строк. Затем мы вытаскиваем только нечетные?{$_%2}
и подаем их в цикл|%{...}
. На каждой итерации мы помещаем «последний», затем «третий из последнего» и так далее в конвейер с помощью$a[-$_]
. Отдельно мы также накапливаемся во$x
«второе от последнего», «четвертое от последнего» и т. Д. Вне цикла и конвейер сбрасывается (поэтому эти элементы выводятся), а затем мы выводим$x
. В обоих случаях вывод по умолчанию дает нам новые строки между элементами автоматически.источник
PHP ,
144141 байтПопробуйте онлайн!
-3 байта благодаря @Ismael Miguel !
источник
[array_unshift,array_push][++$i%2]($e,$d)
?['array_push','array_unshift']
с[++$i%2]
как индекс переменного массива между а0
и1
так будет оценивать в другой функции каждый раз. «Переменные функции» в PHP позволяют назначать переменную функции и выполнять ее, вызывая скобки (например,$f='array_push'; $f($e,$d);
==array_push($e,$d)
), чтобы($e,$d)
затем вызывать оцениваемый элемент массива. Просто более короткий способ сделатьif (++$i%2) array_push($e,$d); else array_unshift($e,$e);
. Полагаю, что в конце концов был какой-то синтаксический код PHP[array_unshift,array_push][++$i%2]($e,$d)
на(array_.[unshift,push][++$i%2])($e,$d)
. Что я сделал, так это удалил повторныйarray_
, связал его, а затем результат передается на вызов.MATLAB, 87 байт
Принимает ввод как массив ячеек строк, выводит столбец строк (не уверен, что это допустимо)
PS: спасибо Sanchises за указание на ошибку с вводом нечетной длины
источник
f({'loooooooong','medium','short'})
end
является обязательным дляfunction
. Использованиеfunction x=f(y);x={...}'
короче чемfunction f(y);disp({...}')
.disp
том, что я не уверен, каковы правила вывода. Это должен быть чистый текст или нет? илиdisp({...})
все в порядке или даже так,x={...}
как вы предлагаетеAPL (Dyalog Unicode) , 18 байтов SBCS
Попробуйте онлайн!
Исправлена ошибка благодаря @ngn.
Объяснение:
¹
источник
≢¨×¯1*⍳∘⍴
->(⊢∘-\≢¨)
и это становится еще короче, если вы превратите его в dfnAPL + WIN,
3138 байтСмотрите комментарий Адамса
Попробуй онлайн. Любезность Dyalog Classic!
Запрашивает вложенный вектор строк
источник
≢
"tally" для замены∊⍴
?'12' '1234' '1234' '1234' '1234' '12345678' '12345678' '12345678' '12345678'
. Ясно, что результат должен был быть'12345678' '12345678' '1234' '1234' '12' '1234' '1234' '12345678' '12345678'
Сетчатка , 26 байт
Попробуйте онлайн! Объяснение:
Сортировать строки в порядке возрастания длины (
$.&
возвращает длину строки).Временно удалите альтернативные строки и выведите оставшиеся строки в обратном порядке.
Сохраните единственные строки, которые были временно удалены, и выведите их.
источник
Gaia , 10 байт
Попробуйте онлайн!
источник
Japt, 8 байт
-3 байта благодаря Шегги!
Попытайся
источник
A.ë()
но я не знаю, приведет ли это к более короткому решению.PowerShell , 49 байт
Попробуйте онлайн!
Двойная перегонка .
источник
T-SQL, 84 байта
Ввод является табличной переменной
Попробуйте онлайн
источник
Perl 6 , 31 байт
Попробуйте онлайн!
Сортировка по длине строки, затем по статической последовательности 0, -1, 0, -3, 0, -5, ...
источник
Javascript 95 байт
источник
s.sort()
сортирует строки лексикографически, а не по длине строки.Красный ,
116101 байтПопробуйте онлайн!
источник
Perl 5 (
-p0777F/\n/ -M5.01
), 59 байтTIO
источник
C (gcc) ,
136128 байтовПопробуйте онлайн!
-8 байт благодаря потолку.
Функция
f
является решением. Он принимает количество строк, сами строки и выходной буфер в качестве аргументов (плюс еще четыре, используемые внутри).источник
./.bin.tio
в выходной ?argv
, включая имя файлаt
вам нравится, и сохраняете это, даже если вам это не нужно!Japt , 8 байт
Ввод в виде массива строк, вывод в виде массива из 2 массивов строк, по одному на каждую половину списка.
Попробуйте (дополнительный код для ввода / вывода в виде строки, разделенной новой строкой)
источник
Haskell ,
10496 байтПопробуйте онлайн!
источник