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.


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:



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

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"

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

Ok, ini lebih baik !! Sial!! yang étersembunyi selama ini !!
Luis felipe De jesus Munoz


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)

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


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


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}

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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.