Ich habe eine Liste mit Dezimalstellen:
4, 4, 4, 7, 7, 9, 9, 9, 9, 2, 2, 2, 4, 4
Die Liste der Dezimalstellen wird als Elemente bezeichnet. Wir können aus diesen Elementen "Brocken" bilden, indem wir identische und benachbarte Zahlen zusammenfassen. Ich möchte jedem Block eine eindeutige Nummer zuweisen, beginnend mit 1, und um 1 in der Reihenfolge erhöhen, in der die Blöcke in der ursprünglichen Liste erscheinen. Die Ausgabe für das angegebene Beispiel würde also folgendermaßen aussehen:
1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5
Eingabeformat
Eine Liste der Ziffern. (0-9) Sie können Ihre integrierten Sprachen verwenden, um diese Liste zu lesen, wie Sie möchten. Codierung: ASCII
Ausgabeformat
Eine Reihe von Dezimalzahlen, die durch ein Trennzeichen getrennt sind. Ihr Programm muss immer das gleiche Trennzeichen verwenden. Das Trennzeichen muss länger als 0 Bit sein. Codierung: ASCII
Es gelten Standardlücken.
quelle
You may use your language built-ins to read this list however you want.
. Bedeutet das, dass wir einen String zum Auflisten des Konverters in unsere Einreichung aufnehmen müssen? Und dürfen wir als Liste ausgeben?Antworten:
Python 3.8 (Vorabversion) , 41 Byte
Probieren Sie es online aus!
Loben Sie das magische Walross
:=
der Zuweisungsausdrücke.Python 2 , 42 Bytes
Probieren Sie es online aus!
quelle
id
weil es 2 Bytes lang ist ...id
Python 2 , 44 Bytes
Probieren Sie es online aus!
quelle
APL (dzaima / APL) , 7 Byte SBCS
Anonyme stillschweigende Präfixfunktion. Druckt durch Leerzeichen getrennt.
Probieren Sie es online aus!
2≠/
paarweise Ungleichung1,
1 voranstellen+\
kumulative Summequelle
Gelee ,
65 BytesProbieren Sie es online aus!
Ein Byte dank UnrelatedString gespeichert !
Ein- und Ausgänge als Arrays (mit öffnenden / schließenden Klammern)
Wie es funktioniert
quelle
Wolfram Language (Mathematica) , 29 Bytes
Probieren Sie es online aus!
quelle
05AB1E , 5 Bytes
Probieren Sie es online aus!
quelle
¥Ā
könnte auch seinüÊ
.Haskell , 40 Bytes
Probieren Sie es online aus!
quelle
Perl 6 , 21 Bytes
Probieren Sie es online aus!
Anonymer Codeblock, der eine Liste aufnimmt und eine Liste zurückgibt. Dies funktioniert durch Vergleichen, ob jedes Paar benachbarter Elemente nicht gleich ist, als durch Berechnen der kumulierten Summe der Liste.
quelle
05AB1E , 4 Bytes
Probieren Sie es online aus!
quelle
ƶ
... +1ηεγg
R , 33 Bytes
Probieren Sie es online aus!
Verwendet dieselbe kumulative Summenmethode wie Luis Mendo und andere.
quelle
MATL , 8 Bytes
Probieren Sie es online aus!
Erläuterung:
quelle
Gelee , 4 Bytes
Probieren Sie es online aus!
Wie?
quelle
Oktave / MATLAB, 25 Bytes
Probieren Sie es online aus!
quelle
Haskell ,
4643 BytesProbieren Sie es online aus!
Anonyme punktfreie Funktion, die eine Liste erstellt und eine Liste zurückgibt
quelle
J , 12 Bytes
Probieren Sie es online aus!
Ähnlich wie bei Adáms APL-Antwort
quelle
Perl 5 , 27 Bytes
Probieren Sie es online aus!
Mit der Befehlszeilenoption
-p
liest Perl die Eingabezeile von STDIN in die "Standardvariable"$_
. Anschließend werden alle Ziffern$_
durch den Zähler ersetzt$i
. Und$i
wird für jede Ziffer erhöht, die sich von der vorherigen Ziffer unterscheidet, die sich auch bei der ersten Ziffer befindet, sodass der Zähler bei beginnt1
. Die vorherige Ziffer wird in gespeichert$p
.quelle
Pyth ,
1311 BytesProbieren Sie es online aus!
-2 Bytes dank Mr. Xcoder
quelle
hMsM._+0nVt
für -2 Bytes.rQ8
r8
.n
s
Q
Scala , 75 Bytes
Probieren Sie es online aus!
Wenn ein- und ausgegeben werden müssen Komma getrennt String (und nicht Liste) , dann 102 Bytes.
quelle
Gelee , 5 Bytes
Probieren Sie es online aus!
Ich strebte zunächst einen 4-Byter an (dasselbe Programm, aber ohne
Ż
), merkte dann aber schnell, dass aufgrund eines Versehens jedes Mal eine 1 vorangestellt werden musste ... Auch wenn es in Jelly noch einen 5-Byter gibt, werde ich Behalten Sie dies tatsächlich bei, da eine andere Methode verwendet wird.quelle
JavaScript (ES6), 30 Byte
Nimmt die Eingabe als Array von Ganzzahlen auf.
Probieren Sie es online aus!
Kommentiert
quelle
PHP , 52 Bytes
Probieren Sie es online aus!
Eingabe über Befehlszeile, Ausgabe an
STDOUT
.Danke an @ Night2 für den nervigen
'0' == 0
Vergleich Bugfix!quelle
Julia 1.0 , 56 Bytes
Probieren Sie es online aus!
quelle
Japt v2.0a0, 9 Bytes
Versuch es
quelle
Add ++ , 23 Bytes
Probieren Sie es online aus!
Wie es funktioniert
quelle
Japt ,
87 BytesVersuch es
quelle
Retina 0,8,2 , 34 Bytes
Probieren Sie es online aus! Erläuterung:
Ordnen Sie jede Zahl der Reihe nach zu.
Suchen Sie rückwärts nach so vielen Übereinstimmungen wie möglich. (Die nächsten Einträge werden in der Reihenfolge von rechts nach links angezeigt, da Lookbehind so funktioniert.)
Überspringen Sie die Trennzeichen.
Versuchen Sie, dieselbe Nummer wie beim letzten Mal zu finden, aber wenn dies nicht der Fall ist, stimmen Sie einfach mit einer beliebigen Nummer überein, aber denken Sie daran, dass wir eine neue Nummer finden mussten.
Stellen Sie sicher, dass die gesamte Nummer übereinstimmt.
Zählen Sie die Anzahl der neuen Nummern.
quelle
Stax , 10 Bytes
Führen Sie es aus und debuggen Sie es
Die Ausgabe verwendet Leerzeichen als Trennzeichen. Die Eingabe folgt den genauen Spezifikationen, wobei Kommas als Trennzeichen verwendet werden und jetzt geschweifte Klammern eingeschlossen werden.
quelle
C (gcc) ,
6261 BytesDies ist einer der wenigen Einträge, die ich gemacht habe, bei denen ein vollständiges Programm kürzer ist als eine Funktionsübermittlung!
Beim ersten Durchgang ist mir der vorherige Wert egal, daher kann ich mich auf die Tatsache verlassen, dass dies
argv
ein Zeiger auf irgendwo ist und es äußerst unwahrscheinlich ist, dass er zwischen [0..9] liegt!Probieren Sie es online aus!
quelle
Scala , 114 Bytes
Probieren Sie es online aus!
quelle
C (gcc) , 62 Bytes
Probieren Sie es online aus!
Eine Funktion, die die Liste und ihre Länge als Argumente verwendet.
C (gcc) , 60 Bytes
Probieren Sie es online aus!
Ausgaben in unär, begrenzt durch0
squelle