Reduzieren Sie die Liste auf eine endgültige Zahl

9

Eingänge

Eine Liste (Array) von Zahlen oder numerischen Zeichenfolgen, wenn dies einfacher ist. Sie können davon ausgehen, dass die Liste immer mindestens zwei Elemente enthält und jedes Element eine natürliche Zahl ist (Ganzzahl größer als Null).

Ausgänge

Eine einzelne Zahl oder wieder eine numerische Zeichenfolge.

Problem

Die Idee ist, die Liste der Nummern zu reduzieren, indem die letzte Ziffer der größten Nummer in dieser aktuellen Phase der Liste entfernt wird und schließlich mit einer Nummer endet (es sollte nur eine Nummer zurückgegeben werden, selbst wenn mehrere Instanzen vorhanden sind).

Beispiel

[123,343,121,76,465,786] -- The last digit in 786 is dropped, so it becomes 78
[123,343,121,76,465,78]  -- New largest number is 465, so the 5 is dropped, making it 46
[123,343,121,76,46,78]   -- Repeat until left with one number
[123,34,121,76,46,78]
[12,34,121,76,46,78]
[12,34,12,76,46,78]
[12,34,12,76,46,7]
[12,34,12,7,46,7]
[12,34,12,7,4,7]
[12,3,12,7,4,7]
[1,3,1,7,4,7]            -- If there are multiple max numbers, you **must** remove the last digit from all of them
[1,3,1,4]
[1,3,1]
[1,1]                    -- You have your answer when there is one number, or multiple numbers that are equal
1                        -- Result

Schlupflöcher

Es gelten Standardlücken

Andere Einschränkungen

Ihr Programm muss für jede Liste von Zufallszahlen funktionieren (natürlich im Rahmen des Grundes).

Testfälle

[24,72,4]
[24,7,4]
[2,7,4]
[2,4]
[2]
2

[14, 7]
[1, 7]
[1]
1

[1278,232,98273,2334]
[1278,232,9827,2334]
[1278,232,982,2334]
[1278,232,982,233]
[127,232,982,233]
[127,232,98,233]
[127,232,98,23]
[127,23,98,23]
[12,23,98,23]
[12,23,9,23]
[12,2,9,2]
[1,2,9,2]
[1,2,2]
[1]
1

Wertung

Dies ist , also gewinnt die kürzeste Antwort in jeder Sprache!

Henry
quelle
1
Bitte lassen Sie mich wissen, wenn ich etwas verpasst habe. Erste Frage.
Henry
14
Weiß nicht , wenn es zu spät zu ändern ist, aber die Frage wäre besser, wenn wir haben die Ausgabe jeder Stufe haben. Ich denke, die Antworten werden sonst recht einfach sein.
DLosc
8
Da es sonst niemand erwähnt hat, ist dies die Art von Dingen, die häufig im Sandkasten gefangen werden .
James
1
Können Sie Testfälle hinzufügen, bei denen die Antwort nicht die erste Ziffer des ersten Eintrags in der Liste ist?
JAD
5
Die Art , wie ich diese Frage die Antwort lesen für [12, 123, 124]heißt 12, das macht jede einzelne Gesendete Antwort falsch .
Ørjan Johansen

Antworten:

4

Python 2 , 24 Bytes

-4 Bytes dank Notjagan.

lambda l:min(zip(*l)[0])

Probieren Sie es online aus!

total menschlich
quelle
2
Dies kann um 4 Bytes verkürzt werden, während die gleiche Idee verwendet wird min(zip(*l)[0]).
Notjagan
3

Mathematica, 29 Bytes

Min[First@*IntegerDigits/@#]&
J42161217
quelle
3

Japt , 8 6 5 Bytes

-1 Byte dank @Shaggy

n g g

Nimmt die Eingabe als Array numerischer Zeichenfolgen auf. Probieren Sie es online aus!

Erläuterung

        // implicit input: array of strings
n       // sort the array
  g     // get the first element
    g   // get the first character
        // implicit output
Justin Mariner
quelle
5 Bytes : Sortieren Sie das Array, holen Sie sich das erste Element und das erste Zeichen.
Shaggy
@ Shaggy Oh duh, ich habe dieses total überkompliziert. Vielen Dank!
Justin Mariner
Kein Problem :) n v gwürde auch für 5 Bytes funktionieren. Willkommen bei Japt übrigens.
Shaggy
2

