En az sayı ile en büyük sayıyı yazdır


37

Boş bir pozitif ondalık tamsayı listesi verildiğinde, en büyük rakamı en az basamaklı sayı kümesinden alın.

Giriş listesi belirli bir sırada olmayacak ve tekrarlanan değerler içerebilir.

Örnekler:

[1] -> 1
[9] -> 9
[1729] -> 1729
[1, 1] -> 1
[34, 3] -> 3
[38, 39] -> 39
[409, 12, 13] -> 13
[11, 11, 11, 1] -> 1
[11, 11, 11, 11] -> 11
[78, 99, 620, 1] -> 1
[78, 99, 620, 10] -> 99
[78, 99, 620, 100] -> 99
[1, 5, 9, 12, 63, 102] -> 9
[3451, 29820, 2983, 1223, 1337] -> 3451
[738, 2383, 281, 938, 212, 1010] -> 938

Bayt cinsinden en kısa kod kazanır.


Giriş numaraları ayrı satırlarda olabilir mi?
seshoumara

@ seshoumara Kulağa mantıklı geliyor, evet.
Calvin'in Hobileri

Yanıtlar:


13

Pyth, 7 3 6 bayt

eS.ml`

Test odası

Açıklama:

e      Still grab the last element
 S      Still sort
  .ml`   But prefilter the list for those with the (m)inimum length.

7 byte çözüm:

eSh.gl`

Test odası

Açıklama:

   .g   Group items in (implicit) input by:
     l  The length of
      ` their representation
  h     Get those with the shortest length
 S      Sort the resulting list
e       and grab the last (i.e. largest) element

6

Python 2, 48 42 bayt

@Dennis sayesinde -6 bayt (kullanım minyerine sorted)

lambda l:min(l,key=lambda x:(len(`x`),-x))

Tüm test vakaları ideone altında

Listenin minimumunu (uzunluk, -value) al


1
minyerine çalışmalı sorted.
Dennis,

@Dennis, aman Tanrım - teşekkürler! Muhtemelen kendin bunu yayınlayacak kadar farklı.
Jonathan Allan

Değişim sorted()[0]için min? Orijinal kodunuzda önemsiz bir değişiklik olduğunu düşünüyorum.
Dennis,

Orada da len(`x`)+1./xaynı süre boyunca. Çok ihtiyacın var 1..
xnor

Bu benim bulduğumdan daha kısa. Aferin!
mbomb007 16:16

6

Jöle , 7 bayt

DL,NµÞḢ

En Test edin TryItOnline
Ya da aynı zamanda tüm test durumları bkz TryItOnline

Nasıl?

DL,NµÞḢ - Main link takes one argument, the list, e.g. [738, 2383, 281, 938, 212, 1010]
D       - convert to decimal, e.g. [[7,3,8],[2,3,8,3],[2,8,1],[9,3,8],[2,1,2],[1,0,1,0]]
 L      - length, e.g. [3,4,3,3,3,4]
   N    - negate, e.g [-738, -2383, -281, -938, -212, -1010]
  ,     - pair, e.g. [[3,-738],[4,-2383],[3,-281],[3,-938],[3,-212],[4,-1010]]
    µ   - make a monadic chain
     Þ  - sort the input by that monadic function, e.g [938,738,281,212,2383,1010]
          (the lists in the example are not created, but we sort over the values shown)
      Ḣ - pop and return the first element, e.g. 938

1
Sıralama harika kullanımı!
mil

senin yolun hala :) ilham @miles
Jonathan Allan

5

05AB1E , 5 bayt

Kod:

