J, 21 14 bayt
Mil ve (dolaylı olarak) Jonathan sayesinde 7 bayt kurtardı!
{.@/:#@":"0,.-
Bu dört zincirlidir:
{.@/: (#@":"0 ,. -)
Girişin üzerinden geçelim 10 27 232 1000. İç çatal üç çataldan oluşur. #@":"0boyutları hesaplar, ,.her bir boyutu negate ( -) üyesiyle düzenler . Giriş için 10 27 232 1000, biz bununla kaldı:
(#@":"0 ,. -) 10 27 232 1000
2 _10
2 _27
3 _232
4 _1000
Şimdi, {.@/:dış diş olarak bizde . Bu, ilk önce ( {.) dyadic sort ( /:) üzerinde monadiktir . Yani, biz dyadiç sonucunun ilk unsurunu alacağız /:. Bu doğru argümanını sol argümanına göre sıralar; bu da bize girdilerimizi verir:
(/: #@":"0 ,. -) 10 27 232 1000
27 10 232 1000
Ardından, {.bize bu listenin ilk öğesini verir ve biz yapılır:
({.@/: #@":"0 ,. -) 10 27 232 1000
27
Eski versiyon
>./@(#~]=<./@])#@":"0
Hala iyileştirmeler üzerinde çalışıyorum. 30'dan golf oynadım ve bence bu yeterince iyi. İlk önce temel parçalara ayıracağım:
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
İşte bu nasıl çalışıyor.
>./@(#~ ] = <./@]) #@":"0
Bu monadik bir tren, ancak bu kısım bir kanca. Fiil >./@(#~ ] = <./@]), ana zincire girdi olarak sol argümanla #@":"0ve doğru argüman olarak tanımlanan boyutlarla çağrılır . Bu, length ( #) over ( @) default format ( ":), yani girişin ( "0) 0 hücrelerine (yani üyelerine) uygulanacak sayısal dize olarak hesaplanır .
Örnek girdiden geçelim 409 12 13.
(#@":"0) 409 12 13
3 2 2
Şimdi iç fiil için >./@(#~ ] = <./@]). Öyle görünüyor >./@(...)etkili bir maksimum değeri (yani, >./bir) ( @içinde ne) (...). İçeriye gelince, bu dört tren, bu beş trene eşdeğer:
[ #~ ] = <./@]
[orijinal argümana ve ]boyut dizisine atıfta bulunur; 409 12 13ve 3 2 2bu örnekte sırasıyla. Doğru çatal, bu durumda <./@]minimum boyutu hesaplar 2. bu durumda ] = <./@], asgari değere eşit bir Boole değerleri dizisidir 0 1 1. Son olarak, [ #~ ...sağ argüman maskesine göre sol argümandan değerler alır. Bu, karşılık gelen elemanların 0düşürüldüğü ve 1tutulduğu anlamına gelir . Öyleyse kaldı 12 13. Son olarak, yukarıdakilere göre, en yüksek sonuç alınır, bize doğru sonucu verir 13ve yapılır.