05AB1E , 3 Bytes

€нW

Probieren Sie es online aus!

Emigna
quelle
Schlägt für [12,23,12].
Olivier Grégoire
@ OlivierGrégoire: Wie? Das Entfernen der Ziffern in der Reihenfolge 3,2,2,2,1führt erwartungsgemäß zu 1 .
Emigna
Mein schlechtes, ich habe falsch verstanden. Siehe vorherigen Kommentar .
Olivier Grégoire
2

PHP , 45 Bytes

<?foreach($_GET as$v)$r[]=$v[0];echo min($r);

Probieren Sie es online aus!

Jörg Hülsermann
quelle
Schlägt für [12,23,12].
Olivier Grégoire
@ OlivierGrégoire [12,23,12] -> [12,2,12] -> [1,2,12] -> [1,2,1] -> [1,1] -> [1] -> 1 ist meiner Meinung nach richtig
Jörg Hülsermann
Mein schlechtes, ich habe falsch verstanden. Siehe vorherigen Kommentar .
Olivier Grégoire
2

V , 11 , 5 Bytes

ÚxV}p

Probieren Sie es online aus!

Ich habe dieses Warten komplizierter gemacht, als es tatsächlich ist. Diese Antwort sortiert einfach jede Zeile nach ASCII-Werten und gibt dann das allererste Zeichen zurück. Da dies eine freundliche oder langweilige Antwort ist, ist hier eine interessantere Antwort, die den ursprünglich beschriebenen Algorithmus tatsächlich implementiert:

V , 11 Bytes

òún
/äîä
Lx

Probieren Sie es online aus!

James
quelle
Ich war es auch, als ich die Frage stellte. Ihre ursprüngliche Antwort war, wie ich am meisten erwartet hatte. Schade.
Henry
2

Gelee ,  3  2 Bytes

ṂḢ

Ein vollständiges Programm, das eine Liste von Zeichenlisten (Zeichenfolgen) erstellt und das Ergebnis druckt.

Probieren Sie es online aus!

Wie?

Wir müssen nur die kleinste führende Ziffer zurückgeben ...

ṂḢ - Main link: list of lists of characters
Ṃ  - minimum (lexicographical ordering ensures this will start with the minimal digit)
 Ḣ - head (get that first digit character)
Jonathan Allan
quelle
Kein Problem, es passiert.
Jonathan Allan
2

JavaScript (ES6), 17 Byte

Nimmt die Eingabe als Array von Zeichenfolgen auf.

a=>a.sort()[0][0]

Versuch es

Geben Sie eine durch Kommas getrennte Liste von Zahlen ein.

o.innerText=(f=
a=>a.sort()[0][0]
)((i.value="1278,232,98273,2334").split`,`);oninput=_=>o.innerText=f(i.value.split`,`)
<input id=i><pre id=o>

Zottelig
quelle
1

,,,, 3 Bytes

⫰1⊣

Erläuterung

⫰1⊣

⫰    pop the whole stack and push the minimum element
 1   push 1
  ⊣  pop the minimum and 1 and push the first character of it
total menschlich
quelle
1

Braingolf , 17 Bytes

VVR{Mvd<M&$_R}vvx

Probieren Sie es online aus!

Erläuterung

VVR{Mvd<M&$_R}vvx  Implicit input from commandline args
VVR                Create stack2 and stack3, return to stack1
   {.........}     Foreach item in stack..
    M              ..Move item to next stack
     v             ..Switch to next stack
      d            ..Split item into digits
       <M          ..Move first item to next stack
         &$_       ..Clear stack
            R      ..Return to stack1
              vv   Switch to stack3
                x  Reduce to lowest value
                   Implicit output of last item on stack

Mit anderen Worten, es wird ein Stapel erstellt, der nur aus der ersten Ziffer jedes Elements besteht, und dann die niedrigste ausgegeben.

