Bei einer nicht leeren Liste positiver Dezimalzahlen geben Sie die größte Zahl aus der Zahlenmenge mit den wenigsten Stellen aus.
Die Eingabeliste ist nicht in einer bestimmten Reihenfolge und kann wiederholte Werte enthalten.
Beispiele:
[1] -> 1
[9] -> 9
[1729] -> 1729
[1, 1] -> 1
[34, 3] -> 3
[38, 39] -> 39
[409, 12, 13] -> 13
[11, 11, 11, 1] -> 1
[11, 11, 11, 11] -> 11
[78, 99, 620, 1] -> 1
[78, 99, 620, 10] -> 99
[78, 99, 620, 100] -> 99
[1, 5, 9, 12, 63, 102] -> 9
[3451, 29820, 2983, 1223, 1337] -> 3451
[738, 2383, 281, 938, 212, 1010] -> 938
Der kürzeste Code in Bytes gewinnt.
code-golf
number
arithmetic
Calvins Hobbys
quelle
quelle
Antworten:
Pyth,
736 BytesTest Suite
Erläuterung:
7 Byte Lösung:
Test Suite
Erläuterung:
quelle
Python 2,
4842 Bytes-6 Bytes dank @Dennis (
min
eher verwenden alssorted
)Alle Testfälle sind auf ideone
Nimm das Minimum der Liste durch (Länge, Wert)
quelle
min
sollte funktionieren stattsorted
.sorted()[0]
gegenmin
? Ich halte das für eine triviale Modifikation Ihres ursprünglichen Codes.len(`x`)+1./x
für die gleiche Länge. Schade das du das brauchst1.
.Gelee , 7 Bytes
Testen Sie es bei TryItOnline
Oder sehen Sie sich alle Testfälle auch bei TryItOnline an
Wie?
quelle
05AB1E , 5 Bytes
Code:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
Ruby, 34 Bytes
Sehen Sie es auf eval.in: https://eval.in/643153
quelle
MATL , 14 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Retina ,
2416 BytesProbieren Sie es online! oder führen Sie alle Testfälle aus .
8 Bytes gespart dank Martin!
Der All-Test verwendet eine etwas ältere Version des Codes, der Algorithmus ist jedoch identisch. Ich werde es aktualisieren, um näher zu sein, wenn ich mehr Zeit habe.
Der abschließende Zeilenumbruch ist erheblich. Sortiert die Zahlen nach dem umgekehrten numerischen Wert und sortiert sie dann nach der Anzahl der Ziffern. Dies lässt uns die größte Nummer mit den wenigsten Stellen an der ersten Stelle, so dass wir nur die verbleibenden Stellen löschen können.
quelle
G1`
für die letzte Stufe verwenden.#
. Sie kümmern sich nur um die relative Reihenfolge für eine bestimmte Ganzzahllänge, und innerhalb einer Länge ist die lexikografische Sortierung von Zahlen korrekt.\w+
als Standard für das Sortieren vorschlagen sollen , auf diese Weise müsste ich nicht so vielMathematica,
3331 BytesMinimalBy wählt alle Elemente der ursprünglichen Eingabeliste mit der geringsten Punktzahl aus
IntegerLength
, dh mit der geringsten Anzahl von Ziffern. und dann gibt Max den größten aus.Vielen Dank an Martin Ender für das Finden und Speichern von 2 Bytes für mich :)
quelle
Perl 6 , 18 Bytes
Erläuterung:
Verwendung:
quelle
Gelee , 8 Bytes
Probieren Sie es online! oder Überprüfen Sie alle Testfälle.
Erläuterung
quelle
JavaScript (ES6), 51
Prüfung
quelle
J,
21-14BytesDank Meilen und (indirekt) Jonathan 7 Bytes gespart!
Dies ist eine Viererkette:
Lassen Sie uns über die Eingabe gehen
10 27 232 1000
. Die innere Gabel besteht aus drei Zinken.#@":"0
berechnet die Größen,,.
fasst jede Größe mit ihrem negierten (-
) Element zusammen . Bei der Eingabe10 27 232 1000
bleibt uns Folgendes übrig:Nun haben wir
{.@/:
als äußere Zinke. Dies ist zuerst monadisch ({.
) über dyadisch (/:
). Das heißt, wir nehmen das erste Element des Ergebnisses von dyadic/:
. Dies sortiert sein rechtes Argument nach seinem linken Argument, was uns zu unserer Eingabe verhilft:Dann
{.
gibt uns using das erste Element dieser Liste und wir sind fertig:Alte Version
Wir arbeiten immer noch an Verbesserungen. Ich habe es von 30 golfen und ich denke, das ist gut genug. Ich werde es zuerst in grundlegende Teile zerlegen:
So funktioniert das
Dies ist ein monadischer Zug, aber dieser Teil ist ein Haken. Das Verb
>./@(#~ ] = <./@])
wird mit dem linken Argument als Eingabe für die Hauptkette und den Größen#@":"0
als dem rechten Argument aufgerufen . Dies wird berechnet als length (#
) over (@
) Standardformat (":
) , d. H. Als numerische Zeichenfolge, die für die 0-Zellen (dh Mitglieder) der Eingabe ("0
) angewendet wird .Lassen Sie uns über die Beispieleingabe gehen
409 12 13
.Nun zum inneren Verb
>./@(#~ ] = <./@])
. Es sieht so aus>./@(...)
, als ob dies effektiv den Maximalwert (>./
) von (@
) bedeutet, was darin enthalten ist(...)
. Was das Innere betrifft, ist dies ein Vierzug, der diesem Fünfzug entspricht:[
verweist auf das ursprüngliche Argument und]
auf das Größenarray;409 12 13
und3 2 2
jeweils in diesem Beispiel. Der rechte Strich<./@]
berechnet2
in diesem Fall die Mindestgröße .] = <./@]
ist0 1 1
in diesem Fall ein boolesches Array von Werten, die dem Minimum entsprechen . Übernimmt schließlich[ #~ ...
Werte aus dem linken Argument gemäß der Maske mit den rechten Argumenten. Dies bedeutet, dass die entsprechenden Elemente0
gelöscht und1
beibehalten werden. Also bleiben wir mit12 13
. Schließlich wird gemäß dem oben Gesagten das Maximum genommen, was uns das korrekte Ergebnis von gibt13
, und wir sind fertig.quelle
>./@#~[:(=<./)#@":"0
. Ich denke, es könnte ein bisschen mehr zu retten sein{.@/:#@":"0,.-
aber die Eingabe als Liste geformt werden400 12 13
?JavaScript (ES6), 62 Byte
quelle
Gleichstrom, 54 Bytes
Erläuterung:
Beispiel ausführen : 'input.txt' enthält alle Testfälle in der Anweisung der Frage
Ausgabe:
quelle
Java 7,
112104 BytesAnderer Ansatz zum Speichern mehrerer Bytes dank @ Barteks2x .
Ungolfed & Testfälle:
Probieren Sie es hier aus.
Ausgabe:
quelle
Bash, awk, sortiere 53 Bytes
Liest die Eingabe von stdin, ein Wert pro Zeile
Bash und Sort,
5857 Bytesquelle
while
und entfernen((
.JavaScript ES6,
807770 BytesIch hoffe ich gehe in die richtige Richtung ...
quelle
a.map(i=>i.length).sort((a,b)=>a-b)[0]
durchMath.min(...a.map(i=>i.length))
?Math.max
:a=>(m=Math.max)(...a.filter(l=>l.length==-m(...a.map(i=>-i.length))))
Es scheint jedoch nur 1 Byte zu sparen.filter
kann das durch ein ersetzt werdenmap
, das0
Werte zurückgibt , die den Test nicht bestehen:a=>(m=Math.max)(...a.map(l=>l.length+m(...a.map(i=>-i.length))?0:l))
Brachylog , 16 Bytes
Probieren Sie es online!
Erläuterung
quelle
Haskell, 39 Bytes
quelle
34
zu2
.Javascript (ES6),
575453 BytesMeine vorherige Version war mathematisch orientierter, aber 1 Byte größer:
Testfälle
quelle
MATL , 11 Bytes
Die Eingabe ist ein Spaltenvektor (der
;
als Trennzeichen verwendet wird), zProbieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Verwenden wir
[78; 99; 620; 100]
als Beispiel die Eingabe .quelle
Perl,
3837 BytesBeinhaltet +1 für
-a
Geben Sie Input auf STDIN:
maxmin.pl
:Verwendet linearen Speicher in der größten Anzahl. Versuchen Sie es also nicht mit zu großen Zahlen. Eine Lösung ohne diesen Fehler ist 38 Bytes:
All dies ist sehr umständlich und fühlt sich überhaupt nicht optimal an ...
quelle
R
724136 BytesDie Funktion wurde mit einem neuen Ansatz umgeschrieben. Golf 5 Bytes dank eines Vorschlags von @bouncyball.
Erklärt:
Eingerückt / erklärt:
quelle
function
:i=scan();n=nchar(i);max(i[n==min(n)])
n=nchar(i<-scan())
.Bash + Coreutils, 58 Bytes
Das Eingabeformat ist ein Wert pro Zeile. Golfvorschläge sind willkommen.
Erläuterung:
quelle
sed q
=head -1
Python 2 - 41 Bytes
quelle
Python 2, 58 Bytes
quelle
Python 3, 56 Bytes
Verwendet einen Lambda in einem Lambda!
Python 2, 53 Bytes
Gleich, aber mit Backticks
quelle
Pip , 11 Bytes
Übernimmt Eingaben als Befehlszeilenargumente. Probieren Sie es online!
Zum ersten Mal mit dem
S
AugenoperatorK
! Wie bei Pythonsorted()
wird eine Funktion verwendet, die auf jedes Element der Iteration angewendet und das Ergebnis als Sortierschlüssel verwendet wird. So funktioniert dieses Programm:quelle
Clojure, 63 Bytes
wie in:
Obwohl ich mir sicher bin, dass es einen Weg gibt, es kleiner zu machen.
quelle
PHP, 86 Bytes
quelle