Hassen Sie es nicht, wenn Sie eine Liste von Zahlen (Vektor, Array ...) von einem Programm in ein anderes kopieren und einfügen möchten, aber das Format, in dem Sie die Zahlen haben, stimmt nicht mit dem Format überein, in dem Sie sie benötigen ?
In MATLAB können Sie beispielsweise eine durch Leerzeichen getrennte Liste haben:
[1 2 3 4 5] (you can also have it comma separated, but that's not the point)
In Python müssten Sie Kommas einfügen, damit diese Liste eine gültige Eingabe ist, sodass Sie sie in konvertieren müssen
[1, 2, 3, 4, 5]
damit es funktioniert. In C ++ möchten Sie vielleicht etwas wie:
{16,2,77,29}
und so weiter.
Um das Leben aller zu vereinfachen, erstellen wir einen Listenkonverter, der eine Liste in einem beliebigen Format * erstellt und eine Liste in einem anderen angegebenen Format ausgibt.
Die gültigen Klammern sind:
[list]
{list}
(list)
<list>
list (no surrounding brackets)
Die gültigen Begrenzer sind:
a,b,c
a;b;c
a b c
a, b, c <-- Several spaces. Must only be supported as input.
a; b; c <-- Several spaces. Must only be supported as input.
a b c <-- Several spaces. Must only be supported as input.
Beachten Sie, dass die Eingabe beliebig viele Leerzeichen zwischen den Zahlen enthalten kann. Die Ausgabe kann jedoch auch null Leerzeichen (wenn ,
oder ;
als Trennzeichen verwendet) oder ein einzelnes Leerzeichen (wenn es durch Leerzeichen getrennt ist) verwenden.
Zusätzlich zur Eingabeliste gibt es eine Zeichenfolge (oder zwei Zeichen), die das Ausgabeformat definiert. Die Formatzeichenkette wird zuerst der Öffnungsbügel Typ sein (nur) [
, (
, <
, {
oder (die letzten ist ein einziger Raum verwendet , wenn es keine umgebende Klammer). Die Halterung Typ wird von dem Trennzeichen - Typ folgen,
,
, ;
oder (die letzten ist ein einziger Raum). Die beiden Eingabeformatzeichen müssen als einzelnes Argument (Zeichenfolge oder zwei aufeinanderfolgende Zeichen) in der oben beschriebenen Reihenfolge verwendet werden.
Einige Beispiele für Formatstrings:
[, <-- Output format: [a,b,c]
{; <-- Output format: {a;b;c}
<-- Two spaces, output list has format: a b c
Regeln:
- Die Ausgabe darf keine führenden Leerzeichen enthalten
- Die Ausgabe kann abschließende Leerzeichen und eine neue Zeile enthalten
- Die Ausgabe sollte nur die Liste der Zahlen sein, nicht
ans =
oder ähnlich
- Die Ausgabe sollte nur die Liste der Zahlen sein, nicht
- Die Eingabe besteht aus einer Liste von Ganzzahlen oder Dezimalzahlen (sowohl positive als auch negative (und Null)) und einer Zeichenfolge aus zwei Zeichen
- Wenn die Eingabe nur aus Ganzzahlen besteht, sollte die Ausgabeliste nur Ganzzahlen enthalten. Wenn die Eingabeliste aus Ganzzahlen und Dezimalzahlen besteht, können alle Ausgabezahlen Dezimalzahlen sein. (Es ist optional, die Ganzzahlen als Ganzzahlen beizubehalten.)
- Die maximal zu unterstützende Anzahl von Nachkommastellen beträgt 3.
- Die Eingabe besteht aus zwei Argumenten. Dh die Zahlen sind in einem Argument und die Formatzeichenfolge ist ein einzelnes Argument.
- Der Code kann ein Programm oder eine Funktion sein
- Die Eingabe kann ein Funktionsargument oder STDIN sein
Einige Beispiele:
1 2 3 4
[,
[1,2,3,4]
<1; 2; 3>
; <-- Space + semicolon
1;2;3
not valid: 1.000;2.000;3.000 (Input is only integers => Output must be integers)
{-1.3, 3.4, 4, 5.55555555}
[,
[-1.300,3.400,4.000,5.556] (5.555 is also valid. Rounding is optional)
also valid: [-1.3,3.4,4,5.55555555]
Der kürzeste Code in Bytes gewinnt. Wie immer wird der Gewinner eine Woche ab dem Tag ausgewählt, an dem die Herausforderung veröffentlicht wurde. Antworten, die später veröffentlicht werden, können trotzdem gewinnen, wenn sie kürzer als der aktuelle Gewinner sind.
Bestenliste
Das Stapel-Snippet am Ende dieses Beitrags generiert den Katalog aus den Antworten a) als Liste der kürzesten Lösungen pro Sprache und b) als Gesamt-Bestenliste.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
## Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
## Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Snippet angezeigt wird:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
_
bezeichnet negative Elemente. :(Antworten:
CJam, 27 Bytes
Probieren Sie es hier aus.
Erläuterung
quelle
JavaScript (ES6), 75
82Als anonyme Funktion
Bearbeiten: 2 Byte gespeichert thx @ user81655 (und 5 weitere, die es gerade überprüfen)
Testschnipsel
quelle
CJam,
3534 BytesTeste es hier.
Erwartet das Format in der ersten Zeile und die Liste in der zweiten.
Erläuterung
quelle
Pyth, 33 Bytes
Probieren Sie es online aus: Demo oder Test Suite
Erläuterung:
quelle
PowerShell,
1081009585 Bytes(siehe Versionsverlauf für frühere Versionen)
Golfed weitere 15 Bytes , die durch das Entfernen
$b
und$s
Variablen und Pars auf dem inneren Strang zu verändern.Dies nimmt Eingaben als zwei Zeichenfolgen und speichert sie in
$i
und$z
, dann konstruieren wir eine neue Ausgabezeichenfolge. Die innere Pars-split
s$i
mit einem regex nur Ziffern zu wählen, und dann-join
zusammen s zurück mit den gewünschten Trennzeichen. Wir verketten das mit dem ersten Zeichen der Begrenzereingabe (z. B.[
) und schließen es mit der Indizierung in eine Zeichenfolge auf der Grundlage des ASCII-Werts des ersten Zeichens und einiger Formulierungsprobleme. Das Äußere.Trim()
entfernt alle führenden oder nachfolgenden Leerzeichen.quelle
"]})>"["[{(< ".IndexOf($b[0])]
durch so etwas wie ersetzen' }) >]'[($b[0]-32)%6]
. Das($b[0]-32)%6
gibt Ihnen0,2,4,5,1
zum Öffnen Klammerzeichen, mit denen Sie in die schließende Klammerzeichenfolge indizieren können' }) >]'
. Es könnte eine kürzere "Formel" geben, aber das scheint gut genug zu sein.()
weil ich direkt nebeneinander war, aber die anderen Klammern haben einen Buchstaben dazwischen, also habe ich mit der Indizierung angefangen. Vielen Dank!String.Replace()
anstelle des-replace
Operators würden Sie weitere 2 Bytes kaufen (kein Entweichen oder Definieren einer Zeichenklasse mit[]
).Replace('[]{}()<>;,',' ')
werden die einzelnen Zeichen nicht abgefangen, sondern es wird versucht, das symbolische Ganze zu finden, das es nicht gibt. Wir müssten Regex.Replace verwenden , was einen[regex]::
.NET-Aufruf beinhaltet und stattdessen den Code verlängern würde.-ne''
anstelle von Golf|?{$_}
.Python 2, 96 Bytes
Anrufen als:
Ausgabe:
quelle
JavaScript (ES6),
829211692 BytesEine anonyme Funktion, führen Sie es so aus
Dies kann wahrscheinlich viel weiter golfen werden ..
Ungolfed
quelle
The input will be a list of integer or decimal numbers (both positive and negative (and zero)), and a string of two characters
.Mathematica, 108 Bytes
Mathematica ist im Allgemeinen umständlich mit Zeichenfolgeneingaben, sofern die Zeichenfolge nicht als Text interpretiert werden soll.
Erläuterung
StringCases[t,NumberString]
gibt die Liste der Zahlenketten zurück.Riffle
fügt die Trennzeichen zwischen den Zahlen ein./.Thread[c@"[ {<(" -> c@"] }>)"])
Ersetzt die linke "Klammer" durch die rechte Klammer.<>
ist die Infixform vonStringJoin
. Es klebt die Teilstrings zusammen.quelle
Matlab, 85 Bytes
Beispiel Verwendung:
quelle
Julia, 95 Bytes
Dies ist eine Funktion
f
, die zwei Zeichenfolgen akzeptiert und eine Zeichenfolge zurückgibt.Ungolfed:
quelle
Bash + GNU Utilities, 90
quelle