W akapicie tekstu są mieszane cyfry i litery. Twoim zadaniem jest oddzielenie cyfr po lewej stronie i liter alfabetu po prawej stronie w tej samej kolejności każdego wiersza.
Zasady:
- Liczby są zwykłymi liczbami całkowitymi; więc nie ma kropki dziesiętnej ani żadnych znaków ujemnych / dodatnich.
- Liczby mogą, ale nie muszą być ciągłe, ale bez względu na przypadek, należy je przesunąć na lewą stronę w tej samej kolejności.
- Cyfry mogą występować pomiędzy słowami.
- Tekst zawiera tylko litery i cyfry ASCII, a także spacje, podkreślenia, przecinki i kropki.
- Zwycięża ten, kto robi to przy minimalnej liczbie naciśnięć klawiszy (jak makra vim) lub najmniejszej ilości bajtów w przypadku skryptów.
Przykładowy tekst:
A word can have any number of text like 433884,
but all the numb89ers has to be moved left side
but alph6abetical va9lues has to be pas46ted on right side.
The text might con4tain chara29cters s2huffled like hlep or dfeintino or even
meaningless1 words co43mbined togeth81er.
Oczekiwany wynik:
433884A word can have any number of text like ,
89but all the numbers has to be moved left side
6946but alphabetical values has to be pasted on right side.
4292The text might contain characters shuffled like hlep or dfeintino or even
14381meaningless words combined together.
Odpowiedzi:
Siatkówka , 14 bajtów
Wypróbuj online!
Wyjaśnienie
O
wprowadza etap sortowania.%
mówi Retinie, aby zastosowała transformację do każdej linii osobno.$
nakazuje sortowanie dopasowań według wyniku podanego podstawienia.Sam regex jest taki,
\d|(.)
który albo pasuje do cyfry, albo do wszystkiego innego, co jest przechwytywane w grupie1
. Jest to podstawione$#1
liczbą przechwyceń grupy1
. Oznacza to, że kluczem do sortowania cyfr jest0
i kluczem do sortowania wszystkiego innego1
. Ponieważ sortowanie w siatkówce jest stabilne, to po prostu przesuwa cyfry w lewo, a wszystko inne w prawo.źródło
05AB1E,
1410 bajtówKod:
Wyjaśnienie:
Przykładowe dane wejściowe:
Przykładowe dane wyjściowe:
Wypróbuj online
źródło
Python 3, 64 bajty
Trzy równoważne rozwiązania! Nie mogę wybrać.
źródło
while 1:print(*sorted(input(),key=lambda x:-('/'<x<':')),sep='')
Perl, 17 bajtów
Kod 16 bajtów + 1 przełącznik
Wymaga
-p
.Stosowanie
Alternatywnie:
Wymaga
-n
.Stosowanie
źródło
Hoon ,
9283 bajty++lore
dzieli wieloliniowy przewód na a(list cord)
,(trip +<)
zamienia go w taśmę.++skid
dzieli listę na dwie części: jedna strona, w której funkcja zwraca tak, jedna strona, w której zwraca nie. Nasza funkcja próbuje parsować znak za++nud
pomocą (numerycznego) i sprawdza, czy parsuje się w pełni, a następnie łączymy obie listy z powrotem w taśmę.źródło
MATL ,
1312 bajtówWychodzi z błędem (domyślnie dozwolone), generując prawidłowe dane wyjściowe.
Wypróbuj online!
Wyjaśnienie
źródło
V, 12 bajtów
V jest niedokończonym językiem golfowym opartym na łańcuchach 2D. Mimo, że jest niedokończony, program ten działa od zatwierdzenia 45 , który został opublikowany ostatniej nocy, co czyni go konkurencyjną odpowiedzią. (Większość moich poprzednich odpowiedzi V było niekonkurencyjnych).
Uwaga, końcowy znak nowej linii jest konieczny, chociaż wynika to z błędu.
Wypróbuj online!
Wyjaśnienie:
¨Ä©¨ä©/²±
rozwija się do wyrażenia regularnego vim:która nie jest cyfrą,
(\D)
po której następuje cyfra(\d)
i zamienia je.Ponieważ jest on wypełniony dużymi znakami Unicode, oto odwracalny zrzut heksowy:
źródło
JavaScript ES6, 40 bajtów
a=>a.replace(/\D/g,'')+a.replace(/\d/g,'')
Wypróbowałem kilka innych rozwiązań, ale nie mogłem go pomniejszyć.
Moja pierwsza próba była,
a=>[...a.match(/\d/g),...a.match(/\D/g)].join``
ale to 5 bajtów dłużejWypróbuj tutaj
Pokaż fragment kodu
źródło
CJam,
91316 bajtówNie ma
f$
...Ta 13-bajtowa wersja prawie działa:
źródło
PowerShell v2 +, 55 bajtów
Ze względu na potrzebę obsługi wprowadzania wieloliniowego, musimy enkapsulować nasze
-replace
instrukcje za pomocą pętli i-split
znaków nowej linii. W przeciwnym razie w zasadzie odpowiada rozwiązaniu JavaScript .źródło
Pyth - 11 bajtów
Nie podoba mi się mój test grupowania. Pobiera dane wejściowe jako listę linii, powiedz mi, czy to nie jest w porządku.
Wypróbuj online tutaj .
źródło
Pyth,
1615 bajtów1 bajt dzięki @FryAmTheEggman .
Wypróbuj online!
Przykładowe dane wejściowe:
Przykładowe dane wyjściowe:
Jak to działa
źródło
U
ponieważ mapy automatycznie rzucają liczby całkowite na zakresy.Siatkówka, 16 bajtów
Stabilny sortowanie bąbelkowe.
Przykładowe dane wejściowe:
Przykładowe dane wyjściowe:
Wypróbuj online!
źródło
C #, 59 bajtów
Prosta funkcja C # lambda przy użyciu wyrażenia regularnego.
Próbka wyjściowa
źródło
C # (LINQ), 110 bajtów
Zdecydowanie nie jest to najkrótsze rozwiązanie, ale pomyślałem, że byłoby to dobre zastosowanie LINQ.
źródło
char.IsDigit
istnieje ...Współczynnik 61
To naiwne podejście.
"\n"split
dzieli ciąg na górze stosu na linie. Następnie dlaeach
wiersza:[ digit? ] partition
dzieli każdą linię tylko na cyfry i tylko na cyfry[ write ] bi@
wypisuje oba inl
wypisuje nowy wiersz.PS:
Jako słowo 90 bajtów (71, jeśli zastąpisz-factish-long-name 1 literą):
źródło
Pyth, 14 bajtów
Wypróbuj online!
Wyjaśnienie:
Logika rozwiązania jest taka sama jak w odpowiedzi Lynn .
źródło
Java 8,
13012686 bajtów-4 bajty konwertują Java 7 na 8 i usuwając nieużywany znak
-40 bajtów konwertuje program do działania i zmienia
[^\\d]
na\\D
Wyjaśnienie:
Wypróbuj tutaj.
źródło
GNU Sed, 28
Wynik obejmuje +1 za
-r
opcję sed.Kilkakrotnie przełącza jeden znak nie będący liczbą, a następnie jeden znak liczby, aż nie będzie więcej podstawień.
Niestety, wyrażenia regularne sed nie mają
\d
lub\D
, więc muszą być napisane odręcznie.Ideone.
źródło
Oktawa,
3732 bajtyźródło
Clojure, 113 bajtów
Sortuje cyfry na początku linii.
źródło
Oracle SQL 11.2, 131 bajtów
Linie w ciągu wejściowym są oddzielone „¤”. W ten sposób nie jest konieczne tworzenie tabeli, która będzie używana jako dane wejściowe.
Zapytanie:
Nie grał w golfa
źródło
APL, 28 znaków
źródło
Haskell, 60 bajtów
Stosowanie
źródło
Sed, 35 bajtów
To tworzy kopię linii, usuwa cyfry z jednej kopii i litery z drugiej, przed ich ponownym połączeniem.
źródło
Bash, 42 bajty
Ostrzegamy, że ta rekurencyjna implementacja wprowadza nowy proces dla każdego wiersza danych wejściowych!
źródło
Japt v2 ,
1412 bajtów-2 bajty dzięki produktom ETH
Uruchom
źródło
Julia 0.6 , 77 bajtów
Anonymous function taking a string and printing output. Loops over characters, adding them to the left
l
or rightr
buffers until it finds a newline, then it prints and empties buffers. Lots of potential useful constructs likesort
,filter
and logical indexing (indexing with an array of boolean values) don't work on Strings.Try it online!
źródło
Vim, 30 keystrokes
Record a search and replace action that moves digits to the left of non-digits. Call the macro recursively until an exception is thrown by the pattern not being found (when there are no more digits to the right of any non-digits).
źródło
C (gcc), 106 bytes
Try it online!
źródło