J 21 21 байт
Сохранено 7 байтов благодаря милям и (косвенно) Джонатану!
{.@/:#@":"0,.-
Это четыре цепочки:
{.@/: (#@":"0 ,. -)
Давайте пройдемся по входу 10 27 232 1000. Внутренняя вилка состоит из трех пальцев. #@":"0вычисляет размеры, ,.объединяет каждый размер с его элементом negated ( -). Для ввода 10 27 232 1000нам осталось это:
(#@":"0 ,. -) 10 27 232 1000
2 _10
2 _27
3 _232
4 _1000
Теперь у нас есть {.@/:внешний зуб. Это монадическое значение first ( {.), а не двоичное sort ( /:). То есть мы возьмем первый элемент результата диадики /:. Это сортирует свой правый аргумент в соответствии с его левым аргументом, который дает нам для нашего ввода:
(/: #@":"0 ,. -) 10 27 232 1000
27 10 232 1000
Затем использование {.дает нам первый элемент этого списка, и мы закончили:
({.@/: #@":"0 ,. -) 10 27 232 1000
27
Старая версия
>./@(#~]=<./@])#@":"0
Все еще работаю над улучшениями. Я играл в гольф с 30, и я думаю, что это достаточно хорошо. Я собираюсь сначала разбить его на основные части:
size =: #@":"0
max =: >./
min =: <./
over =: @
right =: ]
left =: [
selectMin =: #~ right = min over right
f =: max over selectMin size
f 3 4 5
5
f 3 4 53
4
f 343 42 53
53
Вот как это работает.
>./@(#~ ] = <./@]) #@":"0
Это монадический поезд, но эта часть - крюк. Глагол >./@(#~ ] = <./@])вызывается с левым аргументом в качестве входа в основную цепочку, а размеры определяются #@":"0как правый аргумент. Это вычисляется как длина ( #) над (@ ) format ) по умолчанию ":, то есть числовое форматирование строк, которое применяется для применения к 0-ячейкам (то есть элементам) input ( "0).
Давайте пройдемся по примеру ввода 409 12 13 .
(#@":"0) 409 12 13
3 2 2
Теперь для внутреннего глагола >./@(#~ ] = <./@]). Похоже >./@(...), что фактически означает максимальное значение ( >./) of ( @), что внутри (...). Что касается внутренней части, это четыре поезда, эквивалентные этим пяти поездам:
[ #~ ] = <./@]
[ссылается на исходный аргумент и ]ссылается на массив размеров; 409 12 13и 3 2 2соответственно в этом примере. Правильный зубец <./@]вычисляет минимальный размер, 2в этом случае. в данном случае ] = <./@]это логический массив значений, равный минимуму 0 1 1. Наконец, [ #~ ...принимает значения из левого аргумента в соответствии с маской правого аргумента. Это означает, что элементы, которые соответствуют 0, удаляются и 1сохраняются. Итак, мы остались с 12 13. Наконец, в соответствии с вышеизложенным, максимум берется, давая нам правильный результат 13, и мы сделали.