Bei einer Liste mit darin verschachtelten Listen geben Sie die Liste mit den Elementen der verschachtelten Listen zurück, die nicht verschachtelt sind.
Eingang
Die Liste enthält höchstens 4 tief verschachtelte Listen. Zählen Sie alle Nullen in der Eingabe als Null-Leerzeichen.
Ausgabe
Drucken Sie jeden Artikel einzeln aus. Drucken Sie die Ausgabe nicht als Liste aus. Sie können jedes Element mit einem beliebigen Leerzeichen trennen.
Beispielfälle
[[1, 0], [2, 0], [2, 3]] -> 1 2 2 3
[[[4, 5, 8]], [[5, 6, 20]], [[1, 20, 500]]] -> 4 5 8 5 6 20 1 20 500
[[[1, 0], [0, 0], [0, 0]], [[1, 0], [1, 2], [2, 0]], [[2, 0], [0, 0], [0, 0]]] -> 1 1 1 2 2 2
Der kürzeste Code gewinnt.
[[[[5]]]]
, oder?[[[[5]]]]
funktioniert auf tio.run/… aber nicht auf tio.run/…Count all 0's within the input as a null space.
bedeutenignore zeros
Antworten:
APL (10)
Erläuterung:
⍞~'[]'
: Benutzereingabe (⍞
) ohne (~
) die Zeichen'[]'
Dies ergibt so etwas wie
'1,2,0,2,3'
⍎
: Bewerten Sie diese Zeichenfolge. Es kommt also vor, dass,
es sich um den Verkettungsoperator handelt. Jetzt haben wir eine Liste:1 2 0 2 3
(APL-Listen sind standardmäßig durch Leerzeichen getrennt.)0~⍨
: Entfernen Sie alle Nummern 0 aus dieser Liste. (Es handelt sich derzeit um eine Liste von Zahlen, nicht von Zeichenfolgen. Nullen in Zahlen werden daher nicht entfernt.quelle
Sed, 20 Zeichen
Die Lösung basiert auf POSIX Extended Regular Expression.
Ausgabe :
Edit : POSIX Basic Regular Expression ( @clueless 's Lösung), 19 Zeichen :
quelle
s/[^0-9][^1-9]*/ /g
funktioniert auch und erfordert keine erweiterten regulären Ausdrücke.Python, 45
W00, Ausnahmebehandlung im Golf!
quelle
d(input())
Zeile in die Zeichenanzahl aufzunehmen.Perl,
201613 ZeichenDer
-l
Schalter ist erforderlich, um die letzte neue Zeile in der Ausgabe beizubehalten.Hier ist eine alternative Version, die tatsächlich semantisch mit den Listen arbeitet (51 Zeichen).
Beide Programme nutzen die Bedingung des Problems, dass "jedes Element durch ein beliebiges Leerzeichen getrennt werden kann", und ersetzen die Nullen durch Leerzeichen, anstatt sie direkt zu entfernen.
quelle
K, 12
.
quelle
x^y
) wie folgt verwenden:{(,//x)^0}
oder sogar{,/x^0}/
. Funktioniert in johnearnest.github.io/ok/index.htmlPerl
13, 14 char dit:p
Zähle für ein ZeichenVerwendung:
quelle
p
Schalter in die Zählung einbeziehen).Ruby, 38 Zeichen
Die Zahlen werden durch einen Zeilenumbruch getrennt gedruckt.
quelle
Golfscript 15
Eingang
Führen Sie in der Befehlszeile Folgendes aus:
(vorausgesetzt, die
x.gs
Datei enthält den oben dargestellten Code).Beachten Sie, dass
,
beim Definieren der Arrays keine Kommas ( ) verwendet werden. Das ist die Golfscript-SyntaxAusgabe
Wenn der im Abschnitt Eingabe beschriebene Befehl ausgegeben wird, lautet die Ausgabe:
quelle
Python 3, 49 Zeichen
Python 2, 58 Zeichen
quelle
Japt , 5 Bytes
Probier es aus
Erläuterung
Implizite Eingabe eines Arrays
U
. Reduzieren Sie das Array mitc
. Filtern Sie es mitf
, um das0
s zu entfernen . Fügen Sie ihn mit Leerzeichen zu einer Zeichenfolge hinzu¸
. Implizite Ausgabe der resultierenden Zeichenfolge.quelle
Java 10, 106 Bytes
Eingabe als verschachtelt
Object[]
, Ausgabe als STDOUT gedruckt.Probieren Sie es online aus.
46 Bytes
Ein- und Ausgabe sowohl als
String
.Probieren Sie es online aus.
quelle
C 45 Zeichen
Es wird davon ausgegangen, dass die Eingabe in einem veränderbaren Speicherbereich erfolgt, auf den durch gezeigt wird
s
.quelle
01
(scheint mir legal). Und*s-49&&puts(s)
ist kürzer.Python,
99111 ZeichenVorherige Version mit 99 Zeichen - schlägt fehl, wenn nur Listen mit Nullen enthalten sind:
d(l)
Reduziert die Liste rekursivl
, filtert Nullen und konvertiert Zahlen in Zeichenfolgen.quelle
a and b or c
anstelle von Cs,a?b:c
aber es schlägt fehl, wenn dieb
Bewertung auf false (in diesem Fall leere Liste) erfolgt.Scala, 42 Zeichen
Tokenized die Zeichenfolge durch Nicht-Ziffern und Nicht-Ziffern, gefolgt von Null.
quelle
Prolog (79)
Die Liste wird als Begriff eingegeben, daher müssen Sie ein '.' nach der Liste in der Eingabe.
Tatsächlich wird die Liste abgeflacht.
quelle
APL (Dyalog) , 4 Bytes
Probieren Sie es online!
0~⍨
Nullen entfernt von∊
die ϵ nlisted (abgeflachten) Datenquelle
Stax , 2 Bytes
Führen Sie es aus, und debuggen Sie es
$
ist abgeflacht.f
ist, falsche Werte herauszufiltern und in separaten Zeilen zu drucken.quelle
Scala 147:
Arbeiten an realen Listen, nicht an Zeichenfolgen:
Nun die Testdaten:
quelle
Bash: 29 Zeichen
Zähle Zeile 2 nur ohne 'echo $ l |'. Test für 3 Proben:
quelle
Tcl , 47 Bytes
Probieren Sie es online!
Angenommen, 4-deep ist so etwas wie
{{{{5}}}}
. Da es in Testfällen kein Beispiel dafür gibt, kann es so etwas sein{{{5}}}
; wenn es so ist, kann ich meinen Code kürzer machen!Tcl , 66 Bytes
Probieren Sie es online!
quelle
Pyth, 5 Bytes
Testsuite
quelle
R 29 Bytes
Probieren Sie es online!
unlist
konvertiert die Liste in eineatomic
vector
rekursive, sodass wir nur die Nullelemente herausfiltern müssen.quelle
JavaScript (Node.js) , 53 Byte
Probieren Sie es online!
quelle
Brachylog , 8 Bytes
Probieren Sie es online!
Übernimmt die Eingabe über die Eingabevariable und druckt die Ausgabe durch Zeilenumbrüche getrennt. Normalerweise würde ich über das Ausgabeformat beschweren, aber es hat mich gerettet tatsächlich ein Byte in einer Art und Weise könnte ich nicht anders gedacht haben - setzen
ẉ⊥
am Ende kürzer ist als es in Verpackung{}ᶠ
.Wenn die Listenelemente nicht auf nicht negative Ganzzahlen beschränkt sind:
Brachylog , 11 Bytes
Probieren Sie es online!
quelle
PHP , 70 Bytes
Probieren Sie es online!
Dies wird nicht die kürzeste (und auch nicht die längste) sein, aber
array_walk_recursive()
ich dachte, es wäre eine Chance, sie zu nutzen , was ich mir bis heute nicht vorstellen kann, jemals eine Verwendung dafür zu finden! Zumindest sollte es in der Lage sein, beliebig tief verschachtelte Listen zu verarbeiten.quelle
Wolfram-Sprache (Mathematica) , 37 Byte
Probieren Sie es online!
quelle