Eingang:
Eine Liste von ganzen Zahlen
Ausgabe:
Platzieren Sie jede Ziffer (und das Minuszeichen) in der angegebenen Reihenfolge auf einer eigenen Spur -0123456789
, wobei doppelte Ziffern ignoriert werden.
Beispiel:
Eingang: [1,729,4728510,-3832,748129321,89842,-938744,0,11111]
Ausgabe:
-0123456789 <- Added as clarification only, it's not part of the output
1
2 7 9
012 45 78
- 23 8
1234 789
2 4 89
- 34 789
0
1
Herausforderungsregeln:
- Doppelte Ziffern in der Nummer werden ignoriert.
- I / O kann in jedem vernünftigen Format vorliegen. Die Eingabe kann als Liste / Array von Zeichenfolgen oder als Zeichen-Array erfolgen. Die Ausgabe kann als Liste von Zeichenfolgen, Zeichen, Zeichenmatrix usw. erfolgen.
- Nachgestellte Leerzeichen sind optional.
- Beliebig viele führende oder nachfolgende neue Zeilen sind optional (jedoch nicht zwischen den Zeilen).
- Die Eingabe enthält immer mindestens eine Ganzzahl
- Sie werden eine ganze Reihe von zumindest unterstützen ,
-2,147,483,648
obwohl2,147,483,647
(32-Bit). - Die Eingangsliste wird nie enthalten
-0
,00
(oder mehr als zwei Nullen) oder ganze Zahlen mit führenden Nullen (dh012
). - Wenn Ihre Sprache ein anderes Symbol für negative Zahlen verwendet (wie ein oberes
¯
), können Sie dieses auch verwenden, sofern es konsistent ist. - Zwischen den Ziffern darf ein Leerzeichen stehen (also kann eine Zeile ohne 5 oder 8
- 0 1 2 3 4 6 7 9
anstelle von stehen-01234 67 9
), solange dies konsistent ist (und daher sollte auch ein Leerzeichen zwischen-
und stehen0
).
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie ggf. auch eine Erklärung hinzu.
Testfälle:
Input: [1,729,4728510,-3832,748129321,89842,-938744,0,11111]
Output:
1
2 7 9
012 45 78
- 23 8
1234 789
2 4 89
- 34 789
0
1
Input: [4,534,4,4,53,26,71,835044,-3559534,-1027849356,-9,-99,-3459,-3459,-94593,-10234567859]
Output:
4
345
4
4
3 5
2 6
1 7
0 345 8
- 345 9
-0123456789
- 9
- 9
- 345 9
- 345 9
- 345 9
-0123456789
Input: [112,379,-3,409817,239087123,-96,0,895127308,-97140,923,-748]
Output:
12
3 7 9
- 3
01 4 789
0123 789
- 6 9
0
123 5 789
-01 4 7 9
23 9
- 4 78
Input: [-15,-14,-13,-12,-11,10,-9,-8,-7,-5,-4,-3,-1,0,9,100,101,102,1103,104,105,106,116,-12345690]
Output:
- 1 5
- 1 4
- 1 3
- 12
- 1
-01
- 9
- 8
- 7
- 5
- 4
- 3
- 1
0
9
01
01
012
01 3
01 4
01 5
01 6
1 6
-0123456 9
Input: [99,88,77,66,55,44,33,22,11,10,0,0,0,-941]
Output:
9
8
7
6
5
4
3
2
1
01
0
0
0
- 1 4 9
¯
anstelle von verwenden-
?"-0 1 2 3 4 <space> 6 7 <space> 9"
(Mehrere Räume in den Kommentaren kollabiert bekommen, aus irgendeinem Grund)Antworten:
Stax , 8 Bytes
Führen Sie es aus und debuggen Sie es
Bei Standardeingabe wird eine Nummer pro Zeile benötigt. Sie ermittelt den Zielindex jedes Zeichens und ordnet ihn diesem Index des Ergebnisses zu. Wenn der Index außerhalb der Grenzen liegt, wird das Array mit Nullen erweitert, bis es passt. Während der Ausgabe
0
wird ein Leerzeichen. Der Rest sind Zeichencodes.Ausgepackt, ungolfed und kommentiert, so sieht es aus.
Führen Sie dieses aus
quelle
["7"]
. Dieses Format kann auch mehrere Werte verarbeiten, z["34", "43"]
.05AB1E , 13 Bytes
Code:
Verwendet die 05AB1E- Codierung. Probieren Sie es online!
Erläuterung:
quelle
vðTúyvyÐd+ǝ},
;) 4 Bytes sparen können .ǝ
das so weiter funktionieren würde-0
. Aber jetzt, wo ich es verstehe, ist es tatsächlich eine Zahl und keine Zeichenkette, wie ich es zum ersten Mal las: PHaskell , 51 Bytes
-1 Byte dank Laikoni .
Probieren Sie es online!
Diese Herausforderung ist digitalistisch. D:
quelle
"-0123456789"
ist ein Byte kürzer als'-':['0'..'9']
.JavaScript,
5958 BytesEingabe und Ausgabe als Array von Zeichenfolgen.
Versuch es
Original
Nimmt Eingaben als ein Array von Zeichenfolgen und gibt ein Array von Zeichenarrays aus
Code-Snippet anzeigen
quelle
APL (Dyalog) ,
3212 Bytes28 Bytes gespart dank @ Adám und @ngn
Probieren Sie es online!
quelle
{' '@(~∊∘⍵)'¯',⎕D}¨
. Kann natürlich auch-
mit Kleinigkeiten umgehen.{⊃¨⍵∘.∩'¯',⎕d}
⊃¨⎕∘.∩'¯',⎕d
05AB1E ,
1713 Bytes4 Bytes gespart dank Adnan
Probieren Sie es online!
Erläuterung
quelle
Rubin , 42 Bytes
Anonymes Lambda, das das Array von Zahlen verarbeitet:
Probieren Sie es online!
Alternativ ist ein vollständig Perl-ähnliches Vollprogramm viel kürzer. Ich würde sagen,
-pl
Schalter sehen in diesem Zusammenhang ziemlich lustig aus:Ruby
-pl
, 29 BytesProbieren Sie es online!
Schließlich ist Folgendes möglich, wenn die Ausgabezeichenfolgen in Anführungszeichen gesetzt werden dürfen:
Ruby
-n
, 27 BytesProbieren Sie es online!
quelle
JavaScript (Node.js) , 60 Byte
Probieren Sie es online!
quelle
join
Trick ist reizend - aber die Frage lautet, dass ein Array von Zeichenfolgen in Ordnung ausgegeben wird. Vielleicht können Sie 8 Bytes rasieren, indem Sie es entfernen?(X+"").includes(x)
mit ziemlicher Sicherheit einen anderen retten, indem Sie ihn durchRegExp(x).test(X)
(X+"").match(x)
wäre noch kürzer. Die Frage ermöglicht es auch, dass die Eingabe ein Array von Zeichenfolgen ist, so dass dies sogar möglich istX.match(x)
.Japt , 16 Bytes
Eingabe und Ausgabe als Array von Zeichenfolgen.
Versuch es
Erläuterung
quelle
Python 3 ,
7764 Bytes-12 Bytes dank @Rod
Probieren Sie es online!
Mein erster richtiger Golfversuch in Python. Beratung willkommen!
Gibt ein 2D-Array von Zeichen zurück.
quelle
'-0123456789'
stattdessen verwendenrange(10)
und den ersten Block ablegen undstr(z)
mit tauschenz
. Sie können auch zu python2 wechseln und`y`
stattdessen verwendenstr(y)
(``
entspricht + -repr
)in "-
.Perl 5
-pl
, 33 BytesProbieren Sie es online!
Nimmt die Eingabe als zeilengetrennt.
quelle
Haskell , 47 Bytes
Probieren Sie es online!
Fügt
max
ein Leerzeichen ein, bei dem kein Element vorhanden ist, da ein Leerzeichen kleiner als eine Ziffer oder ein Minuszeichen ist.Wenn eine gottlose Anzahl von nachgestellten Leerzeichen in Ordnung ist, können zwei Bytes gespeichert werden:
45 Bytes
Probieren Sie es online!
quelle
MATL , 13 Bytes
Die Eingabe ist ein Zellenarray von Zeichenfolgen. Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
J ,
3227 Bytes-5 Bytes dank FrownyFrog!
Probieren Sie es online!
Ursprüngliche Lösung:
J , 32 Bytes
Erläuterung:
@":
in Zeichen umwandeln und}11$' '"0
Ändern Sie den Inhalt eines Arrays mit 11 Leerzeichen in diese Zeichen'_0123456789'i.[
an den Stellen, die durch die Indizes der Zeichen in dieser Liste angegeben sindProbieren Sie es online!
quelle
10|.":(10<."."0@[)}11$' '"0
Google Sheets , 124 Bytes
Die Eingabe ist eine durch Kommas getrennte Liste in der Zelle
A1
. Die Ausgabe liegt in dem Bereich,B1:L?
in dem?
jedoch viele Einträge eingegeben wurden. (Sie können die Formel beliebig platzieren. Ich habe sie nur aus Gründen derB1
Übersichtlichkeit ausgewählt.) Beachten Sie, dass Sheets automatisch vier schließende Klammern am Ende der Formel anfügt und uns diese vier Bytes erspart.Ein weiterer Testfall und ein weiterer Testfall
Erläuterung:
Mid("-0123456789",Row($1:$11),1)
wählt nacheinander jedes der 11 Zeichen aus.Find(Mid(~),Split(A1,","))
sucht nach diesen Zeichen in jedem der Eingabeelemente. Dies gibt entweder einen numerischen Wert oder einen Fehler zurück, falls dieser nicht gefunden wird.If(IsError(Find(~)," ",Mid(~))
Gibt ein Leerzeichen zurück, wenn das Zeichen nicht gefunden wurde, oder das Zeichen, wenn es gefunden wurde. (Ich wünschte, es gäbe einen Weg, um zu vermeiden, dass das dupliziert wirdMid(~)
Teils aber ich kenne keinen.)ArrayFormula(If(~))
Das ist es, was die mehrzelligen Referenzen inMid(~)
undFind(~)
funktionieren lässt. Es ist auch das, was eine Formel in einer Zelle dazu bringt, Werte in mehreren Zellen zurückzugeben.Transpose(ArrayFormula(~))
transponieren Sie das zurückgegebene Array, da es seitwärts beginnt.quelle
Gelee , 12 Bytes
Probieren Sie es online!
-2 Danke an Jonathan Allan , der eine Regel gelesen hat, die ich nicht gelesen habe.
Beachten Sie, dass das in der TIO-Verbindung verwendete E / A-Format nicht das tatsächliche Format ist, das als Liste von Zeichenfolgendarstellungen eingegeben und als Liste von Zeilen ausgegeben wird.
quelle
Perl 6 , 35 Bytes
Probieren Sie es online!
Die Ausgabe ist eine Zeichenmatrix, die entweder Regex-Übereinstimmungen oder Leerzeichen enthält.
quelle
-pe
würden Sie vermutlich auf die anfängliche .map, geschweifte Klammern und den Austausch$^a
für$_
-p
und-n
scheinen irgendwie fehlerhaft , zumindest auf TIO. Aus irgendeinem Grund$_
wird nicht an Blöcke übergeben. Siehe Beispiel 1 , Beispiel 2 .Java 8, 53 Bytes
Meine eigene Herausforderung ist einfacher als ich dachte, als ich es geschafft habe.
Ein- und Ausgabe sowohl als
java.util.stream.Stream<String>
.Erläuterung:
Probieren Sie es online aus.
quelle
C (gcc) , 159 Bytes
Probieren Sie es online!
quelle
R ,
9675 BytesProbieren Sie es online!
Vielen Dank an Kevin Cruijssen, der diesen Regex-Ansatz vorgeschlagen hat!
Übernimmt die Eingabe von stdin als durch Leerzeichen getrennte Ganzzahlen und druckt die ASCII-Grafik in stdout.
quelle
function(N)for(i in N)cat(paste(gsub(paste("[^","]",sep=i)," ","-0123456789"),"\n"))
. (Eingabe als String-Array statt als Integer-Array.) Probieren Sie es online aus.SOGL V0.12 ,
1413 BytesProbieren Sie es hier aus!
Erläuterung:
quelle
SNOBOL4 (CSNOBOL4) , 85 Bytes
Probieren Sie es online!
quelle
Pyth, 14 Bytes
Nimmt Eingaben als Liste von Zeichenfolgen und gibt eine Liste von Zeichenfolgen für jede Zeile aus.
Probieren Sie es hier aus
Erläuterung
quelle
Netzhaut , 26 Bytes
Probieren Sie es online! Hinweis: Leerzeichen am Ende. Erläuterung:
%
Führt die untergeordnete Stufe~
einmal für jede Eingabezeile aus.~
Führt zuerst die untergeordnete Stufe aus, die die Zeile umschließt[^
und]<CR><SP>
ein Programm erstellt, das Zeichen, die nicht in der Zeile stehen, durch Leerzeichen ersetzt. Das"-0123456789"
gibt an, dass die Eingabe für dieses Programm die angegebene Zeichenfolge ist ($
Ersetzungen sind zulässig, aber ich brauche sie nicht).quelle
Perl 5
-n
, 30 BytesWürde nicht funktionieren wenn
-
es irgendwo anders als auf der ersten Position erscheinen könnteProbieren Sie es online!
quelle
-
es irgendwo anders auftauchen könnte als auf der ersten Position, wenn dies zutrifft, dann beantworten Sie diese Herausforderung nicht, da es sich nicht mehr um ganze Zahlen handelt. : PRot , 94 Bytes
Nimmt die Eingabe als einen Block von Zeichenfolgen
Probieren Sie es online!
quelle
CJam , 20 Bytes
Probieren Sie es online!
Akzeptiert Eingaben als durch Leerzeichen getrennte Liste von Ganzzahlen. So ziemlich der gleiche Ansatz wie @adnans Antwort.
quelle
C (GCC) ,
9594 BytesProbieren Sie es online!
Eingabe in Form einer Liste von Zeichenfolgen. Ausgabe an STDOUT.
quelle
c++
und Ändernd=c?c+47:
and=c++?c+46:
.K4 ,
3027 BytesLösung:
Beispiel:
Erläuterung:
Rückgabe "-0123 ..." oder "" basierend auf der Eingabe. Von rechts nach links interpretiert. Keine Konkurrenz für die APL-Antwort :(
quelle
APL + WIN, 33 Bytes
Fordert zur Eingabe des Bildschirms als Zeichenfolge auf
quelle