J, 21 14 bytes
¡Ahorró 7 bytes gracias a las millas y (indirectamente) a Jonathan!
{.@/:#@":"0,.-
Esta es una cadena de cuatro:
{.@/: (#@":"0 ,. -)
Pasemos por la entrada 10 27 232 1000. La horquilla interna consta de tres dientes. #@":"0calcula los tamaños, ,.concatena cada tamaño con su -miembro negado ( ). Para la entrada 10 27 232 1000, nos queda esto:
(#@":"0 ,. -) 10 27 232 1000
2 _10
2 _27
3 _232
4 _1000
Ahora, tenemos {.@/:como el diente externo. Esto es monádico primero ( {.) sobre dyadic sort ( /:). Es decir, tomaremos el primer elemento del resultado de dyadic /:. Esto ordena su argumento derecho de acuerdo con su argumento izquierdo, que nos da para nuestra entrada:
(/: #@":"0 ,. -) 10 27 232 1000
27 10 232 1000
Luego, usar {.nos da el primer elemento de esa lista, y hemos terminado:
({.@/: #@":"0 ,. -) 10 27 232 1000
27
Versión antigua
>./@(#~]=<./@])#@":"0
Todavía estoy trabajando en mejoras. Jugué golf desde 30, y creo que esto es lo suficientemente bueno. Primero lo dividiré en partes básicas:
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
Así es como funciona esto.
>./@(#~ ] = <./@]) #@":"0
Este es un tren monádico, pero esta parte es un gancho. El verbo >./@(#~ ] = <./@])se llama con argumento izquierdo como entrada a la cadena principal y los tamaños, definidos como #@":"0, como argumento derecho. Esto se calcula como longitud ( #) sobre ( @) formato predeterminado (": ), es decir, cadena de caracteres numérica, que se aplica para aplicar a las celdas 0 (es decir, miembros) de la entrada ( "0).
Veamos la entrada de ejemplo 409 12 13.
(#@":"0) 409 12 13
3 2 2
Ahora para el verbo interior, >./@(#~ ] = <./@]). Parece >./@(...)que significa efectivamente el valor máximo ( >./) de ( @) lo que hay dentro (...). En cuanto al interior, este es un tren de cuatro, equivalente a este tren de cinco:
[ #~ ] = <./@]
[se refiere al argumento original y se ]refiere a la matriz de tamaño; 409 12 13y 3 2 2respectivamente en este ejemplo. El diente derecho <./@], calcula el tamaño mínimo, 2en este caso. ] = <./@]es una matriz booleana de valores igual al mínimo, 0 1 1en este caso. Finalmente, [ #~ ...toma valores del argumento izquierdo de acuerdo con la máscara de argumento derecho. Esto significa que los elementos que corresponden 0se descartan y 1retienen. Entonces nos quedamos con 12 13. Finalmente, de acuerdo con lo anterior, se toma el máximo, dándonos el resultado correcto de 13, y hemos terminado.