J, 21 14 bytes
Economizou 7 bytes graças a milhas e (indiretamente) Jonathan!
{.@/:#@":"0,.-
Esta é uma cadeia de quatro:
{.@/: (#@":"0 ,. -)
Vamos passar por cima da entrada 10 27 232 1000. O garfo interno consiste em três dentes. #@":"0calcula os tamanhos, ,.concata cada tamanho com seu -membro negado ( ). Para entrada 10 27 232 1000, ficamos com isso:
(#@":"0 ,. -) 10 27 232 1000
2 _10
2 _27
3 _232
4 _1000
Agora, temos {.@/:como dente externo. Isso é monádico primeiro ( {.) sobre tipo diádico ( /:). Ou seja, pegaremos o primeiro elemento do resultado da diádica /:. Isso classifica o argumento correto de acordo com o argumento esquerdo, o que nos fornece como entrada:
(/: #@":"0 ,. -) 10 27 232 1000
27 10 232 1000
Então, usar {.nos fornece o primeiro elemento dessa lista e estamos prontos:
({.@/: #@":"0 ,. -) 10 27 232 1000
27
Versão antiga
>./@(#~]=<./@])#@":"0
Ainda trabalhando em melhorias. Joguei a partir dos 30, e acho que isso é bom o suficiente. Vou primeiro dividi-lo em 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
Veja como isso funciona.
>./@(#~ ] = <./@]) #@":"0
Este é um trem monádico, mas esta parte é um gancho. O verbo >./@(#~ ] = <./@])é chamado com argumento esquerdo como a entrada para a cadeia principal e os tamanhos, definidos como #@":"0, como argumento correto. Isso é calculado como comprimento ( #) sobre ( @) formato padrão ( ":), ou seja, stringificação numérica, que é aplicada às células 0 (ou seja, membros) da entrada ( "0).
Vamos examinar o exemplo de entrada 409 12 13.
(#@":"0) 409 12 13
3 2 2
Agora, o verbo interior >./@(#~ ] = <./@]). Parece >./@(...), o que efetivamente significa o valor máximo ( >./) de ( @) o que está dentro (...). Quanto ao interior, este é um trem de quatro, equivalente a este de cinco trens:
[ #~ ] = <./@]
[refere-se ao argumento original e ]refere-se à matriz de tamanho; 409 12 13e 3 2 2respectivamente neste exemplo. O dente certo,, <./@]calcula o tamanho mínimo, 2neste caso. ] = <./@]é uma matriz booleana de valores igual ao mínimo, 0 1 1neste caso. Por fim, [ #~ ...recebe valores do argumento esquerdo de acordo com a máscara do argumento direito. Isso significa que os elementos correspondentes 0são eliminados e 1retidos. Então ficamos com 12 13. Finalmente, de acordo com o exposto acima, o máximo é obtido, fornecendo o resultado correto de 13e pronto.