Nomor Kemungkinan Terbesar dan Terkecil

16

Tugas

Diberikan sejumlah angka non-negatif, hasilkan angka terbesar dan terkecil yang dapat dibentuk dengan menggabungkannya.

Aturan

Input, Output dapat dalam format apa pun yang nyaman.

Array mungkin memiliki paling banyak 1 angka desimal.

Contohnya

input:[22,33,44,55.55,33]
output:4433332255.55,55.5522333344

input:[34,900,3,11,9]
output:990034311,113349009

input:[99.93,9,3,39]
output:939399.93,99.933399

input:[45.45,45,45,45]
output:45454545.45,45.45454545

input:[12,21,34,43,45.1]
output:4334211245.1,45.112213443

Ini adalah kode-golf sehingga kode terpendek menang.

Vedant Kandoi
sumber
1
Bukankah output pertama adalah: 4422333355.55, 55.5544333322? Mereka masing-masing lebih kecil dan lebih besar.
ouflak
@ouflak, Anda harus menampilkan yang terbesar dan terkecil.
Vedant Kandoi
1
Nevermind, lihat sekarang. Bingung dengan tempat desimal.
ouflak
Apakah [[55.55,22,33,33,44],[44,33,33,22,55.55]]format output yang dapat diterima?
Shaggy
1
Cara apa pun baik-baik saja @Jordan
Vedant Kandoi

Jawaban:

4

Python 2 , 84 80 78 76 byte

lambda a:[''.join(sorted(a,key=lambda s:'.'in s or s+s)[::i])for i in[-1,1]]

Cobalah online!

-2 byte, terima kasih kepada Arnauld

TFeld
sumber
3

05AB1E , 11 byte

œJΣ'.¡ï}Á2£

Cobalah online! atau sebagai Test Suite

Penjelasan

 œ             # get permutations of input
  J            # join each
   Σ    }      # sort by
    '.¡        # splitting into [before decimal, after decimal]
       ï       # and converting each to int
         Á     # rotate the result right
          2£   # and take the first 2 values
Emigna
sumber
Sayang sekali kami tidak punya cast to float. Saya ingat ada satu di Legacy, tapi saya hanya mencarinya dan ternyata itu adalah stringified cast to float, yang sangat tidak berguna karena Anda ingin mengapung alih-alih string untuk diurutkan .. xD
Kevin Cruijssen
@KevinCruijssen: Ya. Kami memiliki sebuah is_numbertapi sayangnya tidak ada to_number.
Emigna
3

JavaScript (ES6), 68 66 byte

a=>[1,-1].map(n=>a.sort((a,b)=>[a%1||a]+b<[b%1||b]+a?n:-n).join``)

Cobalah online!

Bagaimana?

Kami menggunakan tes berikut untuk membandingkan dua nilai dalam array input:

[a % 1 || a] + b < [b % 1 || b] + a

Ekspresi x % 1 || xmengembalikan bagian desimal x jika x adalah angka desimal, atau pergix tidak berubah.

Ekspresi [x % 1 || x] + ymemaksa hasil di atas ke string dan menggabungkannya dengan nilai lainnya.

Jika ada angka desimal dalam daftar, itu harus selalu dianggap sebagai nilai terkecil. Dengan menerapkan konversi kami, angka desimal diubah menjadi string yang dimulai dengan "0.", yang dipesan secara leksikografis sebelum yang lainnya.

Contoh:

  a |   b | [a%1||a]+b | [b%1||b]+a
----+-----+------------+------------
  4 |   5 | "45"       | "54"
 10 |  11 | "1011"     | "1110"
  8 |  80 | "880"      | "808"
  7 | 9.5 | "79.5"     | "0.57"
Arnauld
sumber
3

Japt, 14 11 byte

á m¬ñn é v2

Cobalah

1 byte disimpan berkat Luis , tolong +1solusinya juga.

á               :Permutations
  m             :Map
   ¬            :  Join
    ñ           :Sort by
     n          :  Converting each to a number
       é        :Rotate right
         v2     :Remove & return the first 2 elements
Shaggy
sumber
Ok, ini lebih baik !! Sial!! yang étersembunyi selama ini !!
Luis felipe De jesus Munoz
3

Japt , 14 11 10 byte

á m¬ñn gJò

Cobalah online!

