Учитывая неотрицательное целое число ( n
), создайте функцию, которая возвращает n
в алфавитном порядке, согласно буквальному написанию каждой цифры в n
.
Примеры:
Input: 101
>> one, zero, one
>> one, one, zero
Output: 110
Input: 31948
>> three, one, nine, four, eight
>> eight, four, nine, one, three
Output: 84913
Input: 5544
>> five, five, four, four
>> five, five, four, four
Output: 5544
Input: 1234567890
Output: 8549176320
Примечание: операции в примере являются только иллюстративными и не должны быть включены в выходные данные. Только отсортированный по алфавиту номер должен быть возвращен.
Это код-гольф, поэтому выигрывает самый короткий код в байтах.
Редактировать: ввод может быть выполнен в любом желаемом формате, который наилучшим образом соответствует вашему языку, и вывод может быть произведен аналогичным образом, возвращаясь из функции или печати. Ввод всегда будет натуральным числом (включая 0) и не будет содержать начальных 0.
Соответствующая запись OEIS (A057846) найдена @DomHastings
00
....849
значит ли это, что мы можем печатать число,849
но не строку"849"
? IMO, это просто громоздкий формат ввода / вывода (плохой!) На вершине совершенно прекрасной задачи.001
выводит? Если они значительны, а результат - нет1
, большинству языков потребуются строки в качестве входных данных для простого факта, что это грубо, непрактично и, как правило, почти невозможно попросить синтаксический анализатор сохранить ведущие нули в основных 10 буквенных числах.Ответы:
Perl 6 ,
3228 байтОбъяснение:
Тест:
источник
05AB1E,
121110 байтРазъяснения
Попробуйте онлайн
Спас 1 байт благодаря Аднану
источник
JavaScript (ES6), 54
Редактировать тот же счетчик символов, но избегая глобальной переменной
z
Ввод / вывод в виде строк
Тест
источник
z
...Haskell,
62 5144 байтаКак и предполагал @nimi, использование понимания списка короче, чем составление функций:
Для справки моя версия:
Бессмысленная версия немного длиннее:
Просто: отфильтруйте цифры в правильном порядке и затем объедините результат.
источник
Пиф,
1210 байтНе уверен, что это может быть в гольфе дальше. Входные данные должны быть заключены в кавычки.
2 байта сохранены благодаря @isaacg!
В питоническом псевдокоде:
Проверьте это здесь .
источник
549176320
наC" »Ä\0
\0
. Это, вероятно, проблема, с которой вы столкнулись.Perl, 37 байт
36-байтовый код + 1-байтовая командная строка (-F)
Пример использования:
источник
MATL , 19 байт
Попробуйте онлайн!
объяснение
источник
Желе, 11 байт
Попробуй это здесь.
объяснение
источник
Mathematica
35 7847 байт31 байтов сэкономлено благодаря предложению LIAMnYP!
IntegerDigits
разбивает номер на цифры, которые затем сортируются в соответствии с их именами на английском языке.FromDigits
собирает цифры в число base-10.8549176320
источник
FromDigits@SortBy[IntegerName]@IntegerDigits@#&
Interpreter
мучительно медленно, так что это дополнительный бонус.С
142141117Pass параметр как
long long *
кf()
; функция изменяет параметр:long long
необходимо, так как последний контрольный пример переполненint
при сортировке.источник
Python 2 - 95 байт
Попытка дальнейшего игры в гольф ... Я думаю, что линия 2 не нужна, и это может стать 1 лямбда.
РЕДАКТИРОВАТЬ: 49 символов версия в комментариях, спасибо xnor и vaultah за помощь.
источник
lambda n:''.join(sorted(`n`,key="8549176320".find))
8
так чтоfind
дает -1.lambda n: "".join(sorted(n,key="549176320".find))
, что действительно похоже на то, что вы предложили, vaultah. Вы должны опубликовать это!- Oracle 11 (SQL): 164 байта
Длинная форма и объяснение
Получите входные данные в качестве параметра для скрипта:
«создавать» строки с помощью connect by в зависимости от длины ввода:
Вырвать каждую цифру из строки для каждой позиции:
Преобразуйте цифру в юлианскую дату и обратно в Char, чтобы получить орфографию:
Проверка на ноль - особый случай.
Используйте функцию LISTAGG для объединения строк обратно в единый список строк, разделенных запятыми, упорядоченные по алфавиту
Всегда весело пытаться настроить SQL для таких вещей, как это ... :) действительно проверяет мои знания о Bugger ...
источник
Рубин, 60 байт
источник
Ракетка,
142130 байтИз них конверсий
больше , чемпочти половина длины (7664 байт).источник
(+ 1 answer)
для ракетки!TSQL, 260 байт
Используется обратная сортировка пузырьков, чтобы избежать ссылки на длину, чтобы сэкономить несколько байтов
Golfed:
Ungolfed:
Настаивая на использовании целочисленных типов в качестве входных и выходных добавлено 37 байтов
источник
DECLARE @ varchar(99)=101
0.o101
превращается в строку автоматически?stuff
это объективно ужасное имя функции.squash
илиshove
илиpack
было бы лучше: Pstuff
потому что это то, что делают функции: они делают вещи. Тогда ваш код может выглядеть следующим образомstuff(stuff(4, 5, stuff), stuff(stuff()).(stuff())()); stuff(stuff)
ClojureScript, 45 байт
Использует некоторые странные преобразования строк-> int из-за утечки Javascript, поэтому это недопустимый Clojure.
источник
Жар-птица, 317 байт
Golfed:
Ungolfed:
В Firebird нет разделенной функциональности. Вместо этого я создал рекурсивный запрос, чтобы получить следующий символ снова и снова. Затем снова выберите их при сортировке по нашему порядку. Наконец, объедините эти результаты обратно в список. Переопределите разделитель запятой по умолчанию пустым. Я мог бы сэкономить 11 байтов, создав вместо этого новую фиктивную таблицу,
rdb$database
но я подумал, что это может противоречить правилам.источник
ZX Spectum, машинный код,
5348474544 байтаconvtab defb 249 ; zero defb 244 ; one defb 248 ; two defb 247 ; three defb 2+205 ; four defb 1+205 ; five defb 246 ; six defb 245 ; seven ; defb 0 ; eight ; defb 3 ; nine ; last 2 conversions hidden in call-command
источник
Фактор, 128
Ура для встроенных! : D
источник
PHP, 126 байт
Насколько я знаю, в php нет встроенных функций, которые действительно могли бы помочь с этим (лучшее, что я мог сделать, используя usort (str_split ()), было на 5 байт больше), поэтому единственное, что мне нравится в этом ответе, это игры с $ i, чтобы сэкономить пару байтов на иттерации.
источник
APL, 23 байта
Объяснение:
n←⍕⍵
: получить строковое представлениеn
и сохранить его вn
'8549176320'⍋
: найти перестановкуn
такого родаn
заданном порядке8549176320
.n[
...]
: переупорядочитьn
по этой перестановке⍎
: оценить результат (превратить его в число)источник
⍎
и⍕
. Преобразовать в tradfn удаления{
и}
и подставив⍞
для⍵
. Наконец, удалите0
как не перечисленные сортировки в конце:n['854917632'⍋n←⍞]
Clojure, 53 байта
Ну, идея понимания списка из решения Haskell кажется самой короткой:
Мой оригинальный подход на 1 байт длиннее:
Вы можете увидеть обе функции онлайн здесь: https://ideone.com/afac5n
источник
Common Lisp, 104
Ungolfed
Преобразуйте целое число как строку, сортируйте символы, используя
string<=
сравнение, используя пользовательскую:key
функцию, которая преобразует данный символ как английское представление числового значения, которое оно представляет. Обычно я бы не использовал ключевую функцию, которая выполняет столько же, сколько эта, но стоит в байтах дешевле, чем декорирование / сортировка / декорирование.источник
Python 3, 234 байта
Это прямой перевод моего факторного ответа , просто для удовольствия.
Семантика оценки «ленивых» объектов карт и почтовых индексов является наиболее тонким фрагментом подлинных экскрементов лошади во вселенной. Иногда
s = map(f, x)
не позволяетs
использовать должным образом или вообще.источник
Пайк, 14 байт
Попробуй это здесь!
источник
C, 80 байтов
Принимает строку, содержащую число в базе 10, и печатает в
stdio
:источник
Python 2.7.11, 67 байт
Принимает строку в качестве входных данных и выводит строку.
источник
Python 3, 74 байта
источник
PHP , 107 байт
Попробуйте онлайн!
Использует пользовательскую функцию сравнения для настройки порядка сортировки.
Выход
источник