Keluarkan angka terbesar dengan digit paling sedikit

37

Diberikan daftar kosong dari bilangan bulat desimal positif, menghasilkan angka terbesar dari himpunan angka dengan digit paling sedikit.

Daftar input tidak akan berada dalam urutan tertentu dan dapat berisi nilai berulang.

Contoh:

[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

Kode terpendek dalam byte menang.

Hobi Calvin
sumber
Bisakah nomor input berada di jalur terpisah?
seshoumara
@seshoumara Kedengarannya masuk akal, ya.
Calvin Hobbies

Jawaban:

13

Pyth, 7 3 6 byte

eS.ml`

Test Suite

Penjelasan:

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

Solusi 7 byte:

eSh.gl`

Test Suite

Penjelasan:

   .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
Steven H.
sumber
6

Python 2, 48 42 byte

-6 byte terima kasih kepada @Dennis (gunakan minbukan sorted)

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

Semua test case ada di ideone

Ambil minimum daftar dengan (panjang, -nilai)

Jonathan Allan
sumber
1
minharus bekerja sorted.
Dennis
@ Dennis, oh ya ampun - terima kasih! Mungkin cukup berbeda untuk mempostingnya sendiri.
Jonathan Allan
Bertukar sorted()[0]untuk min? Saya menganggap itu modifikasi sepele dari kode asli Anda.
Dennis
Ada juga len(`x`)+1./xdengan panjang yang sama. Sayang sekali Anda membutuhkannya 1..
xnor
Ya, itu lebih pendek dari yang saya pikirkan. Kerja bagus!
mbomb007
6

Jelly , 7 byte

DL,NµÞḢ

Uji di TryItOnline
Atau lihat semua uji juga di TryItOnline

Bagaimana?

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
Jonathan Allan
sumber
1
Penggunaan jenis yang bagus!
mil
@miles jalanmu masih diilhami :)
Jonathan Allan
5

05AB1E , 5 byte

Kode:

({é¬(

Penjelasan:

(      # 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.

Menggunakan pengkodean CP-1252 . Cobalah online!

Adnan
sumber
4

MATL , 14 byte

10&YlktX<=G*X>

Cobalah online!

Penjelasan:

  &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
DJMcMayhem
sumber
4

Retina ,24 16 byte

O ^ `
O $ # `
$ .0
G1`

Cobalah online! atau jalankan semua test case .

Disimpan 8 byte berkat Martin!

Semua pengujian menggunakan versi kode yang sedikit lebih tua, tetapi algoritmanya identik. Saya akan memperbaruinya agar lebih dekat ketika saya mendapatkan lebih banyak waktu.

Baris baru tertinggal sangat penting. Mengurutkan angka dengan membalikkan nilai numerik, lalu mengurutkannya dengan jumlah digit. Ini meninggalkan kita dengan angka terbesar dengan digit paling sedikit di posisi pertama, jadi kita bisa menghapus digit yang tersisa.

FryAmTheEggman
sumber
Jika Anda membuat input-line terpisah, Anda dapat menghilangkan regex dari kedua tahap penyortiran dan kemudian gunakan G1`untuk tahap terakhir.
Martin Ender
Juga, tahap pertama tidak perlu #. Anda hanya peduli dengan urutan relatif untuk panjang bilangan bulat yang diberikan, dan dalam satu panjang penyortiran leksikografis angka benar.
Martin Ender
@ MartinEnder Terima kasih! Saya telah menambahkan kedua tips Anda. Saya seharusnya menyarankan \w+sebagai default untuk menyortir, dengan cara itu saya tidak perlu berjuang sebanyak mungkin untuk membuat suite tes;)
FryAmTheEggman
Berikut ini 16 lainnya, kalau-kalau itu memberi Anda ide untuk bermain golf lebih lanjut: retina.tryitonline.net/…
Martin Ender
4

Mathematica, 33 31 byte

Max@MinimalBy[#,IntegerLength]&

MinimalBy memilih semua elemen dari daftar input asli dengan skor terkecil sesuai IntegerLength, yaitu, dengan jumlah digit terkecil; dan kemudian Max menghasilkan yang terbesar.

Terima kasih kepada Martin Ender untuk menemukan, dan kemudian menghemat, 2 byte untuk saya :)

Greg Martin
sumber
4

Perl 6 , 18 byte

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

Penjelasan:

*\        # 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
}

Pemakaian:

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

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

say code [78, 99, 620, 10]; # 99
Brad Gilbert b2gills
sumber
3

Jelly , 8 byte

DL€İMị¹Ṁ

Cobalah online! atau Verifikasi semua kasus uji.

Penjelasan

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
mil
sumber
Bagaimana 8 byte ini? Apakah semua karakter ini sesuai dengan ASCII?
Federico Poloni
1
@FedericoPoloni Ya, mereka memang cocok , meskipun di codepage lain.
Erik the Outgolfer
3

JavaScript (ES6), 51

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

Uji

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)
})  