Luis felipe De jesus Munoz
sumber
Bagus Saya memiliki á ®¬nÃnuntuk baris pertama - menendang diri sendiri bahwa saya tidak memikirkan cara Anda.
Shaggy
12 byte , menggunakan -hbendera.
Shaggy
11 byte , menggunakan -gbendera. Juga berfungsi dengan íbukan ï.
Shaggy
@ Shaggy Luar Biasa! Terima kasih!!
Luis felipe De jesus Munoz
Dang! Sepertinya saya menyerah untuk segera; dilakukan dengan sangat baik.
Shaggy
3

Jelly , 6 byte

Œ!VṢ.ị

Cobalah online!

Penjelasan:

Œ!VṢ.ị Arguments: x
Œ!     Permutations of x
  V    Concatenate the representations of each permutation's elements and evaluate the result as Jelly code
   Ṣ   Sort
    .ị Get element at index 0.5, i.e. elements at indices 0 (last) and 1 (first)
Erik the Outgolfer
sumber
Saya tidak pernah memprogram dalam Jelly, tetapi .ịmerupakan cara yang cukup keren untuk mendapatkan item pertama dan terakhir dari daftar. Jawaban bagus! +1 dari saya.
Kevin Cruijssen
1
@KevinCruijssen Ini benar-benar mendapatkan item terakhir dan pertama. : P
Erik the Outgolfer
Saya juga tidak pernah diprogram dalam Jelly, tapi saya bingung bagaimana cara .ịkerjanya. Jika saya membaca dokumen dengan benar, saya akan berpikir mendapatkan elemen y di floor (x) dan ceil (x), dan .sekarang 0.5. Bukankah itu berarti akan mendapatkan elemen y pada indeks 0 dan 1?
Cowabunghole
Apakah berbasis Jelly 1 diindeks? Itu akan menjelaskan perilaku ini tetapi saya tidak melihat apa-apa tentang itu di dokumen.
Cowabunghole
1
@Cowabunghole Ya, Jelly terindeks 1.
Erik the Outgolfer
3

Ruby , 56 45 byte

->a{a.permutation.map{|p|p.join.to_f}.minmax}

Cobalah online!

-11 byte, terima kasih Jordan

Travis
sumber
1
Kerja bagus! Anda dapat menyimpan 2 byte dengan menjatuhkan tanda kurung di sekitar argumen Anda ( ->a{...) dan 9 lainnya dengan menggunakan minmaxmetode praktis : tio.run/…
Jordan
2

Pyth, 13 12 byte

hM_BSvsM.p`M

Output dalam bentuk [smallest, largest]. Coba online di sini , atau verifikasi semua uji sekaligus di sini .

hM_BSvsM.p`MQ   Implicit: Q=eval(input())
                Trailing Q inferred
          `MQ   Stringify all elements of Q
        .p      Generate all permutations of the above
      sM        Concatenate each permutation
     v          Evaluate each as a number
    S           Sort them
  _B            Pair the sorted list with its reverse
hM              Take the first element of each, implicit print

Sunting: Disimpan satu byte dengan mengeluarkan pengetatan dari fungsi pemetaan. Versi sebelumnya: hM_BSmvs`Md.p

Sok
sumber
2

Perl 6 , 41 byte

{.max,.min}o+<<*.permutations.map(*.join)

Cobalah online!

Alternatif:

{.max,.min}o+<<*.permutations.map:{.join}
{.max,.min}o{[map +*.join,.permutations]}
{.max,.min}o{+<<map *.join,.permutations}
nwellnhof
sumber
1

Sekam , 10 byte

§,▼▲morṁsP

Cobalah online atau verifikasi semua!

Penjelasan

§,▼▲m(rṁs)P  -- example input: [2,3,1.1]
          P  -- permutations: [[2,3,1.1],[3,2,1.1],[1.1,3,2],[3,1.1,2],[1.1,2,3],[2,1.1,3]]
    m(   )   -- map the following
                (example with [1.1,2,3])
       ṁs    -- | show each and join: "1.123"
      r      -- | read: 1.123
             -- : [231.1,321.1,1.132,31.12,1.123,21.13]
§,           -- fork and join as tuple
  ▼          -- | min: 1.123
   ▲         -- | max: 321.1
             -- : (1.123,321.1)
ბიმო
sumber