Diese Herausforderung gab mir eine Reihe nützlicher Ideen für eingebaute Funktionen, die Braingolf hinzugefügt werden können. Dank der Hinzufügung der "speziellen" foreach-Schleife kann Braingolf dies nun in 5 Bytes tun:

Braingolf , 5 Bytes [nicht konkurrierend]

(d<)x

Erläuterung

(d<)x  Implicit input from commandline args
(..)   Special foreach loop, iterates over the stack, moving each item to a special
       Sandboxed stack environment, and prepends the last item of the sandboxed
       stack to the real stack at the end of each iteration
 d<    Split into digits, move first digit to end of stack
    x  Reduce to lowest value
       Implicit output of last item on stack

Probieren Sie es online aus!

Normalerweise bin ich dagegen, eingebaute Funktionen hinzuzufügen, um nur eine Herausforderung abzuschließen, aber ich sehe eine Vielzahl von Verwendungsmöglichkeiten für die neue (...)foreach-Schleife. Daher denke ich nicht wirklich darüber nach, eine Funktion nur für diese Herausforderung hinzuzufügen.

Skidsdev
quelle
Schlägt für [12,23,12]. Die erwartete Ausgabe ist 2, Sie haben zurückgegeben 1.
Olivier Grégoire
@ OlivierGrégoire Die erwartete Ausgabe davon ist 1:[12,23,12] > [12,2,12] > [1,2,1] > [1,1]
Skidsdev
Mein schlechtes, ich habe falsch verstanden. Siehe vorherigen Kommentar .
Olivier Grégoire
0

Pip , 5 Bytes

Nimmt die Liste der eingegebenen Nummern als Befehlszeilenargumente.

@@SSg

Probieren Sie es online aus!

Abwechselnd:

MN@Zg

Probieren Sie es online aus!

Erklärungen

In beiden Programmen gbefindet sich die Liste der Befehlszeilenargumente.

@@SSg

SSSortiert mithilfe des Zeichenfolgenvergleichs, wobei die Zahlen mit den kleinsten ersten Ziffern unabhängig von ihrer Größe an erster Stelle stehen. Unary @gibt das erste Element einer Liste oder eines Skalars an. Wir wenden es zweimal an, um die erste Ziffer der ersten Zahl nach dem Sortieren zu erhalten.

    g  [24 72 491]
  SS   [24 491 72]
 @     24
@      2

Abwechselnd:

MN@Zg

Zist zip; Die unäre Version kann zum Transponieren einer Liste verwendet werden. Das erste Element der transponierten Liste ist eine Liste der ersten Ziffern aller Zahlen. @erhält diese Ziffernliste; MNnimmt sein Minimum.

    g  [24 72 491]
   Z   [[2 7 4] [4 2 9]]
  @    [2 7 4]
MN     2
DLosc
quelle
0

PHP, 27 Bytes

<?=substr(max($_GET),0,-1);

(Wow, die Frage wurde völlig missverstanden. Dies funktioniert nicht. Wird später bearbeitet.)

Liren
quelle
0

Pyth , 9 7 Bytes

hSmsh`d

Probieren Sie es online aus!

Erläuterung

Dies gibt im Grunde die kleinste führende Ziffer zurück.

       Q    # Implicit input
  msh`d     # For each number in Q, convert to string, take the first character, convert to integer
hS          # Return the minimum
Jim
quelle
0

Python 3 , 33 Bytes

lambda l:min(str(x)[0]for x in l)

Probieren Sie es online aus!

@DJMcMayhem und @totallyhuman haben bessere Lösungen, aber meine geht von einer numerischen Eingabe anstelle einer Zeichenfolge aus.

Simon
quelle
0

Pyth, 3 Bytes

hhS

Eingabe ist eine Liste von Zeichenfolgendarstellungen von Zahlen.

Probieren Sie es online aus

Erläuterung:

hhS
    # Q=input
  S # Sort Q
 h  # First Element of sorted list
h   # First element of string
    # Implicitly print result
Jacoblaw
quelle