Möge diese Herausforderung als (eine weitere ) Hommage an Stan Lee dienen, der im Alter von 95 Jahren verstarb.
Stan Lee hat uns ein unschätzbares Erbe und ein besonderes Schlagwort hinterlassen: Excelsior . Hier ist eine kleine Herausforderung, basierend auf dem, was er sagte, was es bedeutet :
Was bedeutet schließlich "Excelsior"? "Auf und ab zu größerem Ruhm!" Das wünsche ich dir, wenn ich mit dem Twittern fertig bin! Holzwolle!
Herausforderung
Bei einer Reihe nicht negativer Ganzzahlen wird Excelsior!
jedes Mal eine Zeile ausgegeben, wenn eine Ganzzahl größer als die vorherige ist.
Regeln
- Die Eingabe ist ein Array nicht negativer Ganzzahlen.
- Die Ausgabe besteht aus Zeilen mit dem Wort
Excelsior
(case does matter), gefolgt von!
der Länge des aktuellen Laufs mit immer größeren Zahlen. Sie können auch ein Array von Zeichenfolgen zurückgeben. - Eingabe- und Ausgabeformate sind gemäß den Site-Regeln flexibel. Sie können sie also jederzeit an Ihre Sprachformate anpassen. Sie können auch Leerzeichen am Ende der Zeilen oder bei Bedarf sogar zusätzliche neue Zeilen nach oder vor dem Text einfügen.
Beispiele
Input Output
-----------------------------------
[3,2,1,0,5] Excelsior! // Excelsior because 5 > 0
[1,2,3,4,5] Excelsior! // Excelsior because 2 > 1
Excelsior!! // Excelsior because 3 > 2 (run length: 2)
Excelsior!!! // Excelsior because 4 > 3 (run length: 3)
Excelsior!!!! // Excelsior because 5 > 4 (run length: 4)
[] <Nothing>
[42] <Nothing>
[1,2,1,3,4,1,5] Excelsior! // Excelsior because 2 > 1
Excelsior! // Excelsior because 3 > 1
Excelsior!! // Excelsior because 4 > 3 (run length: 2)
Excelsior! // Excelsior because 5 > 1
[3,3,3,3,4,3] Excelsior! // Excelsior because 4 > 3
Das ist Code-Golf , also kann der kürzeste Code für jede Sprache gewinnen!
Antworten:
JavaScript (ES6),
5854 ByteProbieren Sie es online!
Kommentiert
Warum die Wiederverwendung von [] zum Speichern des vorherigen Werts sicher ist
Es gibt drei mögliche Fälle:
.map()
nicht aufgerufen und wir erhalten nur ein leeres Array, was eine leere Zeichenfolge ergibt.a < (a = c)
. Also testen wirNaN
beim ersten Test erzwungena < (a = c)
. Daher ist das Ergebnis falsch und es wird die Initialisierung vonquelle
Python 2 ,
8483817068 BytesProbieren Sie es online!
-2 Bytes, nur dank ASCII
quelle
05AB1E ,
262423 Bytes-2 Bytes dank @Kroppeb .
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Sehen Sie diese 05AB1E Spitze Mine (Abschnitt Wie Kompresse Strings nicht Teil des Wörterbuchs? ) Zu verstehen , warum
.•1Š¥èò²•
ist"excelsior"
.quelle
0Kg
mit tauschenO
?Perl 6 ,
60 5857 Bytes-1 byte dank nwellnhof
Probieren Sie es online!
Anonymer Codeblock, der eine Liste von Excelsiors zurückgibt!
quelle
Java-8
118113 BytesLeicht zu lesen :
quelle
n->{var e="";for(int i=0;i<n.length-1;System.out.print(""==e?e:"Excelsior"+e+"\n"))e=n[i++]<n[i]?e+="!":"";}
. Versuchen Sie es online ( 108 Bytes ). (Java 10+)n->{for(int e=0,i=0;i<n.length-1;)if(n[i++]<n[i])System.out.println("Excelsior"+"!".repeat(e++));else e=0;}
( 107 bytes )++e
Stattdessen musse++
mindestens eines!
gedruckt werden.e=...?e+"!":
statte=...?e+="!":
.R , 86 Bytes
Die Hälfte dieser Antwort ist @ Giuseppe. RIP Stan Lee.
Probieren Sie es online!
quelle
05AB1E ,
20 bis19 BytesProbieren Sie es online!
Erläuterung
quelle
C (gcc / clang)
1069997 BytesDank Gastropner für das Golfspielen von 2 Bytes.
Probieren Sie es hier online aus .
Ungolfed:
quelle
Japt
-R
,2522 BytesVersuch es
3 Bytes gespart dank Kamil
quelle
-R
Flag ist eigentlich nicht erforderlich, die Abfrage besagt, dass Sie ein Array von Zeichenfolgen ausgeben können.slice
on my first pass but dismissed it when it worked out too long. Coming back to it now, with your prompting, I guess I should have stuck with it 'cause I got it down to 22 too.Common Lisp, 111 bytes
Try it online!
quelle
Java 8, 106 bytes
Try it online!
(those reassignments of
s
...yikes)quelle
(s="")+s
=>(s="")
n->{String s="",z=s;for(int i=0;i<n.length-1;)z+=n[i++]>=n[i]?s="":"Excelsior"+(s+="!")+"\n";return z;}
(103 bytes) Move thes=""
to spare bytes.Stax, 17 bytes
Run and debug it
quelle
R, 111 bytes
Try it online!
A far better R tribute can be found here -- I was too fixated on
sequence
andrle
.quelle
Jelly, 16 bytes
A monadic Link yielding a list of lists of characters.
Probieren Sie es online! (Fußzeile verbindet sich mit Zeilenumbrüchen)
Wie?
quelle
Perl 5
-n
, 41 BytesProbieren Sie es online!
Übernimmt seine Eingabe in separaten Zeilen.
quelle
Japt , 22 Bytes
Probieren Sie es online!
Erklärung mit vereinfachtem Beispiel:
quelle
Powershell, 69 Bytes
Weniger Golf-Testskript:
Ausgabe:
quelle
PowerShell ,
87-85ByteProbieren Sie es online!
Es gibt wahrscheinlich eine Umstrukturierung, die sich dort versteckt, höchstwahrscheinlich im Wenn-Sonst, aber insgesamt ziemlich in Ordnung. Verwendet den alten Trick "Nicht instanziierte Variable standardmäßig auf 0", um sowohl den Index als auch den
!
.quelle
Netzhaut , 55 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
In Unary konvertieren.
Überlappende Übereinstimmungen von rechts nach links verarbeiten (obwohl die Übereinstimmungen dann von links nach rechts aufgelistet werden). Dies bedeutet, dass wir jede Zahl in einem Lauf zuordnen können und die Übereinstimmung bis zum Start des Laufs reicht. Jede Übereinstimmung unterliegt ferner der Einschränkung, dass jede zusätzliche übereinstimmende Nummer kleiner sein muss als die zuvor übereinstimmende zusätzliche Nummer oder die erste Nummer, wenn noch keine zusätzlichen Nummern übereinstimmen.
Geben Sie für jede Übereinstimmung
Excelsior
die gewünschte Anzahl zusätzlicher Nummern im Lauf aus.quelle
Pyth, 32 Bytes
Versuchen Sie es online hier oder überprüfen alle Testfälle auf einmal hier .
quelle
Jelly , 18 Bytes
Probieren Sie es online!
Ausgang über TIO eingestellt.
quelle
Lua ,
888783829695113 BytesVielen Dank an Kevin Cruijssen für das Update, das dem Geist der ursprünglichen Frage entspricht.
Probieren Sie es online!
quelle
C ++ 14 (g ++),
123 -118 BytesGlücklicherweise
std::string
hat ein Konstruktor, der einechar
. Probieren Sie es hier online aus .Dank Gastropner für die Einsparung von 5 Bytes.
Ungolfed:
quelle
C # (.NET Core) ,
115107105 BytesProbieren Sie es online!
-8 Bytes: geändert
b
in einen String, der "!" Von einem Int-Zähler enthält-2 Bytes:
b+="!"
als Inline-Funktion gesetzt (danke an Zac Faragher )Verwendet einen Aktionsdelegaten , um die Eingabe abzurufen, und erfordert keine Rückgabe.
Ungolfed:
quelle
b+="!"
Inline mit dem Excelsior machen.if(a[i]>a[i-1])Console.WriteLine("Excelsior"+(b+="!"));
Probieren Sie es online aus!PHP ,
117109 BytesProbieren Sie es online!
quelle
J, 50 Bytes
Probieren Sie es online!
ungolfed
quelle
Java, 113 Bytes
quelle
VBA, 114 Bytes
quelle
a
. Das heißt, wenn Sie die Funktion als eine definierensubroutine
, die die Eingabe als eine Variante des erwarteten Array-Typs verwendet, können Sie Ihren Ansatz in eine gültige Lösung umwandeln. Eine Golf-Version dieses Ansatzes würde so aussehensub f(x)
For i=0To UBound(x)-1
If x(i+1)>x(i)Then s=s+"!":Debug.?"Excelsior"s:Else s=""
Next
End Sub
, als würden die Brüche zwischen den Codeblöcken neue Zeilen darstellenPython 3, 87 Bytes
Oder 97 mit dem folgenden:
Dies setzt voraus, dass die Eingaben im folgenden Format erfolgen:
quelle
Japt , 25 Bytes
Probieren Sie es online!
quelle