Mam listę cyfr dziesiętnych:
4, 4, 4, 7, 7, 9, 9, 9, 9, 2, 2, 2, 4, 4
Lista cyfr dziesiętnych nazywana jest pozycjami. Możemy tworzyć „fragmenty” z tych przedmiotów, grupując razem identyczne i sąsiednie liczby. Chcę przypisać każdemu fragmentowi unikalny numer, zaczynając od 1 i zwiększając go o 1 w kolejności, w jakiej fragmenty pojawiają się na oryginalnej liście. Dane wyjściowe dla podanego przykładu wyglądałyby następująco:
1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5
Format wejściowy
Lista cyfr. (0-9) Możesz użyć wbudowanych języków, aby przeczytać tę listę, jak chcesz. Kodowanie: ASCII
Format wyjściowy
Szereg liczb dziesiętnych oddzielonych separatorem. Twój program musi zawsze używać tego samego separatora. Separator musi być dłuższy niż 0 bitów. Kodowanie: ASCII
Obowiązują standardowe luki.
źródło
You may use your language built-ins to read this list however you want.
. Czy to oznacza, że musimy dołączyć konwerter ciągu do listy w naszym zgłoszeniu? I są wolno nam wyjście w postaci listy?Odpowiedzi:
Python 3.8 (wersja wstępna) , 41 bajtów
Wypróbuj online!
Chwała magicznemu morsowi
:=
wyrażeń przydziału.Python 2 , 42 bajty
Wypróbuj online!
źródło
id
bo ma 2 bajty ...id
Python 2 , 44 bajty
Wypróbuj online!
źródło
APL (dzaima / APL) , 7 bajtów SBCS
Anonimowa ukryta funkcja prefiksu. Drukuje rozdzielone spacjami.
Wypróbuj online!
2≠/
nierówność par1,
prepend 1+\
suma skumulowanaźródło
Galaretka ,
65 bajtówWypróbuj online!
Oszczędność jednego bajtu dzięki UnrelatedString !
Wejścia i wyjścia jako tablice (z nawiasami otwierającymi / zamykającymi)
Jak to działa
źródło
Wolfram Language (Mathematica) , 29 bajtów
Wypróbuj online!
źródło
05AB1E , 5 bajtów
Wypróbuj online!
źródło
¥Ā
może być równieżüÊ
.Haskell , 40 bajtów
Wypróbuj online!
źródło
Perl 6 , 21 bajtów
Wypróbuj online!
Anonimowy blok kodu, który pobiera listę i zwraca listę. Działa to poprzez porównanie, czy każda para sąsiednich elementów nie jest równa, niż pobranie skumulowanej sumy listy.
źródło
05AB1E , 4 bajty
Wypróbuj online!
źródło
ƶ
... +1ηεγg
R , 33 bajty
Wypróbuj online!
Używa tej samej metody sumowania, co Luis Mendo i inni.
źródło
MATL , 8 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Galaretka , 4 bajty
Wypróbuj online!
W jaki sposób?
źródło
Octave / MATLAB, 25 bajtów
Wypróbuj online!
źródło
Haskell ,
4643 bajtówWypróbuj online!
Anonimowa funkcja pointfree, która pobiera listę i zwraca listę
źródło
J , 12 bajtów
Wypróbuj online!
Podobne do odpowiedzi APL Adáma
źródło
Perl 5 , 27 bajtów
Wypróbuj online!
Opcja wiersza poleceń
-p
powoduje, że perl odczytuje wiersz wejściowy ze STDIN do „zmiennej domyślnej”$_
. Następnie wyszukiwanie zastępuje wszystkie cyfry$_
licznikiem$i
. I$i
jest zwiększany dla każdej cyfry, która jest inna niż poprzednia cyfra, która jest również na pierwszej cyfrze, więc licznik zaczyna się od1
. Poprzednia cyfra jest przechowywana w$p
.źródło
Pyth ,
1311 bajtówWypróbuj online!
-2 bajty dzięki Mr. Xcoder
źródło
hMsM._+0nVt
dla -2 bajtów.rQ8
jest takie samor8
i.n
może być równieżs
dla -2Q
Scala , 75 bajtów
Wypróbuj online!
Jeśli dane wejściowe i wyjściowe muszą być oddzielone przecinkami Łańcuch (a nie Lista), to 102 bajty.
źródło
Galareta , 5 bajtów
Wypróbuj online!
Początkowo dążyłem do 4-bajtowego (ten sam program, ale bez
Ż
), ale potem szybko zdałem sobie sprawę, że a 1 trzeba było za każdym razem przygotować z powodu niedopatrzenia ... Mimo że w Galaretce jest jeszcze 5-bajterowy, faktycznie zachowaj to, ponieważ używa innej metody.Dla każdej pary sąsiednich elementów listy wprowadzaniaL. , sprawdź, czy L.ja≠ L.i + 1, ∀ 1 ≤ i < | L | i zapisz te wyniki na liście. Następnie weź skumulowaną sumę tej listy i zwiększ ją o 1, aby dopasować do systemu indeksowania porcji. TL; DR. Za każdym razem, gdy napotykamy różne sąsiadujące przedmioty, zwiększamy indeks porcji o 1 .
źródło
JavaScript (ES6), 30 bajtów
Pobiera dane wejściowe jako tablicę liczb całkowitych.
Wypróbuj online!
Skomentował
źródło
PHP , 52 bajty
Wypróbuj online!
Wejście za pomocą wiersza poleceń, wyjście do
STDOUT
.Dzięki za @ Night2 za nieznośny błąd w
'0' == 0
porównaniu!źródło
Julia 1.0 , 56 bajtów
Wypróbuj online!
źródło
Japt v2.0a0, 9 bajtów
Spróbuj
źródło
Dodaj ++ , 23 bajty
Wypróbuj online!
Jak to działa
źródło
Japt ,
87 bajtówSpróbuj
źródło
Retina 0.8.2 , 34 bajty
Wypróbuj online! Wyjaśnienie:
Dopasuj kolejno każdą liczbę.
Zacznij spoglądać wstecz, aby znaleźć jak najwięcej meczów. (Następne wpisy będą w kolejności od prawej do lewej, ponieważ tak działa lookbehind).
Pomiń separatory.
Spróbuj dopasować ten sam numer co poprzednio, ale w przeciwnym razie po prostu dopasuj dowolny numer, ale pamiętaj, że musieliśmy dopasować nowy numer.
Upewnij się, że cały numer jest dopasowany.
Policz liczbę nowych liczb.
źródło
Stax , 10 bajtów
Uruchom i debuguj
Dane wyjściowe używają spacji jako separatora. Dane wejściowe są zgodne z dokładnymi specyfikacjami, używając przecinków jako separatorów, a teraz otaczają nawiasy klamrowe.
źródło
C (gcc) ,
6261 bajtówTo jeden z niewielu wpisów, które napisałem, gdy kompletny program jest krótszy niż przesłanie funkcji!
Przy pierwszym przejściu nie dbam o poprzednią wartość, więc mogę polegać na fakcie, że
argv
jest to wskazówka gdzieś i jest bardzo mało prawdopodobne, aby była między [0..9]!Wypróbuj online!
źródło
Scala , 114 bajtów
Wypróbuj online!
źródło
C (gcc) , 62 bajty
Wypróbuj online!
Funkcja, która przyjmuje listę i jej długość jako argumenty.
C (gcc) , 60 bajtów
Wypróbuj online!
Wyjścia są jednostkowe, ograniczone przez0
sźródło