({é¬(

Açıklama:

(      # Negate the list, e.g. [22, 33, 4] -> [-22, -33, -4]
 {     # Sort, e.g. [-22, -33, -4] -> [-33, -22, -4]
  é    # Sort by length, e.g. [-33, -22, -4] -> [-4, -22, -33]
   ¬   # Get the first element.
    (  # And negate that.

CP-1252 kodlamasını kullanır . Çevrimiçi deneyin!



4

MATL , 14 bayt

10&YlktX<=G*X>

Çevrimiçi deneyin!

Açıklama:

  &Yl           % Log
10              % Base 10
     kt         % Floor and duplicate
       X<       % Find the smallest element
         =      % Filter out elements that do not equal the smallest element
          G     % Push the input again
           *    % Multiply (this sets numbers that do not have the fewest digits to 0)
            X>  % And take the maximum

4

retina ,24 16 bayt

O ^ `
O $ # `
$ 0,0
G1`

Çevrimiçi deneyin! veya tüm test durumlarını çalıştırın .

Martin sayesinde 8 byte kurtarıldı!

Tüm testler kodun biraz daha eski bir sürümünü kullanıyor, ancak algoritma aynı. Daha fazla zamanım olduğunda daha yakın olması için güncelleyeceğim.

Sondaki yeni satır önemli. Sayıları ters sayısal değere göre sıralar, ardından sayılara göre sıralar. Bu bizi ilk sayıdaki en az haneye sahip en büyük sayıya sahip bırakır, bu yüzden sadece kalan haneleri silebiliriz.


Girdiyi ayrılmış-ayrılmış olarak yaparsanız, regex'i her iki sıralama aşamasından çıkartabilir ve ardından G1`son aşama için kullanabilirsiniz .
Martin Ender

Ayrıca, ilk aşamada gerek yok #. Belirli bir tamsayı uzunluğu için sadece göreceli sırayı önemsiyorsunuz ve bir uzunluk içinde sayıların sözlük bilgisi sıralaması doğru.
Martin Ender

@MartinEnder Teşekkürler! Her iki ipucunu da ekledim. Ben önerdi gerekirdi \w+yolu ben test paketleri yapmak kadar mücadeleye ihtiyaç olmaz, sıralama için varsayılan olarak;)
FryAmTheEggman

: İşte bu size daha fazla golf için herhangi bir fikir verir durumda, başka 16 retina.tryitonline.net/...
Martin Ender

4

Mathematica, 33 31 bayt

Max@MinimalBy[#,IntegerLength]&

MinimalBy, orijinal giriş listesinin tüm öğelerini IntegerLength, örneğin en küçük basamak sayısına göre en küçük puanla seçer ; ve sonra Max en büyüğünü çıkarır.

Martin Ender'e bulup kaydettiğim için teşekkür ederim, benim için 2 bayt :)


4

Perl 6 , 18 bayt

*.min:{.chars,-$_}

Açıklama:

*\        # Whatever lambda
.min:     # find the minimum using

{         # bare block lambda with implicit parameter 「$_」

  .chars, # number of characters first ( implicit method call on 「$_」 )
  -$_     # then negative of the value in case of a tie
}

Kullanımı:

say [738, 2383, 281, 938, 212, 1010].&( *.min:{.chars,-$_} ); # 938

my &code = *.min:{.chars,-$_}

say code [78, 99, 620, 10]; # 99

3

Jöle , 8 bayt

DL€İMị¹Ṁ

Çevrimiçi deneyin! veya Tüm test durumlarını doğrulayın.

açıklama

DL€İMị¹Ṁ  Input: list A
D         Convert each integer to a list of base 10 digits
 L€       Get the length of each list (number of digits of each)
   İ      Take the reciprocal of each
    M     Get the indices of the maximal values
      ¹   Get A
     ị    Select the values at those indices from A
       Ṁ  Find the maximum and return

Bu 8 bayt nasıl? Bu karakterlerin tümü ASCII'ye uygun mu?
Federico Poloni

1
@FedericoPoloni Evet, başka bir kod sayfasında olmasına rağmen uygunlar .
Outgolfer Erik

3

JavaScript (ES6), 51

l=>l.sort((a,b)=>(a+l).length-(b+l).length||b-a)[0]

Ölçek

f=l=>l.sort((a,b)=>(a+l).length-(b+l).length||b-a)[0]

;[
 [[1], 1]
,[[9], 9]
,[[1729], 1729]
,[[1, 1], 1]
,[[34, 3], 3]
,[[38, 39], 39]
,[[409, 12, 13], 13]
,[[11, 11, 11, 1], 1]
,[[11, 11, 11, 11], 11]
,[[78, 99, 620, 1], 1]
,[[78, 99, 620, 10], 99]
,[[78, 99, 620, 100], 99]
,[[1, 5, 9, 12, 63, 102], 9]
,[[3451, 29820, 2983, 1223, 1337], 3451]
,[[738, 2383, 281, 938, 212, 1010], 938]
].forEach(([l,x])=>{
  var r=f(l)
  console.log(r==x?'OK':'KO',l+' -> '+r)
})  


3

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.


Bazı karışma artı bir kanca bir bayt kurtarabilir >./@#~[:(=<./)#@":"0. Bence daha da fazla tasarruf olabileceğini düşünüyorum
miles

@miles XD Ben sadece açıklama yazmayı bitirdim. Pekala, bu güzelliğe bir bakayım ...
Conor O'Brien

Jonathan daha iyi bir yöntem buldu. Biz J, onun 14 bayt dönüştürmek ise {.@/:#@":"0,.-ancak giriş liste halinde şekillendirilecek vardır
mil

@miles "liste şeklinde"? Yani demek 400 12 13istiyorsun?
Conor O'Brien,

2

JavaScript (ES6), 62 bayt

var solution =

a=>a.map(n=>(l=`${n}`.length)>a?l>a+1|n<r?0:r=n:(a=l-1,r=n))|r

;document.write('<pre>' + `
[1] -> 1
[9] -> 9
[1729] -> 1729
[1, 1] -> 1
[34, 3] -> 3
[38, 39] -> 39
[409, 12, 13] -> 13
[11, 11, 11, 1] -> 1
[11, 11, 11, 11] -> 11
[78, 99, 620, 1] -> 1
[78, 99, 620, 10] -> 99
[78, 99, 620, 100] -> 99
[1, 5, 9, 12, 63, 102] -> 9
[3451, 29820, 2983, 1223, 1337] -> 3451
[738, 2383, 281, 938, 212, 1010] -> 938
`.split('\n').slice(1, -1).map(c =>
  c + ', result: ' + solution(eval(c.slice(0, c.indexOf('->'))))
).join('\n'))


2

dc, 54 bayt

?dZsL0sN[dsNdZsL]su[dlN<u]sU[dZlL=UdZlL>ukz0<R]dsRxlNp

Açıklama:

?dZsL0sN                  # read input, initialize L (length) and N (number)
[dsNdZsL]su               # macro (function) 'u' updates the values of L and N
[dlN<u]sU                 # macro 'U' calls 'u' if N < curr_nr
[dZlL=U dZlL>ukz0<R]dsR   # macro 'R' is a loop that calls 'U' if L == curr_nr_len
                          #or 'u' if L > curr_nr_len
xlNp                      # the main: call 'R' and print N at the end

Örnek çalıştır: 'input.txt', soru ifadesindeki tüm test durumlarını içerir

while read list;do echo "$list -> "$(dc -f program.dc <<< $list);done < input.txt

Çıktı:

1 -> 1
9 -> 9
1729 -> 1729
1 1 -> 1
34 3 -> 3
38 39 -> 39
409 12 13 -> 13
11 11 11 1 -> 1
11 11 11 11 -> 11
78 99 620 1 -> 1
78 99 620 10 -> 99
78 99 620 100 -> 99
1 5 9 12 63 102 -> 9
3451 29820 2983 1223 1337 -> 3451
738 2383 281 938 212 1010 -> 938

2

Java 7, 112 104 bayt

int c(int[]a){int i=a[0],j;for(int b:a)i=(j=(i+"").length()-(b+"").length())>0?b:b>i&j==0?b:i;return i;}

@ Barteks2x sayesinde birden fazla baytı kurtarmak için farklı yaklaşımlar .

Ungolfed ve test durumları:

Burada dene.

class M{
  static int c(int[] a){
    int i = a[0],
        j;
    for(int b : a){
      i = (j = (i+"").length() - (b+"").length()) > 0
           ? b
           : b > i & j == 0
              ? b
              : i;
    }
    return i;
  }

  public static void main(String[] a){
    System.out.println(c(new int[]{ 1 }));
    System.out.println(c(new int[]{ 9 }));
    System.out.println(c(new int[]{ 1729 }));
    System.out.println(c(new int[]{ 1, 1 }));
    System.out.println(c(new int[]{ 34, 3 }));
    System.out.println(c(new int[]{ 409, 12, 13 }));
    System.out.println(c(new int[]{ 11, 11, 11, 1 }));
    System.out.println(c(new int[]{ 11, 11, 11, 11 }));
    System.out.println(c(new int[]{ 78, 99, 620, 1 }));
    System.out.println(c(new int[]{ 78, 99, 620, 100 }));
    System.out.println(c(new int[]{ 1, 5, 9, 12, 63, 102 }));
    System.out.println(c(new int[]{ 3451, 29820, 2983, 1223, 1337 }));
    System.out.println(c(new int[]{ 738, 2383, 281, 938, 212, 1010 }));
  }
}

Çıktı:

1
9
1729
1
3
13
1
11
1
99
9
3451
938

1
kısa versiyon: int c (int [] a) {int i = a [0], j; (int b: a) için i = (j = (i + ""). uzunluk () - (b + ""). uzunluk ())> 0? b: b> i & j == 0? b: i; i;}
barteks2x 17:16

@ Barteks2x Teşekkürler, düzenledim.
Kevin Cruijssen

2

bash, awk, 53 bayt sırala

set `awk '{print $0,length($0)}'|sort -rnk2n`;echo $1

Stdin'den okuma girişi, satır başına bir değer

bash ve sort, 58 57 bayt

set `sort -n`;while((${#2}==${#1}));do shift;done;echo $1


938 yerine 2383 verilen son örnek için işe yaramaz
Archemar

@ Archemar üzgünüm soruyu yanlış anladım, şimdi düzeltildi
Emmanuel

whileVe arasındaki boşluğu kaldırabilirsiniz ((.
seshoumara 17:16

1

JavaScript ES6, 80 77 70 bayt

a=>Math.max(...a.filter(l=>l.length==Math.min(...a.map(i=>i.length))))

Umarım doğru yöne gidiyorum ...


Değiştirmek Could a.map(i=>i.length).sort((a,b)=>a-b)[0]ile Math.min(...a.map(i=>i.length))?
user81655 16:16

@ user81655 yup yapabilirim. Bu düzenlemeyi yaptığımı sanıyordum ama görünüşe göre yapmadım
Downgoat

Ayrıca, minimum seviyeyi olumsuzlamayı da deneyerek tekrar kullanabilirsiniz Math.max: a=>(m=Math.max)(...a.filter(l=>l.length==-m(...a.map(i=>-i.length))))Sadece 1 byte tasarruf sağlıyor.
user81655 16:16

Başka byte için filterbir değiştirilebilir mapolduğunu döndürür 0testini geçmeyen değerler için:a=>(m=Math.max)(...a.map(l=>l.length+m(...a.map(i=>-i.length))?0:l))
user81655

1

Brachylog , 16 bayt

or:@]feL:la#=,Lh

Çevrimiçi deneyin!

açıklama

or                 Sort the list in descending order.
  :@]f             Find all suffixes of the list.
      eL           Take one suffix L of the list.
        :la        Apply length to all numbers in that suffix.
           #=,     All lengths must be equal.
              Lh   Output is the first element of L.

1

Haskell, 39 bayt

snd.maximum.map((0-).length.show>>=(,))

Bu tercih, çalışmıyor 34için 2.
xnor

Oh teşekkürler. Yeniden düşünmek zorundayım ..
Damien

Şimdi daha iyi çalışıyor!
Damien

1

Javascript (ES6), 57 54 53 bayt

l=>l.sort((a,b)=>(s=a=>1/a+`${a}`.length)(a)-s(b))[0]

Kayıt için, önceki sürüm daha matematik odaklıydı ancak 1 bayt daha büyüktü:

l=>l.sort((a,b)=>(s=a=>1/a-~Math.log10(a))(a)-s(b))[0]

Test durumları

let f =
l=>l.sort((a,b)=>(s=a=>1/a+`${a}`.length)(a)-s(b))[0]

console.log(f([1]));                              //  -> 1
console.log(f([9]));                              //  -> 9
console.log(f([1729]));                           //  -> 1729
console.log(f([1, 1]));                           //  -> 1
console.log(f([34, 3]));                          //  -> 3
console.log(f([38, 39]));                         //  -> 39
console.log(f([409, 12, 13]));                    //  -> 13
console.log(f([11, 11, 11, 1]));                  //  -> 1
console.log(f([11, 11, 11, 11]));                 //  -> 11
console.log(f([78, 99, 620, 1]));                 //  -> 1
console.log(f([78, 99, 620, 10]));                //  -> 99
console.log(f([78, 99, 620, 100]));               //  -> 99
console.log(f([1, 5, 9, 12, 63, 102]));           //  -> 9
console.log(f([3451, 29820, 2983, 1223, 1337]));  //  -> 3451
console.log(f([738, 2383, 281, 938, 212, 1010])); //  -> 938


1

MATL , 11 bayt

tV48\&XS0))

Giriş, sütun gibi bir vektördür ( ;ayırıcı olarak kullanılır )

[78; 99; 620; 100]

Çevrimiçi deneyin! Veya tüm test durumlarını doğrulayın .

açıklama

Girdiyi [78; 99; 620; 100]örnek olarak kullanalım .

t      % Input column vector implicitly. Duplicate
       %   STACK: [78; 99; 620; 100], [78; 99; 620; 100]
V      % Convert to string. Each number is a row, left-padded with spaces
       %   STACK: [78; 99; 620; 100], [' 78'; ' 99'; '620'; '100']
48\    % Modulo 48. This transforms each digit into the corresponding number,
       % and space into 32. Thus space becomes the largest "digit"
       %   STACK: [78; 99; 620; 100], [32 7 8; 32 9 9; 6 2 0; 1 0 0]
&XS    % Sort rows in lexicographical order, and push the indices of the sorting
       %   STACK: [78; 99; 620; 100], [4; 3; 1; 2]
0)     % Get last value
       %   STACK: [78; 99; 620; 100], 2
)      % Index
       %   STACK: 99
       % Implicitly display

1
Açıklamasında yığın durumlarını görmek güzel!
kusur

1

Perl, 38 37 bayt

İçin +1 içerir -a

STDIN'e giriş verin:

perl -M5.010 maxmin.pl <<< "3451 29820 2983 1223 1337"

maxmin.pl:

#!/usr/bin/perl -a
\$G[99-y///c][$_]for@F;say$#{$G[-1]}

Belleği en büyük sayıdaki doğrusal kullanır, bu yüzden bunu çok büyük sayılarda denemeyin. Bu kusur olmadan bir çözüm 38 bayttır:

#!/usr/bin/perl -p
$.++until$\=(sort/\b\S{$.}\b/g)[-1]}{

Bunların hepsi çok garip ve en uygun hissetmiyorum ...


1

R, 72 41 36 bayt

Fonksiyonu yeni bir yaklaşımla yeniden yazdı. @Bouncyball bir öneri sayesinde 5 bayt golf.

n=nchar(i<-scan());max(i[n==min(n)])

Açıklaması:

        i<-scan()       # Read input from stdin
n=nchar(         );     # Count the number of characters in each number in i
max(             )      # Return the maximum of the set where
    i[n==min(n)]        # the number of characters is the minimum number of characters.

function(i){while(1){if(length(o<-i[nchar(i)==T]))return(max(o));T=T+1}}

Girintili / açıkladı:

function(i){               # Take an input i
  while(1){                # Do the following continuously:
    if(length(
        o<-i[nchar(i)==T]) # Define o to be the subset of i with numbers of length T,
      )                    # where T is 1 (a built-in!).
                           # We take the length of this subset (its size), and then pass
                           # it to if(). Thanks to weak typing, this numeric is converted
                           # to a logical value. When this occurs, zero evaluates to FALSE
                           # and any non-zero number evaluates to TRUE. Therefore, the if()
                           # is TRUE iff the subset is not empty.
      return(max(o));      # If it's true, then we just return the largest element of the
                           # subset, breaking out of our loop.
    T=T+1                  # Otherwise, increment our counter and continue.
  }
}


1
Tanımlayarak değil 4 bayt kazanın function:i=scan();n=nchar(i);max(i[n==min(n)])
bouncyball

@bouncyball Teşekkürler! Ve 1 ek byte kaydedildi n=nchar(i<-scan()).
rturnbull

1

Bash + coreutils, 58 bayt

d=`sort -n`;egrep ^.{`sed q<<<"$d"|wc -L`}$<<<"$d"|tail -1

Giriş formatı satır başına bir değerdir. Golf önerileri memnuniyetle karşılanmaktadır.

Açıklama:

d=`sort -n`                             #save the list in ascending numerical order
egrep ^.{                    }$<<<"$d"  #print only list lines having as many chars
         `sed q<<<"$d"|wc -L`                 #as the first sorted line does
|tail -1                                #and then get the last one (the answer)

+1 teşekkür ederim şimdi biliyorum ki sed q=head -1
Emmanuel

1

Python 2 - 41 bayt

lambda l:max((-len(`x`),x) for x in l)[1]

0

Python 2, 58 bayt

def F(x):l={len(`i`):i for i in sorted(x)};print l[min(l)]

0

Python 3, 56 bayt

lambda a:sorted(sorted(a),key=lambda x:-len(str(x)))[-1]

Bir lambdada bir lambda kullanır!

Python 2, 53 bayt

s=lambda a:sorted(sorted(a),key=lambda x:-len(`x`))[-1]

Aynı fakat geri tepmelerle


0

Pip , 11 bayt

(SNgSK-#_v)

Girdiyi komut satırı argümanı olarak alır. Çevrimiçi deneyin!

SDikey Koperatörü ilk kez kullanın ! Python'da olduğu gibi sorted(), yinelenebilir öğelerin her öğesine uygulanan ve bir sıralama anahtarı olarak kullanılan sonucu alır. İşte bu program nasıl çalışır:

 SNg         List of cmdline args, sorted numerically in increasing order
    SK       Sort with key function...
      -#_    ... negative length(x), thus putting the shortest numbers at the end but not
               affecting the relative ordering among numbers with the same length
(        v)  Get the last element (index -1) and auto-print

0

Clojure, 63 bayt

(reduce #(if(=(quot %1 10)(quot %2 10))(max %1 %2) %1)(sort x)) 

de olduğu gibi:

(reduce #(if(=(quot %1 10)(quot %2 10))(max %1 %2) %1)(sort[3 7 121 11 8 2 10 9]))
=> 9

Gerçi daha küçük yapmanın bir yolu olduğuna eminim.


0

PHP, 86 Bayt

<?$l=strlen($r=min($a=$_GET[a]));foreach($a as$v)if($v>$r&strlen($v)==$l)$r=$v;echo$r;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.