Вдохновленный злополучной сортировкой чисел без чисел без использования массива , но я подумал, что это делает гольф лучше, чем SO вопрос.
Учитывая положительное целое число, сортируйте цифры в этом целом числе.
Самый низкий балл побеждает!
- Начните с 0 баллов.
- Добавьте одно очко за каждого персонажа.
- Добавьте 20 точек для каждого массива, который вы используете.
- Добавьте 10 баллов за каждую многосимвольную строку в вашем коде. (За исключением начального ввода, если он преобразуется в целое число без каких-либо других операций над ним.)
- Добавьте 32 балла, если максимальное количество цифр, которое может обработать ваша программа, ограничено вашей программой (в отличие от машины).
- Вычтите 10 баллов, если ваш код может изменить направление сортировки при заданном другом аргументе (что угодно, но, например, 0 для сортировки по убыванию и 1 для возрастания.)
Каждый язык индивидуален, но идея состоит в том, чтобы избежать любого вида взлома с многозначными числами.
Пример:
Ввод : 52146729
Выход : 97654221 или 12245679
Примечания:
- Используйте любые встроенные возможности сортировки, которые обеспечивает ваш язык программирования, но если эта функция сортировки включает строки или массивы, возьмите штраф!
- Вы можете написать решение как функцию, которая принимает целое число напрямую, или как программу, которая принимает аргумент из argv, файла или потока и преобразует его в целое число. До тех пор, пока вы немедленно преобразуете его в целое число и отбрасываете исходный ввод char * без каких-либо дополнительных операций с ним, штраф не применяется.
- Штрафы применяются не только к строковым литералам в тексте вашей программы, но и к любой части функции вашей программы, которая может вводить или выводить строку или итерацию. Например, JavaScript
String.prototype.split
имеет по крайней мере одну строку в качестве input (this
) и Array в качестве вывода, поэтому +30 за использование этого. - Я пытался заставить эти правила руководствоваться принципом разработки алгоритма, а не начальным / конечным вводом / выводом (следовательно, примечание № 2). Я не думаю, что наказание должно применяться,
int(input())
даже еслиinput
подпись говорит, что она возвращает строку, если это выражение является начальной точкой входа в программу. Аналогично, если конечный результат программы являетсяprint(x)
иx
должен быть строкой, штраф не применяется к операции приведения строки последнего шага. Несмотря на все сказанное, я явно никогда не говорил, что это должна быть программа или откуда ввод / вывод. Функция, которая принимаетint
и возвращает,int
будет служить, и не будет страдать от этих двусмысленностей.
" "
рассчитывать как мульти строку символов? Один персонаж не будет считаться «мульти» ...