Учитывая список строк, сортируйте список как числа, не зная, какая база используется. Значения цифр также неизвестны (возможно, что '1'
> '2'
).
Поскольку значения цифр неизвестны, используйте закон Бенфорда (или закон первой цифры), чтобы определить относительное значение цифр. Для распределений, которые следуют закону Бенфорда, цифры с более низкими значениями появляются в качестве лидирующей цифры чаще, чем цифры с более высокими значениями.
правила
- Это код-гольф
- Список строк может быть получен из источника по вашему выбору (стандартный, переменная, файл, пользователь и т. Д.)
- Строки ограничены символами ASCII.
- Символы, которые не появляются в качестве ведущих символов, имеют самые высокие значения. (предположим, что нулей нет, и сортируйте строго по ведущей частоте.)
- Символы, которые появляются в качестве начальных цифр столько раз, сколько другие символы, имеют одинаковый вес.
пример
несортированный
['c','ca','ac','cc','a','ccc','cx','cz','cy']
Сортировка
['c','a','cc','ca','cz','cy','cx','ac','ccc']
Примечание: В данном примере 'cz'
, 'cy'
и 'cx'
может появиться как 5 - й, 6 - й и 7 - элементы в любом порядке , так как цифры 'x'
, 'y'
и 'z'
имеют одинаковый вес.
Ответы:
Питон, 59
108112Ввод предоставляется в виде списка
a
, и это выражение создает отсортированный список (+2 символа для назначения переменной). Это сортирует список в обратном порядке по отрицательной длине, а затем по частоте.источник
zip
сNone
. Хотя это не работает в Python 3, который будет использоватьitertools.zip_longest
.None
не может сравниться с целыми числами в Python 3, поэтому он все равно потерпит неудачу.fillvalue
должно быть установлено что-то меньшее, чем наименьшее значение.Руби, 65
Сортирует лексикографически по размеру строки, затем по частоте каждого символа, а не по первой цифре.
источник
Ява (261)
Методы принимают массив строк и сортируют массив на месте. Ничего особенного в реализации, но она использует лямбда-выражения, добавленные в Java 8.
источник
Javascript (E6) 147
предел
Значения частоты до 1000000000: для сортировки значения частоты объединяются в большую дополненную строку
Ungolfed
Увеличение Sidenote
X-~
на 1, даже если исходное число X не определено или NaNиспользование
Выход:
["c", "a", "cc", "ca", "cx", "cz", "cy", "ac", "ccc"]
источник