Вызов:
По заданному списку целых чисел сортируйте по убыванию по их наибольшим цифрам. Порядок номеров с одинаковой самой большой цифрой затем сортируется по второй по величине цифре и т. Д.
Мы игнорируем повторяющиеся цифры в числах. И если все цифры в номере одинаковы, порядок этих номеров в списке может быть любым, каким вы захотите.
Пример:
Input: [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
[8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]
Зачем? Вот соответствующие цифры, по которым были отсортированы числа:
Output:
[8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0 ]
Relevant digits they were sorted on:
[[9,8], [9,4], [8,7,6], [8,7,4], [8,7,3], [8,6], [7,3], [7,3], [3,2,1,0], [3,2,1], [0]]
Правила соревнований:
- Мы игнорируем дублирующиеся цифры, поэтому
478
и-7738
будем упорядочивать как478, -7738
, потому что самые большие цифры есть[8,7,4]
и[8,7,3]
, а не[8,7,4]
и[8,7,7,3]
. - Если несколько номеров имеют одинаковые цифры, их порядок может быть любым. Таким образом,
373
и-73
могут быть отсортированы как оба373, -73
или-73, 373
(цифры[7,3]
для обоих этих чисел). - Если номер не содержит больше цифр для проверки, он будет помещен в конце соответствующих номеров. Так
123
и3120
будет отсортировано3120, 123
, так как самые большие цифры[3,2,1]
такие же, но0
идут раньшеnone
. - Можно предположить, что все числа на входе находятся в диапазоне
[-999999,999999]
. - В качестве результата достаточно одного из возможных выходных данных, но вы можете вывести все возможные выходные данные, где подсписки могут быть в любой перестановке, если хотите (хотя я сомневаюсь, что это сохранит байты на любом языке).
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Применяются стандартные правила к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (т.е. TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
Input: [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
[8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]
Input: [11, -312, 902, 23, 321, 2132, 34202, -34, -382]
Possible outputs: [902, -382, 34202, -34, -312, 321, 2132, 23, 11]
[902, -382, 34202, -34, 2132, -312, 321, 23, 11]
etc. The sublist [-312, 321, 2132] can be in any permutation
Input: [9, 44, 2212, 4, 6, 6, 1, 2, 192, 21, 29384, 0]
Possible outputs: [29384, 192, 9, 6, 6, 4, 44, 2212, 21, 2, 1, 0]
[29384, 192, 9, 6, 6, 44, 4, 2212, 21, 2, 1, 0]
etc. The sublists [4, 44] and [2212, 21] can be in any permutation
Input: [44, -88, 9, 233, -3, 14, 101, 77, 555, 67]
Output: [9, -88, 67, 77, 555, 14, 44, 233, -3, 101]
m:g/\d./
на.abs.comb
: tio.run/…Python 2 ,
605554 байта-1 байт благодаря Джонасу Аусявичюсу .
Попробуйте онлайн!
Ungolfed
Попробуйте онлайн!
источник
None
можно заменитьcmp
наsort
функциюPython 2 ,
5860 байтlambda a:sorted(a,key=lambda x:sorted(set(`x`))[::-1])[::-1]
Попробуйте онлайн!
источник
Брахилог , 9 байт
Примечание: из-за того, как упорядочение работает в брахилоге, оно не работает с числом правильно. Это исправлено путем приведения числа к строке (
ṫ
) стоимостью 1 байт.Попробуйте онлайн!
источник
ṫ
(в строку) решает проблему. Упорядочивание цифр по убыванию числа работает следующим образом. Порядок от наименьшего к большему, затем обратный. Проблема заключается в том, что число3120
упорядоченный от наименьшего до наибольшего это0123
который равен ,123
который отменил это321
и не3210
ṫ
). Как упомянул @Arnauld, я думал, что ваш комментарий означает, что ваш текущий код не работает. Возможно, было бы лучше упомянуть это как: « Это могло бы быть 8 байтов, удаляяṫ
(toString), но, к сожалению, это не работает должным образом из-за того, как упорядочение работает в Brachylog. »Pyth,
76 байтов-1 байт от @Sok
Pyth, который использует только печатный ASCII, находится здесь в невыгодном положении. Оптимально закодированные это были бы
6*log(95)/log(256) = 4.927
байты, побеждая 05AB1E.Разъяснение:
Попробуй это здесь .
источник
N
можно опустить, чтобы сохранить 1 байт - все функции лямбда-типа определяют наличие основной лямбда-переменной, если в конце отсутствуют какие-либо аргументы. Примеры включают в себяm
выводd
,f
выводT
,u
выводG
...Желе , 8 байт
Попробуйте онлайн!
Как это работает
источник
Ṛ
реверсами, а не с переворачиваниемU
. Заметьте, однако, что вам не нужнаD
сортировка т.к.Ṣ
, реализована с помощьюiterable(z, make_digits=True)
вызова внутри. Так что былоAṢQṚµÞṚ
на 7.MathGolf ,
76 байтовПопробуйте онлайн! или как набор тестов .
объяснение
Посмотрев на решение Emigna 05AB1E, я обнаружил, что мне не нужен абсолютный оператор (и мой предыдущий ответ был фактически неверным из-за этого оператора). Теперь основное отличие состоит в том, что я преобразую в строку и получаю уникальные символы вместо использования 1-байтового оператора в 05AB1E.
источник
Japt , 12 байт
Все тесты
Объяснение:
источник
Haskell ,
5452 байтаПопробуйте онлайн!
источник
r=reverse
сохраняет два байта. Мы также разрешаем анонимные функции, поэтомуf=
их не нужно считать.f=r$r id.nub.show;r=(reverse.).sortOn
.Stax ,
67 байтЗапустите и отладьте его
источник
-904 8491 478 62778 6458 -7738 -73 373 123 3120 0
вместо предполагаемого8491 -904 62778 478 -7738 6458 373 -73 3120 123 0
или8491 -904 62778 478 -7738 6458 -73 373 3120 123 0
. Этот тестовый пример также используется в примере и для объяснения правил, поэтому я хотел бы взглянуть на это, чтобы лучше понять его. Кажется, вы сортируете только одну большую цифру один раз, без каких-либо других правил?APL (Dyalog Extended) , 19 байт
Попробуйте онлайн!
Исправлено по стоимости +2 байта благодаря OP.
источник
¯7738
помещается раньше478
, но это должно быть после него: цифры[8,7,4]
идут перед цифрами[8,7,3]
.C (gcc) ,
114111109 байтовПопробуйте онлайн!
Объяснение:
f () использует qsort () для сортировки предоставленного массива на месте. Использование функции сравнения c () для сравнения чисел, которая оценивает числа с помощью v (). v () вычисляет большее число, если в параметре присутствуют большие цифры.
[Правка 1] Улучшено на 3 байта. 2 байтовых кредита Кевину. Благодарность
[Правка 2] Улучшено еще 2 байта. Кредиты гастропнеру. Благодарность
источник
n>0
в гольф,n
я думаю, в вашем цикле вашего методаv
.int*a,n
можно сократить доint*a
.for(a=0;n=abs(n);
вместоn=n<0?-n:n;for(a=0;n;
J , 17 байт
Попробуйте онлайн!
Объяснение:
источник
JavaScript (SpiderMonkey) , 68 байт
Спасибо за @Arnauld за напоминание, что SpiderMonkey использует стабильную сортировку, поэтому -4 байта для удаления
||-1
.Попробуйте онлайн!
JavaScript (Node.js) , 72 байта
Попробуйте онлайн!
источник
Java (JDK) , 98 байт
Попробуйте онлайн!
объяснение
Заметка:
Мне нужен способ отображения чисел в любой
0/1
или0/-1
.indexOf
имеет приятное свойство, которое он последовательно возвращает-1
для символов, которые не найдены.-1
вправо на любое число всегда-1
. Любое положительное число, смещенное вправо на достаточно большое число, всегда будет производить0
.Итак, мы здесь:
источник
>>9
вместо использования из->>32
за ограниченного диапазона чисел.Рубин , 55 байт
Попробуйте онлайн!
источник
Perl 5
-nl
, 68 байтПопробуйте онлайн!
источник
Юлия 1,0 , 50 байт
Попробуйте онлайн!
источник
APL (NARS), 366 символов, 732 байта
Для оператора qsort это один трейлинг в APL алгоритма. Я думаю, что в нем используются данные как C с указателями ... Тест
источник
Powershell, 44 байта
Тестовый скрипт:
Выход:
источник
PHP
87 8684 байтаЗапустить с
-nr
или попробуйте онлайн .Заменить
++$i
на$argc
(+1 байт), чтобы подавить уведомление (и сделать-n
устаревшим).сломать
-
«меньше» цифр, поэтому не влияет на сортировку.источник
Common Lisp, 88 байт
Попробуйте онлайн!
Старый добрый многословный Common Lisp!
Объяснение:
источник
C # (интерактивный компилятор Visual C #) ,
7574 байта-1 спасибо @ только для ASCII
Попробуйте онлайн!
В C # строки считаются «перечисляемыми» символами. Я использую это в своих интересах, сначала преобразовав каждое число в строку. Затем LINQ используется для сортировки уникальных символов (цифр) в обратном порядке. Я преобразовываю каждый отсортированный массив символов обратно в строку и использую его в качестве ключа сортировки, чтобы упорядочить весь список.
источник
-
, похоже, порядок их не имеет значения?-
тестового примера № 2,... 321 2132 ...
который кажется неправильным?