Olası En Büyük ve En Küçük Sayı


16

Görev

Negatif olmayan sayılar dizisi göz önüne alındığında, birleştirilerek oluşturulabilecek mümkün olan en büyük ve en küçük sayıyı çıktılayın.

kurallar

Giriş, Çıkış herhangi bir uygun formatta olabilir.

Dizide en fazla 1 ondalık sayı olabilir.

Örnekler

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

Bu kod golf çok kısa kod kazanır.


1
İlk çıktı olmaz mı: 4422333355.55, 55.5544333322? Bunlar sırasıyla daha küçük ve daha büyüktür.
ouflak

@ouflak, en büyük ve en küçük çıktınız.
Vedant Kandoi

1
Boşver, şimdi gör. Ondalık basamakla karıştırıldım.
ouflak

Kabul [[55.55,22,33,33,44],[44,33,33,22,55.55]]edilebilir bir çıktı biçimi olurdu ?
Shaggy

1
Herhangi bir yol ince @Jordan olduğunu
Vedant Kandoi

Yanıtlar:



3

05AB1E , 11 bayt

œJΣ'.¡ï}Á2£

Çevrimiçi deneyin! veya Test Paketi olarak

açıklama

 œ             # 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

Çok kötü bir şeyimiz yok cast to float. Legacy biri olduğunu hatırlıyorum, ama ben sadece baktım ve görünüşe göre bir stringified cast to floatdizeleri yerine şamandıralar üzerinde yüzen istiyorum çünkü oldukça işe yaramaz .. xD
Kevin Cruijssen 15:18

@KevinCruijssen: Evet. Biz vardı bir is_numberama maalesef hiçbir to_number.
Emigna

3

JavaScript (ES6), 68 66 bayt

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

Çevrimiçi deneyin!

Nasıl?

Giriş dizisindeki iki değeri karşılaştırmak için aşağıdaki testi kullanıyoruz:

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

x % 1 || xxxx

İfade [x % 1 || x] + y, yukarıdaki sonucu bir dizeye zorlar ve bunu diğer değerle birleştirir.

Listede ondalık sayı varsa, her zaman en küçük değer olarak kabul edilmelidir. Dönüşümümüzü uygulayarak, ondalık bir sayı, "0."başka bir şeyden önce sözlükbilimsel olarak sıralanan bir dizeye dönüştürülür .

Örnekler:

  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 bayt

á m¬ñn é v2

Dene

Luis sayesinde 1 bayt tasarruf etti , lütfen +1çözümü de.

á               :Permutations
  m             :Map
   ¬            :  Join
    ñ           :Sort by
     n          :  Converting each to a number
       é        :Rotate right
         v2     :Remove & return the first 2 elements

Tamam, bu daha iyi !! Lanet olsun!! O étüm bu zaman gizlendi !!
Luis felipe De jesus Munoz


3

Jöle , 6 bayt

Œ!VṢ.ị

Çevrimiçi deneyin!

Açıklama:

Œ!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)

Asla Jelly'de programlamam, ancak .ịlistenin ilk ve son öğelerini almanın oldukça güzel bir yolu. Güzel cevap! Benden +1.
Kevin Cruijssen

1
@KevinCruijssen Aslında son ve ilk eşyayı alır. : P
Outgolfer Erik

Ayrıca Jelly'de hiç programlamadım, ama nasıl .ịçalıştığı konusunda kafam karıştı . Dokümanları doğru okuyorsam, y (x) ve ceil (x) 'de y elemanını alır ve .olur 0.5. Bu, indeks 0 ve 1'de y öğelerini alacağı anlamına gelmiyor mu?
Cowabunghole

Jelly 1 tabanlı dizine alınmış mı? Bu, bu davranışı açıklardı ama dokümanlarda bununla ilgili hiçbir şey göremiyorum.
Cowabunghole

1
@Cowabunghole Evet, Jelly 1 endekslidir.
Outgolfer Erik

3

Yakut , 56 45 bayt

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

Çevrimiçi deneyin!

-11 bayt, teşekkürler Ürdün


1
İyi iş! ->a{...Kullanışlı minmaxyöntemi kullanarak parantezleri argümanınızın ( ) etrafına ve başka bir 9'a bırakarak 2 bayt kaydedebilirsiniz : tio.run/…
Ürdün

2

Pyth, 13 12 bayt

hM_BSvsM.p`M

Formdaki çıktılar [smallest, largest]. Buradan çevrimiçi olarak deneyin veya tüm test senaryolarını burada bir kerede doğrulayın .

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

Düzenle: Eşleme fonksiyonundan dize getirerek bir bayt kaydetti. Önceki versiyon: hM_BSmvs`Md.p


2

Perl 6 , 41 bayt

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

Çevrimiçi deneyin!

Alternatifler:

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

1

Kabuk , 10 bayt

§,▼▲morṁsP

Çevrimiçi deneyin veya tümünü doğrulayın!

açıklama

§,▼▲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)
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.