Этот вызов вдохновлен этим очень хорошим ответом TidB.
В ответе TidB каждый восьмой символ находится в правильном порядке: gnilwoB edoC
(в Code Bowling
обратном направлении). Другие строки, однако , были в странном, случайном порядке.
Ваша задача - это исправить.
Возьмите (непустую) строку и положительное целое число в n
качестве входных данных. Строка будет содержать символы ASCII в диапазоне: 32-126 (пробел до тильды).
Вы должны отсортировать строку в порядке возрастания (если смотреть слева, основываясь на значении кода ASCII), но пропустить каждый n
символ, начиная с конца строки. В качестве примера, давайте возьмем строку в abcdABC123
качестве входных данных, а n=4
затем получим:
abcdABC123 <- Input string. (n=4)
_b___B___3 <- These will not be sorted (every 4th starting from the end)
1_2AC_acd_ <- The remaining characters, sorted
1b2ACBacd3 <- The final string (the output)
Другой пример:
9876543210 <- Input string (n=2)
_8_6_4_2_0 <- These will not be sorted
1_3_5_7_9_ <- The remaining characters, sorted
1836547290 <- The final string (the output)
Входная строка может быть принята в необязательном формате (строка, список символов, список строк из одного символа ...). Входное целое число также может быть принято в необязательном формате.
Тестовые случаи:
Формат будет n=__
, после чего будет строка ввода на следующей строке. Вывод находится на линии ниже.
n=1 (All elements will stay in place)
nafgaksa1252#"%#
nafgaksa1252#"%#
n=214 (The last character will stay in place. All other are sorted.
&/lpfAVD
&/AVflpD
n=8
g7L9T E^n I{><#ki XSj!uhl y= N+|wA}Y~Gm&o?'cZPD2Ba,RFJs% V5U.W;1e 0_zM/d$bH`@vKoQ 43Oq*C
g n !#$%&'i*+,./01l234579;w<=>?@ADoEFGHIJKBLMNOPQR STUVWXYeZ^_`abcdhjkmqsuovyz{|}~C
PHP, 101 байт
отрицательные строковые индексы (PHP 7.1) экономят 21 байт - и, возможно, день:
Беги с
php -nr '<code>' '<string>' <N>
.сломать
источник
$i-=1
и нет$i--
?$i--
не работает, если$i
естьNULL
.--$i
, что мне нужно, тоже нет. ;)Октава ,
6554 байтаПопробуйте онлайн!
Использует логическое индексирование для создания массива «фиксированных» и «отсортированных» символов. Объяснение:
Способ, который я создал,
l
требует, чтобыs
он был ненулевым, что я считаю разумным требованием, так как многие языки используют\0
в качестве разделителя конца строки.источник
l
и использовать вектор индексных чисел напрямуюPython 2, 191 байт
Да, я уверен, что это ужасное решение.
Попробуйте онлайн
Я не собираюсь объяснять это. Это было хорошо, пока я не понял, что это должно быть проиндексировано с конца. Теперь это монстр. На данный момент, я просто рад, что это работает.
источник
JavaScript (ES6),
10093 байтаПринимает ввод в синтаксис карри
(s)(n)
.Отформатировано и прокомментировано
Контрольные примеры
Показать фрагмент кода
источник
Perl 5 , 94 байта
88 байт кода +
-F -pl
флаги.Попробуйте онлайн!
На мой взгляд, это слишком долго, но уже не так страшно ... Я все равно пытаюсь играть в гольф дальше.
источник
Желе ,
1413 байтовПолная программа, которая печатает строку в STD out *.
Попробуйте онлайн!
Как?
Я не могу помочь, но думаю,что есть способ использовать тот факт, которыйḢ
изменяет свой вклад* для функции можно сгладить вывод в один список с помощью
F
.Например, ввод
"abcdABC123"
,4
дает:[[['1'],['b']],[['2','A','C'],['B']],[['a','c',',d'],['3']]]
вместо:
['1','b','2','A','C','B','a','c',',d','3']
источник
Python + NumPy ,
115114 байтПринимает обычный список Python в качестве входных данных (не был уверен, будет ли использование массива кошерным); возвращает массив NumPy, содержащий результат.
Работает, маскируя соответствующие индексы и сортируя остальные.
источник
Python 2,
119113 байтовСоздает список всех символов, которые будут отсортированы, сортирует их и объединяет их для печати, избегая при этом некоторых обращений путем отрицательной индексации.
источник
print"".join(sorted(l[~a]for a in i if a%n)[-a+a/n]if a%n else l[~a]for a in i)[::-1]
сохраняет 5 байтовРубин, 64 байта
Использует регулярное выражение для захвата всех не относящихся к делу символов, как для замены, так и для сортировки.
Попробуйте онлайн
источник