Biorąc pod uwagę uporządkowaną listę liczb (ewentualnie z wiodącymi zerami), ustaw liczby w pionie, a następnie pozwól, aby wszystkie zera spadły do samego dołu, a wszystkie zwisy opadły do najniższego otwartego miejsca. Wypisz wynikowe liczby całkowite, usuwając początkowe zera.
Przykład działania
Powiedzmy, że otrzymaliśmy następujące dane wejściowe:
['0000312941295', '239124000124581598', '32852353800451258', '10235923505185190', '1491359102149']
Najpierw ułóżmy go pionowo:
0000312941295
239124000124581598
32852353800451258
10235923505185190
1491359102149
Następnie, kolumna po kolumnie, upuszczaj zera „przez” inne liczby, aby spoczywały na dole i „popychaj” pozostałe liczby w górę. Spowodowałoby to, że pierwsze kroki byłyby następujące:
2000312941295
339124000124581598
12852353800451258
10235923505185190
0491359102149
^
2300312941295
329124000124581598
14852353800451258
10235923505185190
0091359102149
^
2390312941295
328124000124581598
14252353800451258
10935923505185190
0001359102149
^
...
2391312941295
328524538124581598
14232323525451258
10915991001185190
0000350000049
^
Następnie upuść wszystkie zwisy, jakby grawitacja ciągnęło je jak piasek.
2391312941295
3285245381245 1598
14232323525458258
10915991001181190
00003500000495
^
2391312941295
3285245381245 598
14232323525458158
10915991001181290
000035000004951
^
...
2391312941295
3285245381245
14232323525458159
10915991001181258
000035000004951908
^
Na koniec wypisz te liczby, usuwając wiodące zera. W naszym sprawdzonym przykładzie dane wyjściowe:
[2391312941295, 3285245381245, 14232323525458159, 10915991001181258, 35000004951908]
W innym przykładzie załóżmy, że wprowadzono [1234000,12345678,1234,12340608,12341234]
.
1234000
12345678
1234
12340608
12341234
Usuń zera:
1234
12345678
1234163
12340208
12340004
Upuść pozostałe wystające cyfry:
1234
1234567
12341638
12340208
12340004
Dane wyjściowe to [1234, 1234567, 12341638, 12340208, 12340004]
.
Zasady
- Dane wejściowe mogą zawierać początkowe zera. Dane wyjściowe nie mogą zawierać zer wiodących.
- Jeśli dotyczy, możesz założyć, że wejście / wyjście będzie pasować do rodzimego typu Integer w twoim języku.
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
źródło
14232323525458159
do14232323525458160
)and all overhangs drop to the bottom-most open slot
było dobrym rozwiązaniem dla mojego zepsutego wyzwania :).. 1234
jest bardzo różne niż wypisywanie1234
.Odpowiedzi:
Galaretka , 8 bajtów
Wypróbuj online!
Jak to działa
źródło
Sort each row of the transpose by logical NOT, pushing 0's to the end.
Czy gwarantuje to stabilność?sorted
, co gwarantuje stabilność.ṚZẸÞ€ZṚḌ
zamienna : :)05AB1E , 11 bajtów
Wypróbuj online!
źródło
†
używany, niezły.Łuska , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 , 118 bajtów
Wypróbuj online!
Wersja bez golfa
Pierwsze dwa wiersze są równoważne
map(lambda*a...)
domyślnemu zachowaniu, jeślimap
należy wypełnićNone
s, jeśli jedna lista jest krótsza od drugiej.e>'0'
jest równoważnecell != '0' and cell != None
, ponieważ jeśli jest to dowolna cyfra (1 ~ 9), będzie miała wyższy punkt kodowy, a (dowolny) ciąg znaków będzie wyższy niżNone
.źródło
Pyth , 11 bajtów
Wypróbuj online!
źródło
Retina 0.8.2 ,
9592 bajtówWypróbuj online! Objaśnienie: Pierwszy etap upuszcza wiszące cyfry, ponieważ ułatwia to (edytuj: jeszcze łatwiejsze zapisywanie 3-bajtowe) drugiemu etapowi upuszczanie zer. Trzeci etap usuwa następnie wiodące zera.
źródło
Rubinowy , 104 bajty
Wypróbuj online!
Wyjaśnienie
źródło
APL (Dyalog Unicode) , 26 bajtów SBCS
Anonimowa funkcja milczącego prefiksu przyjmująca macierz znaków jako argument i zwracająca listę liczb.
Wypróbuj online!
⍉
transponuj dane wejściowe (ponieważ musimy pracować nad kolumnami)' 0'(
...)⍤1⍨
zastosować następującą funkcję milczącą do każdego wiersza (sub-macierzy tensora od rangi 1) z' 0'
jak prawego argumentu (⍨
swapy argumentów):∩
Przecięcie wiersza i∘
i⊃
pierwszy' 0'
(tj
row∩' '
, wszystkie przestrzenie z każdego rzędu),
śledzony przez…~
ustawiona różnica(tj
row~' 0'
. wiersz, ale bez spacji i zer),
śledzony przez…∩
Przecięcie rzędzie i∘
a⊃
, pierwszą∘
z⌽
odwróconą' 0'
(to znaczy
row∩'0'
, wszystkie zera z każdego rzędu)⍎⍤1
ocenić każdy wiersz (pod matrycą z napinaczem stopień 1)∘
z⍉
transpozycję że (tj każdej kolumnie, obecnie zmodyfikowane wiersze wejściowe)źródło
⍎⍤1∘⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1∘⍉
(⎕io←0
) Może być jeszcze gra w golfa, np. Nie⍋
⍎⍤1⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1⍉⎕
Perl 5 , -p0 77 bajtów
Liczenie w starym stylu: 79 bajtów (
+2
dlap0
)Podaj dane wejściowe jako wiersze na STDIN bez końcowej nowej linii (w przeciwnym razie wszystko jest widziane jako zwis, a końcowa nowa linia wznosi się na górę, gdy łańcuch wejściowy ulega awarii). Na przykład:
To było trochę trudne, aby upuścić zwis i
0
upuścić w jednym wyrażeniu regularnymWypróbuj online!
źródło
Ruby , 203 bajty
Wypróbuj online!
Lambda akceptuje tablicę ciągów znaków i zwraca tablicę liczb całkowitych. Czuję, że czegoś mi brakuje; wydaje się to ogromne: /
źródło
APL (Dyalog Classic) ,
242322 bajtówWypróbuj online!
oparty na rozwiązaniu Adama
źródło