Biorąc pod uwagę listę z zagnieżdżonymi listami, zwróć listę z zagnieżdżonymi elementami list.
Wejście
Lista będzie mieć najwyżej 4 zagnieżdżone listy. Policz wszystkie zera w danych wejściowych jako spację zerową.
Wynik
Indywidualnie wydrukuj każdy element. Nie drukuj danych wyjściowych jako listy. Możesz oddzielić każdy element dowolnym rodzajem białych znaków.
Przykłady przypadków
[[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
Najkrótszy kod wygrywa.
[[[[5]]]]
, prawda?[[[[5]]]]
działa na tio.run/…, ale nie na tio.run/…Count all 0's within the input as a null space.
średniignore zeros
Odpowiedzi:
APL (10)
Wyjaśnienie:
⍞~'[]'
: Wprowadzane przez użytkownika (⍞
) bez (~
) znaków'[]'
Daje to coś takiego
'1,2,0,2,3'
⍎
: Oceń ten ciąg. Tak się składa, że,
jest to operator konkatenacji, więc teraz mamy listę:1 2 0 2 3
(listy APL są domyślnie oddzielone spacjami)0~⍨
: Usuń wszystkie cyfry 0 z tej listy. (Jest to lista liczb, a nie ciągów, więc zera w liczbach nie są usuwane.źródło
Sed, 20 znaków
Rozwiązanie oparte jest na rozszerzonym wyrażeniu regularnym POSIX.
Wyjście :
Edycja : Podstawowe wyrażenie regularne POSIX ( rozwiązanie @clueless ), 19 znaków :
źródło
s/[^0-9][^1-9]*/ /g
działa również i nie wymaga rozszerzonych wyrażeń regularnych.Python, 45
w00, obsługa wyjątków w golfie!
źródło
d(input())
wiersza w liczbie znaków.Perl,
201613 znaków-l
Przełącznik jest niezbędne dla zachowania końcowego znaku nowej linii na wyjściu.Oto alternatywna wersja, która faktycznie działa semantycznie z listami (51 znaków).
Oba te programy wykorzystują zastrzeżenie problemu, zgodnie z którym „może oddzielić każdy element dowolnym rodzajem spacji” i zamienia zera na puste miejsca, zamiast usuwać je całkowicie.
źródło
K, 12
.
źródło
x^y
) w ten sposób:{(,//x)^0}
a nawet{,/x^0}/
. Działa w johnearnest.github.io/ok/index.htmlPerla
13, 14 char dit:p
liczyć na jeden charstosowanie:
źródło
p
przełącznik do liczby).Ruby, 38 znaków
Liczby są drukowane oddzielone znakiem podziału linii.
źródło
Golfscript 15
Wejście
Uruchom z wiersza poleceń, tak:
(zakładając, że
x.gs
plik zawiera kod przedstawiony powyżej).Zauważ, że nie ma przecinków (
,
) podczas definiowania tablic; taka jest składnia GolfscriptWynik
Po wydaniu polecenia opisanego w sekcji Wejście dane wyjściowe to:
źródło
Python 3, 49 znaków
Python 2, 58 znaków
źródło
Japt , 5 bajtów
Sprawdź to
Wyjaśnienie
Domniemane wejście tablicy
U
. Spłaszcz tablicę za pomocąc
. Filtruj za pomocą,f
aby usunąć0
s. Połącz go z ciągiem znaków, używając spacji¸
. Wyjściowy wynik wynikowego ciągu.źródło
Java 10, 106 bajtów
Wejście jako zagnieżdżone
Object[]
, wyjście wydrukowane do STDOUT.Wypróbuj online.
46 bajtów
Wejście i wyjście zarówno jako
String
.Wypróbuj online.
źródło
C, 45 znaków
Zakłada się, że dane wejściowe są podawane w modyfikowalnym obszarze pamięci wskazanym przez
s
.źródło
01
(wydaje mi się legalny). I*s-49&&puts(s)
jest krótszy.Python,
99111 znakówPoprzednia wersja 99 znaków - kończy się niepowodzeniem, gdy uwzględniane są tylko listy z zerami:
d(l)
rekurencyjnie spłaszcza listęl
, jednocześnie filtrując zera i konwertując liczby na ciągi.źródło
a and b or c
zamiast Ca?b:c
, ale kończy się niepowodzeniem, gdyb
wartość jest fałszywa (w tym przypadku pusta lista).Scala, 42 znaki
Tokenizowany ciąg za pomocą cyfr i cyfr, po których następuje zero.
źródło
Prolog (79)
Wprowadza listę jako termin, więc musisz wstawić „.” po liście w danych wejściowych.
W rzeczywistości spłaszcza listę.
źródło
APL (Dyalog) , 4 bajty
Wypróbuj online!
0~⍨
zera usunięte z∊
ε nlisted (spłaszczone) daneźródło
Stax , 2 bajty
Uruchom i debuguj
$
jest spłaszczony.f
odfiltrowuje wartości falsey i drukuje na osobnych wierszach.źródło
Scala 147:
Praca na prawdziwych listach, a nie na ciągach:
Teraz dane testowe:
źródło
bash: 29 znaków
liczenie linii 2 tylko bez „echo $ l |”. Test na 3 próbki:
źródło
Tcl , 47 bajtów
Wypróbuj online!
Zakładając, że 4-głęboki jest podobny
{{{{5}}}}
. Ponieważ nie ma takiego przykładu na przypadkach testowych, może to być coś takiego{{{5}}}
; jeśli tak, mogę skrócić kod!Tcl , 66 bajtów
Wypróbuj online!
źródło
Pyth, 5 bajtów
Zestaw testowy
źródło
R , 29 bajtów
Wypróbuj online!
unlist
konwertuje listę naatomic
vector
rekurencyjnie, więc musimy tylko odfiltrować elementy zerowe.źródło
JavaScript (Node.js) , 53 bajty
Wypróbuj online!
źródło
Brachylog , 8 bajtów
Wypróbuj online!
Pobiera dane wejściowe przez zmienną wejściową i drukuje dane wyjściowe rozdzielone znakami nowej linii. Zwykle narzekałem na format wyjściowy, ale tak naprawdę zaoszczędziłem bajt w sposób, w jaki mógłbym nie pomyśleć inaczej - nałożenie
ẉ⊥
końca jest krótsze niż owinięcie go{}ᶠ
.Jeśli elementy listy nie są ograniczone do nieujemnych liczb całkowitych:
Brachylog , 11 bajtów
Wypróbuj online!
źródło
PHP , 70 bajtów
Wypróbuj online!
To nie będzie najkrótsza (ani najdłuższa), ale pomyślałam, że będzie to okazja, by ją wykorzystać
array_walk_recursive()
, a do dziś nie mogę myśleć o tym, żeby kiedykolwiek ją wykorzystać! Przynajmniej powinna być w stanie obsłużyć listy zagnieżdżone na dowolnym poziomie.źródło
Wolfram Language (Mathematica) , 37 bajtów
Wypróbuj online!
źródło