edc65
sumber
3

J, 21 14 byte

Disimpan 7 byte berkat mil dan (tidak langsung) Jonathan!

{.@/:#@":"0,.-

Ini adalah empat rantai:

{.@/: (#@":"0 ,. -)

Mari kita berjalan menuju input 10 27 232 1000. Garpu bagian dalam terdiri dari tiga tine. #@":"0menghitung ukuran, ,.menggabungkan setiap ukuran dengan anggota yang dinegasikan ( -). Untuk input 10 27 232 1000, kita dibiarkan dengan ini:

   (#@":"0 ,. -) 10 27 232 1000
2   _10
2   _27
3  _232
4 _1000

Sekarang kita punya {.@/: garis luar. Ini adalah monadic first ( {.) di atas dyadic sort ( /:). Artinya, kita akan mengambil elemen pertama hasil diad /:. Ini mengurutkan argumen kanannya sesuai dengan argumen kirinya, yang memberi kita masukan dari kami:

   (/: #@":"0 ,. -) 10 27 232 1000
27 10 232 1000

Kemudian, menggunakan {.memberi kita elemen pertama dari daftar itu, dan kita selesai:

   ({.@/: #@":"0 ,. -) 10 27 232 1000
27

Versi lama

>./@(#~]=<./@])#@":"0

Masih bekerja pada perbaikan. Saya bermain golf turun dari 30, dan saya pikir ini cukup baik. Saya akan memecahnya menjadi beberapa bagian dasar:

   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

Begini cara kerjanya.

>./@(#~ ] = <./@]) #@":"0

Ini adalah kereta monadik, tetapi bagian ini adalah kail. Kata kerjanya >./@(#~ ] = <./@])disebut dengan argumen kiri sebagai input ke rantai utama dan ukuran, didefinisikan sebagai #@":"0, sebagai argumen yang tepat. Ini dihitung sebagai panjang ( #) di atas (@ ) format default ( ":), yaitu, pengencangan numerik, yang dibuat untuk diterapkan pada 0-sel (yaitu anggota) dari input ( "0).

Mari kita melihat contoh input 409 12 13.

   (#@":"0) 409 12 13
3 2 2

Sekarang untuk kata kerja bagian dalam >./@(#~ ] = <./@]),. Sepertinya >./@(...), yang secara efektif berarti nilai maksimum ( >./) dari ( @) apa yang ada di dalamnya (...). Sedangkan untuk bagian dalam, ini adalah empat kereta, setara dengan lima kereta ini:

[ #~ ] = <./@]

[merujuk ke argumen asli, dan ]merujuk ke array ukuran; 409 12 13dan 3 2 2masing - masing dalam contoh ini. Batas kanan <./@],, menghitung ukuran minimum, 2dalam hal ini. ] = <./@]adalah array nilai boolean yang sama dengan minimum, 0 1 1dalam hal ini. Akhirnya, [ #~ ...mengambil nilai dari argumen kiri sesuai dengan topeng argumen kanan. Ini berarti bahwa elemen yang sesuai dengan 0dijatuhkan dan 1dipertahankan. Jadi kita dibiarkan begitu saja 12 13. Akhirnya, sesuai dengan di atas, maks diambil, memberi kami hasil yang benar 13, dan kami selesai.

Conor O'Brien
sumber
Beberapa pengocokan dan pengait dapat menghemat satu byte >./@#~[:(=<./)#@":"0. Saya pikir mungkin ada sedikit lebih banyak untuk disimpan
mil
@miles XD Saya baru saja selesai menulis penjelasan. Ah, baiklah, saya akan melihat keindahan ini ...
Conor O'Brien
Jonathan menemukan metode yang lebih baik. Jika kita mengonversikannya menjadi J, 14 byte {.@/:#@":"0,.-tetapi inputnya harus berbentuk daftar
mil
@miles "dibentuk sebagai daftar"? Maksudmu, seperti 400 12 13?
Conor O'Brien
2

JavaScript (ES6), 62 byte

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'))

pengguna81655
sumber
2

dc, 54 byte

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

Penjelasan:

?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

Jalankan contoh: 'input.txt' berisi semua kasus uji dalam pernyataan pertanyaan

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

Keluaran:

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
seshoumara
sumber
2

Java 7, 112 104 byte

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;}

Pendekatan yang berbeda untuk menyimpan beberapa byte berkat @ Barteks2x .

Kasus yang tidak disatukan & uji:

Coba di sini.

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 }));
  }
}

Keluaran:

1
9
1729
1
3
13
1
11
1
99
9
3451
938
Kevin Cruijssen
sumber
1
versi lebih pendek: int c (int [] a) {int i = a [0], j; untuk (int b: a) i = (j = (i + ""). length () - (b + "" "). panjang ())> 0? b: b> i & j == 0? b: i; return i;}
barteks2x
@ Barteks2x Terima kasih, saya sudah mengeditnya.
Kevin Cruijssen
2

bash, awk, urutkan 53 byte

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

Baca input dari stdin, satu nilai per baris

bash and sort, 58 57 byte

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

Emmanuel
sumber
tidak berfungsi untuk sampel terakhir memberi 2383 bukannya 938
Archemar
@Archemar maaf saya salah membaca pertanyaan, sudah dikoreksi sekarang
Emmanuel
Anda dapat menghapus ruang antara whiledan ((.
seshoumara
1

JavaScript ES6, 80 77 70 byte

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

Saya harap saya pergi ke arah yang benar ...

Downgoat
sumber
Bisakah Anda ganti a.map(i=>i.length).sort((a,b)=>a-b)[0]dengan Math.min(...a.map(i=>i.length))?
user81655
@ user81655 ya, saya bisa. Saya pikir saya telah membuat suntingan itu tetapi ternyata saya tidak melakukannya
Downgoat
Anda juga dapat mencoba meniadakan minimum sehingga Anda dapat menggunakan kembali Math.max: a=>(m=Math.max)(...a.filter(l=>l.length==-m(...a.map(i=>-i.length))))Tampaknya hanya menghemat 1 byte.
user81655
Untuk byte lain, filterdapat diganti dengan mapyang mengembalikan 0nilai yang tidak lulus tes:a=>(m=Math.max)(...a.map(l=>l.length+m(...a.map(i=>-i.length))?0:l))
user81655
1

Brachylog , 16 byte

or:@]feL:la#=,Lh

Cobalah online!

Penjelasan

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.
Fatalisasi
sumber
1

Haskell, 39 byte

snd.maximum.map((0-).length.show>>=(,))
Damien
sumber
Ini tidak bekerja, ia lebih suka 34untuk 2.
xnor
Oh terima kasih. Saya harus memikirkan kembali ..
Damien
Bekerja lebih baik sekarang!
Damien
1

Javascript (ES6), 57 54 53 byte

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

Sebagai catatan, versi saya sebelumnya lebih berorientasi matematika tetapi 1 byte lebih besar:

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

Uji kasus

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

Arnauld
sumber
1

MATL , 11 byte

tV48\&XS0))

Input adalah vektor kolom (menggunakan ;sebagai pemisah), seperti

[78; 99; 620; 100]

Cobalah online! Atau verifikasi semua kasus uji .

Penjelasan

Mari kita gunakan input [78; 99; 620; 100]sebagai contoh.

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
Luis Mendo
sumber
1
Senang melihat negara stack dalam penjelasan Anda!
flawr
1

Perl, 38 37 byte

Termasuk +1 untuk -a

Berikan masukan pada STDIN:

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]}

Menggunakan memori linier dalam jumlah terbesar, jadi jangan coba ini pada jumlah yang terlalu besar. Solusi tanpa cacat itu adalah 38 byte:

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

Semua ini sangat aneh dan tidak terasa optimal sama sekali ...

Ton Hospel
sumber
1

R, 72 41 36 byte

Menulis ulang fungsi dengan pendekatan baru. Golf 5 byte berkat saran dari @bouncyball.

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

Dijelaskan:

        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}}

Diindentasikan / dijelaskan:

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.
  }
}

rturnbull
sumber
1
Simpan 4 byte dengan tidak mendefinisikan function:i=scan();n=nchar(i);max(i[n==min(n)])
bouncyball
@ bouncyball Terima kasih! Dan 1 byte selanjutnya disimpan oleh n=nchar(i<-scan()).
rturnbull
1

Bash + coreutils, 58 byte

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

Format input adalah satu nilai per baris. Saran bermain golf disambut.

Penjelasan:

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)
seshoumara
sumber
+1 terima kasih sekarang saya tahu itu sed q=head -1
Emmanuel
1

Python 2 - 41 byte

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

Python 2, 58 byte

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

Python 3, 56 byte

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

Gunakan lambda di lambda!

Python 2, 53 byte

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

Sama tetapi dengan backticks

Lemon dirusak
sumber
0

Pip , 11 byte

(SNgSK-#_v)

Mengambil input sebagai argumen baris perintah. Cobalah online!

Pertama kali menggunakan Sort- KOperator bermata! Seperti Python sorted(), dibutuhkan fungsi yang diterapkan pada setiap item yang dapat diubah dan hasil yang digunakan sebagai kunci pengurutan. Begini cara kerja program ini:

 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
DLosc
sumber
0

Clojure, 63 byte

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

seperti dalam:

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

Meskipun saya yakin ada cara untuk membuatnya lebih kecil.

pengguna3810626
sumber
0

PHP, 86 Bytes

<?$l=strlen($r=min($a=$_GET[a]));foreach($a as$v)if($v>$r&strlen($v)==$l)$r=$v;echo$r;
Jörg Hülsermann
sumber