Учитывая непустой список положительных десятичных целых чисел, выведите наибольшее число из набора чисел с наименьшим количеством цифр.
Список ввода не будет в каком-либо определенном порядке и может содержать повторяющиеся значения.
Примеры:
[1] -> 1
[9] -> 9
[1729] -> 1729
[1, 1] -> 1
[34, 3] -> 3
[38, 39] -> 39
[409, 12, 13] -> 13
[11, 11, 11, 1] -> 1
[11, 11, 11, 11] -> 11
[78, 99, 620, 1] -> 1
[78, 99, 620, 10] -> 99
[78, 99, 620, 100] -> 99
[1, 5, 9, 12, 63, 102] -> 9
[3451, 29820, 2983, 1223, 1337] -> 3451
[738, 2383, 281, 938, 212, 1010] -> 938
Самый короткий код в байтах побеждает.
code-golf
number
arithmetic
Кальвин Хобби
источник
источник
Ответы:
Pyth,
736 байтТестирование
Объяснение:
7-байтовое решение:
Тестирование
Объяснение:
источник
Python 2,
4842 байта-6 байт благодаря @Dennis (используйте,
min
а неsorted
)Все тесты в идеале
Взять минимум списка по (длина, -значение)
источник
min
должен работать вместоsorted
.sorted()[0]
наmin
? Я считаю это тривиальной модификацией вашего оригинального кода.len(`x`)+1./x
для такой же длины. Жаль, что тебе нужно1.
.Желе , 7 байт
Протестируйте его в TryItOnline
или посмотрите все тестовые примеры также в TryItOnline
Как?
источник
05AB1E , 5 байтов
Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн!
источник
Рубин, 34 байта
Смотрите это на eval.in: https://eval.in/643153
источник
MATL , 14 байтов
Попробуйте онлайн!
Объяснение:
источник
Сетчатка ,
2416 байтПопробуйте онлайн! или запустите все тестовые случаи .
Сохранено 8 байтов благодаря Мартину!
Весь тест использует немного более старую версию кода, но алгоритм идентичен. Я обновлю это, чтобы быть ближе, когда у меня будет больше времени.
Трейлинг новой строки является значительным. Сортирует числа по обратному числовому значению, затем сортирует их по количеству цифр. Это оставляет нам наибольшее число с наименьшим количеством цифр в первой позиции, поэтому мы можем просто удалить оставшиеся цифры.
источник
G1`
для последнего этапа.#
. Вы заботитесь только об относительном порядке для данной длины целого числа, и в пределах одной длины лексикографическая сортировка чисел является правильной.\w+
в качестве значения по умолчанию для сортировки, чтобы мне не пришлось так много бороться за создание тестовых наборов;)Mathematica,
3331 байтMinimalBy выбирает все элементы исходного списка ввода с наименьшей оценкой в соответствии с
IntegerLength
, т. Е. С наименьшим количеством цифр; а затем Макс выводит самый большой.Спасибо Мартину Эндеру за то, что он нашел, а затем сохранил 2 байта для меня :)
источник
Perl 6 , 18 байт
Объяснение:
Использование:
источник
Желе , 8 байт
Попробуйте онлайн! или Проверьте все контрольные примеры.
объяснение
источник
JavaScript (ES6), 51
Тест
источник
J
21 21байтСохранено 7 байтов благодаря милям и (косвенно) Джонатану!
Это четыре цепочки:
Давайте пройдемся по входу
10 27 232 1000
. Внутренняя вилка состоит из трех пальцев.#@":"0
вычисляет размеры,,.
объединяет каждый размер с его элементом negated (-
). Для ввода10 27 232 1000
нам осталось это:Теперь у нас есть
{.@/:
внешний зуб. Это монадическое значение first ({.
), а не двоичное sort (/:
). То есть мы возьмем первый элемент результата диадики/:
. Это сортирует свой правый аргумент в соответствии с его левым аргументом, который дает нам для нашего ввода:Затем использование
{.
дает нам первый элемент этого списка, и мы закончили:Старая версия
Все еще работаю над улучшениями. Я играл в гольф с 30, и я думаю, что это достаточно хорошо. Я собираюсь сначала разбить его на основные части:
Вот как это работает.
Это монадический поезд, но эта часть - крюк. Глагол
>./@(#~ ] = <./@])
вызывается с левым аргументом в качестве входа в основную цепочку, а размеры определяются#@":"0
как правый аргумент. Это вычисляется как длина (#
) над (@
) format ) по умолчанию":
, то есть числовое форматирование строк, которое применяется для применения к 0-ячейкам (то есть элементам) input ("0
).Давайте пройдемся по примеру ввода
409 12 13
.Теперь для внутреннего глагола
>./@(#~ ] = <./@])
. Похоже>./@(...)
, что фактически означает максимальное значение (>./
) of (@
), что внутри(...)
. Что касается внутренней части, это четыре поезда, эквивалентные этим пяти поездам:[
ссылается на исходный аргумент и]
ссылается на массив размеров;409 12 13
и3 2 2
соответственно в этом примере. Правильный зубец<./@]
вычисляет минимальный размер,2
в этом случае. в данном случае] = <./@]
это логический массив значений, равный минимуму0 1 1
. Наконец,[ #~ ...
принимает значения из левого аргумента в соответствии с маской правого аргумента. Это означает, что элементы, которые соответствуют0
, удаляются и1
сохраняются. Итак, мы остались с12 13
. Наконец, в соответствии с вышеизложенным, максимум берется, давая нам правильный результат13
, и мы сделали.источник
>./@#~[:(=<./)#@":"0
. Я думаю, что может быть немного больше, чтобы сэкономить{.@/:#@":"0,.-
но входные данные должны быть представлены в виде списка400 12 13
?JavaScript (ES6), 62 байта
источник
постоянный ток, 54 байта
Объяснение:
Пример выполнения: «input.txt» содержит все контрольные примеры в формулировке вопроса
Выход:
источник
Java 7,
112104 байтаДругой подход для сохранения нескольких байтов благодаря @ Barteks2x .
Ungolfed и тестовые случаи:
Попробуй это здесь.
Выход:
источник
bash, awk, сортировка 53 байта
Чтение ввода из стандартного ввода, одно значение в строке
bash and sort,
5857 байтисточник
while
и((
.JavaScript ES6,
807770 байтЯ надеюсь, что я иду в правильном направлении ...
источник
a.map(i=>i.length).sort((a,b)=>a-b)[0]
наMath.min(...a.map(i=>i.length))
?Math.max
:a=>(m=Math.max)(...a.filter(l=>l.length==-m(...a.map(i=>-i.length))))
Похоже, что он экономит только 1 байт.filter
можно заменить на значениеmap
, возвращающее0
значения, которые не прошли тест:a=>(m=Math.max)(...a.map(l=>l.length+m(...a.map(i=>-i.length))?0:l))
Брахилог , 16 байт
Попробуйте онлайн!
объяснение
источник
Haskell, 39 байт
источник
34
чтобы2
.Javascript (ES6),
575453 байтаДля справки, моя предыдущая версия была более ориентирована на математику, но на 1 байт больше:
Контрольные примеры
источник
MATL , 11 байт
Ввод - это вектор-столбец (используется в
;
качестве разделителя), напримерПопробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
Давайте использовать вход
[78; 99; 620; 100]
в качестве примера.источник
Perl,
3837 байтВключает +1 для
-a
Внесите свой вклад в STDIN:
maxmin.pl
:Использует линейную память с наибольшим числом, поэтому не пытайтесь использовать это для слишком больших чисел. Решение без этого недостатка составляет 38 байт:
Все это очень неловко и совсем не чувствует себя оптимально ...
источник
Р,
724136 байтПереписал функцию с новым подходом. Гольф 5 байтов благодаря предложению @bouncyball.
Разъяснение:
Углублено / объяснил:
источник
function
:i=scan();n=nchar(i);max(i[n==min(n)])
n=nchar(i<-scan())
.Bash + coreutils, 58 байт
Формат ввода - одно значение в строке. Предложения по гольфу приветствуются.
Объяснение:
источник
sed q
=head -1
Python 2 - 41 байт
источник
Python 2, 58 байт
источник
Python 3, 56 байт
Использует лямбду в лямбде!
Python 2, 53 байта
То же самое, но с кавычками
источник
Пип , 11 байт
Принимает ввод как аргументы командной строки. Попробуйте онлайн!
Впервые с помощью оператора с
S
направленнымK
взглядом! Как и в Pythonsorted()
, он принимает функцию, которая применяется к каждому элементу итерируемого, а результат используется в качестве ключа сортировки. Вот как работает эта программа:источник
Clojure, 63 байта
как в:
Хотя я уверен, что есть способ сделать его меньше.
источник
PHP, 86 байт
источник