Größte und kleinste mögliche Anzahl

16

Aufgabe

Geben Sie bei einem Array nicht negativer Zahlen die größte und kleinste Zahl aus, die durch Zusammenfügen gebildet werden kann.

Regeln

Eingabe, Ausgabe kann in jedem beliebigen Format erfolgen.

Das Array darf höchstens 1 Dezimalzahl haben.

Beispiele

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

Das ist Code-Golf, also gewinnt der kürzeste Code.

Vedant Kandoi
quelle
1
Wäre die erste Ausgabe nicht: 4422333355.55, 55.5544333322? Diese sind jeweils kleiner und größer.
15.
@ouflak, du musst den größten und den kleinsten ausgeben.
Vedant Kandoi,
1
Vergiss nicht, sieh es dir jetzt an. Wurde mit der Dezimalstelle verwechselt.
15.
Wäre [[55.55,22,33,33,44],[44,33,33,22,55.55]]ein akzeptables Ausgabeformat?
Shaggy
1
Any way is fine @Jordan
Vedant Kandoi

Antworten:

3

05AB1E , 11 Bytes

œJΣ'.¡ï}Á2£

Probieren Sie es online! oder als Testsuite

Erläuterung

 œ             # 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
quelle
Schade, dass wir keine haben cast to float. Ich erinnere mich, dass es eines im Legacy gab, aber ich habe es nur nachgeschlagen und anscheinend war es eines stringified cast to float, was ziemlich nutzlos ist, da Sie möchten, dass Floats anstelle von Strings sortiert werden.
XD
@ KevinCruijssen: Ja. Wir hatten ein , is_numberaber leider nicht to_number.
Emigna
3

JavaScript (ES6), 68 66 Bytes

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

Probieren Sie es online!

Wie?

Wir verwenden den folgenden Test, um zwei Werte im Eingabearray zu vergleichen:

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

x % 1 || xxxx

Der Ausdruck [x % 1 || x] + yerzwingt das obige Ergebnis zu einer Zeichenfolge und verknüpft sie mit dem anderen Wert.

Wenn die Liste eine Dezimalzahl enthält, muss diese immer als kleinster Wert betrachtet werden. Durch Anwendung unserer Konvertierung wird eine Dezimalzahl in eine Zeichenfolge umgewandelt "0.", die lexikografisch vor allen anderen Elementen angeordnet ist.

Beispiele:

  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
quelle
3

Japt, 14 11 Bytes

á m¬ñn é v2

Versuch es

1 Byte gespart dank Luis , bitte auch +1seine Lösung.

á               :Permutations
  m             :Map
   ¬            :  Join
    ñ           :Sort by
     n          :  Converting each to a number
       é        :Rotate right
         v2     :Remove & return the first 2 elements
Zottelig
quelle
Ok, das ist besser !! Verdammt!! das éwar die ganze Zeit verborgen !!
Luis Felipe De Jesus Munoz
3

Japt , 14 11 10 Bytes

á m¬ñn gJò

Probieren Sie es online!

Luis Felipe De Jesus Munoz
quelle
Schön. Ich hatte á ®¬nÃnfür die erste Zeile - mich selbst zu treten, dass ich nicht an Ihren Weg dachte.
Shaggy
12 Bytes unter Verwendung des -hFlags.
Shaggy
11 Bytes unter Verwendung des -gFlags. Funktioniert auch mit ístatt ï.
Shaggy
@ Shaggy Ausgezeichnet! Vielen Dank!!
Luis Felipe De Jesus Munoz
Mist! Sieht so aus, als hätte ich zu früh aufgegeben. sehr schön gemacht.
Shaggy
3

Gelee , 6 Bytes

Œ!VṢ.ị

Probieren Sie es online!

Erläuterung:

Œ!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 der Outgolfer
quelle
Ich programmiere nie in Jelly, aber es .ịist eine ziemlich coole Art, sowohl das erste als auch das letzte Element einer Liste zu bekommen. Gute Antwort! +1 von mir.
Kevin Cruijssen
1
@ KevinCruijssen Es wird tatsächlich das letzte und erste Element. : P
Erik der Outgolfer
Ich habe auch noch nie in Jelly programmiert, bin aber verwirrt, wie das .ịfunktioniert. Wenn ich die Dokumente richtig lese, würde ich denken, dass das Element y auf dem Boden (x) und der Decke (x) steht und .steht 0.5. Bedeutet das nicht, dass es Elemente von y bei Index 0 und 1 erhält?
Cowabunghole
Ist Jelly 1-basiert indiziert? Das würde dieses Verhalten erklären, aber ich sehe nichts darüber in den Dokumenten.
Cowabunghole
1
@Cowabunghole Ja, Jelly ist 1-indiziert.
Erik der Outgolfer 15.11.18
3

Ruby , 56 45 Bytes

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

Probieren Sie es online!

-11 Bytes, danke Jordan

Travis
quelle
1
Gute Arbeit! Sie können 2 Bytes sparen, indem Sie die Klammern um Ihr Argument ( ->a{...) und weitere 9 Bytes mit der praktischen minmaxMethode setzen: tio.run/…
Jordan
2

Pyth, 13 12 Bytes

hM_BSvsM.p`M

Ausgaben in Form [smallest, largest]. Versuchen Sie es online hier oder überprüfen alle Testfälle auf einmal hier .

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

Bearbeiten: Speichert ein Byte, indem die Zuordnungsfunktion deaktiviert wird. Vorherige Version: hM_BSmvs`Md.p

Sok
quelle
2

Perl 6 , 41 Bytes

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

Probieren Sie es online!

Alternativen:

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

Schale , 10 Bytes

§,▼▲morṁsP

Probieren Sie es online aus oder überprüfen Sie alle!

Erläuterung

§,▼▲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)
ბიმო
quelle