J, 21 14 bytes
Saved 7 bytes thanks to miles and (indirectly) Jonathan!
{.@/:#@":"0,.-
This is a four-chain:
{.@/: (#@":"0 ,. -)
Давайте пройдемося над входом 10 27 232 1000. Внутрішня вилка складається з трьох зубців. #@":"0обчислює розміри, ,.стискає кожен розмір з його запереченим ( -) членом. Для введення 10 27 232 1000нам залишається це:
(#@":"0 ,. -) 10 27 232 1000
2 _10
2 _27
3 _232
4 _1000
Тепер ми маємо {.@/:як зовнішній зубчик. Це монадичний перший ( {.) над діадичним сортом ( /:). Тобто ми візьмемо перший елемент результату діадику /:. Це сортує його правий аргумент відповідно до лівого аргументу, який дає нам наш внесок:
(/: #@":"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правий аргумент. Це обчислюється як формат за замовчуванням ( #) над ( @) за замовчуванням ( ":), тобто числова строфікація, яка робиться для застосування до 0-комірок (тобто членів) вводу ( "0).
Давайте пройдемося по прикладу введення 409 12 13.
(#@":"0) 409 12 13
3 2 2
Тепер для внутрішнього дієслова >./@(#~ ] = <./@]). Це схоже >./@(...), що фактично означає максимальне значення ( >./) того, @що знаходиться всередині (...). Щодо внутрішньої сторони, це чотирипоїзд, еквівалентний цьому п’ятипотягу:
[ #~ ] = <./@]
[посилається на вихідний аргумент і ]відноситься до масиву розмірів; 409 12 13і 3 2 2відповідно в цьому прикладі. Правий зубчик, <./@]обчислює мінімальний розмір, 2в цьому випадку. ] = <./@]- булевий масив значень, рівний мінімуму, 0 1 1в цьому випадку. Нарешті, [ #~ ...приймає значення з лівого аргументу відповідно до маски правого аргументу. Це означає, що елементи, які відповідають 0, скидаються та 1зберігаються. Отже, ми залишилися 12 13. Нарешті, відповідно до вищесказаного, макс приймається, даючи нам правильний результат 13, і ми закінчили.