По заданной строке x
выведите символы, x
отсортированные по порядку появления в исходном коде.
Примеры
Source: ThisIs A Test
Input: Is it a Test?
Output: TissI etta?
Source: Harry - yer a wizard.
Input: I'm a what?
Output: aa wh'?Imt
Source: Mr. H. Potter, The Floor, Hut-on-the-Rock, The Sea
Input:
Output:
правила
- Применяются стандартные лазейки и правила ввода / вывода
- Входом и выходом может быть либо строка, либо список символов, либо список байтов.
- Если символ используется несколько раз в источнике, используйте первое вхождение.
- Если один или несколько символов не появляются в источнике, они должны быть в конце; их порядок не имеет значения и не должен быть последовательным.
- Источник должен быть не пустым
- Новые строки обрабатываются так же, как и другие символы.
- Порядок выполнения кода не имеет значения; просто сырая строка.
- Ввод в той же кодировке, что и код.
- Ввод сортируется по символам, а не по байтам.
- Сортировка чувствительна к регистру
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах для каждого языка!
x
кодировку в UTF-8 или UTF-16, если наше решение вообще не закодировано в Unicode, а символы Unicode вx
представляют символы в кодовой странице решения? Например, некоторые языки игры в гольф используют пользовательские кодовые страницы, чтобы уменьшить количество байтов, но все же могут быть читаемы невооруженным глазом.Ответы:
Python 3.8 (предварительная версия) ,
1021009685797668615960 байтПопробуйте онлайн!
-2 байта с помощью этого
-4 байта, понимая, что
<0
====-1
и удаляя ненужные+1
-11 байт благодаря Нейлу
-6 байт благодаря дзайме
-3 байта благодаря стержню
-8 байт благодаря отрицательной семерке, указывающей, что программа может выводить список символов
-7 байт из-за переключения Embodiment of Ignorance обратно на Python 3.8 и использования
:=
-2 байта из-за того, что Джо Кинг выключил имя переменной s для c, так что мы могли бы пропустить
;c
+1 байт, потому что отрицательная семерка указала, что она не фильтруется
;
правильноисточник
('s=%r;exec(s)'%s+x).find(x)
?('s=%r;exec(s)'%s).find(x)
вашего кода сделает его действительным?input()
и сохранить 4 байта;
неправильно сортируется в текущей версииAPL (Dyalog Unicode) , 14 байтов SBCS
Функция анонимного молчаливого префикса.
⊂
приложить аргумент (действовать на него в целом)...
⊃¨
из этого выберите один символ для каждого из следующих индексов:∘⍋
индексы, которые будут сортировать аргумент в порядке, заданном следующей строкой (все не-члены идут в порядке появления в конце):'''∘⍋⊃¨⊂'
персонажи'∘⍋⊃¨⊂
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 48 байт
Попробуйте онлайн!
источник
JavaScript (Node.js) ,
60 5856 байт-2 байта от Джо Кинга
Попробуйте онлайн!
источник
f=...
. Если это так, пожалуйста, включите это в свой счет и количество байтов.Perl 6 , 56 байт
Попробуйте онлайн!
источник
Рубин , 57 байт
Попробуйте онлайн!
Довольно просто, если предположить, что я не пропустил трюк в гольфе. Взять список символов и отсортировать по их индексу в строке, состоящей из всех символов uniq в коде в порядке их появления. Часто их первое появление именно в этой строке, но это не меняет порядок.
источник
05AB1E ,
242221 байтПопробуйте онлайн!
Объяснение:
В первый раз пробуем вещи в 05AB1E, так что, вероятно, многое будет сохранено
источник
}krR«'«
. ПРИМЕЧАНИЕ:'
это один символ, поэтому'"
достаточно (в отличие от C #, где требуется дополнительный трейлинг'
). В настоящее время ваш код сначала выталкивает строкуΣ
, затем строку"
, затем строку«
, затем строку'«Rrk}
, а затем выполняет добавление, обратный, обратный стек, индекс. Умное использование обратной строки и в конце, хотя! Я посмотрю, смогу ли я найти исправление для вашего ответа, а потом удалю свой.}krR«'"Σ
. PS: Я склонен использовать=
(печатать без всплывающих окон) иногда для целей отладки. Вы также можете добавить в--debug-stack
качестве аргумента, но это немного странно в новой версии 05AB1E imho.Желе ,
1614 байт (кодовая страница желе), 25 байт (UTF8)Попробуйте онлайн!
Полная программа, которая принимает один аргумент, строку для сортировки.
Спасибо @JonathanAllan за указание на ошибку!
Согласно @EriktheOutgolfer, хотя код может быть введен с использованием кодовой страницы Jelly, отсортированные символы являются эквивалентными UTF-8, а не байтами исходного кода. Таким образом, я включил счет в байтах UTF-8. Обратите внимание, что то же самое, вероятно, относится ко всем языкам с пользовательскими кодовыми страницами.
объяснение
Строка выше оценивается как:
Ṿv`
эффективно не используется, но существует, чтобы обеспечить представление всех символов.источник
Желе , 14 байт
Полная программа, принимающая (в формате Python) строку ( кодовой страницы Jelly) символов ), которая печатает вывод.
(как монадическая ссылка выдает список списков символов)
Попробуйте онлайн!
Как?
источник
f
иḟ
работают с символами Юникода, потому что именно такие символы внутри строки. Например,”ĿO
возвращает,319
если проверено локально закодировано в JELLY, поэтому он видит,Ŀ
а не C7.f
иḟ
работаю над Unicode тоже, но это проблема здесь? Я передаю ограниченный набор символов Unicode, которые появляются на кодовой странице Jelly (то есть байты, закодированные с использованием этой кодировки, выполняя «Ввод в той же кодировке, что и код»); отфильтруйте их правильно (так как эти введенные байты были закодированы как Unicode), а затем выведите их правильно. Затем я подсчитываю байты кода (выполняя «вход сортируется по символам, а не по байтам» и «самый короткий ответ в байтах для каждого языка выигрывает»).Древесный уголь , 37 байт
Попробуйте онлайн! Объяснение:
Есть два способа цитирования персонажей в Charcoal;
´
цитирует любой отдельный символ, в то время как”y
...”
цитирует любой символ, кроме,”
а также считается отдельной строкой. Выясняется, что накладные расходы, связанные с необходимостью иметь дело,”
означают, что это не в конечном итоге приведет к тому, что игрок в гольф.Зацикливайте символы по очереди, выводя любые совпадающие символы из ввода. Это сортирует ввод.
Выведите все несопоставимые символы на входе.
источник
J , 14 байт
Функция анонимного молчаливого префикса.
Попробуйте онлайн!
]
Аргумент...
i:
Последнее вхождение (не являющиеся членами получают индекс после конца строки поиска) каждого символа в:']/:''i'
персонажи]/:'i
...
/:
использовать это для сортировки:]
Аргументисточник
Java 10,
129100 байт-29 байт по портированию
+c
из @EmbodimentOfIgnorance C # ответа «s .Попробуйте онлайн.
Объяснение:
Примечание: Обычно это дешевле использовать
s.sort((a,b)->Long.compare(a,b))
вместоs.sort(java.util.Comparator.comparing(c->c)
, но в этом случае было бы 11 байт больше:Попробуйте онлайн.
источник
05AB1E ,
312619 байтов-7 байт, вдохновляя подход @ EmbodimentOfIgnorance в своем ответе на C # добавления текущего символа перед индексацией.
Попробуйте онлайн или добавьте строку отладки, чтобы увидеть строки, которые индексируются в .
Объяснение:
источник
PowerShell , 68 байт
Попробуйте онлайн!
источник
sort
вместо этогоsort-object
тоже работает. 2) переменная$b
определена вне области вашего кода.Standard loopholes
требует полного ответа . Для Powershell это означает: любой пользователь может записать код в файл в виде скрипта powershell и запустить его в терминале. Ваш код не работает из файла скрипта. Сожалею.sort
псевдоним не работает в pwsh на Ubuntu 18.04 2) да, это моя ошибка, но я исправил себя, и в результате код стал длиннее, конечно :)code became longer
- это вызов :)$p
добавляется в конец строки с исходным кодом и получает индекс, равный$src.Length
, но, поскольку «их порядок не имеет значения и не должен быть последовательным», это не имеет значения. В этом ответе вся входная строка добавляется в конец строки с исходным кодом.Python 2 , 62 байта
Та же концепция, что и в моем ответе на C #.
Попробуйте онлайн!
источник
\\\'
должно быть\'\\
. Хороший подход, хотя! Сохранено 23 байта в моем ответе Java.Japt , 18 байт
Попытайся
источник
Желе , 26 байт (UTF-8 *)
Попробуйте онлайн!
Принимает ввод как строку в формате Python в 1-м аргументе командной строки.
Уникальные персонажи :
* Примечание: я обнаружил, что это не работает при кодировании в JELLY, так как он сортирует символы UTF-8 вместо своих собственных байтов.
источник