Jak działa kodowanie
Biorąc pod uwagę listę bitów:
- Hold the prime (zaczynając od
2
) - Mam listę
- Dla każdego bitu na wejściu
- Jeśli jest taki sam jak poprzedni bit, dodaj liczbę pierwszą, którą trzymasz na liście
- Jeśli jest inaczej, przytrzymaj następną liczbę pierwszą i dodaj ją do listy
- Zwróć iloczyn wszystkich liczb z listy
- Dla pierwszego bitu załóżmy, że poprzedni był
0
Uwaga: te kroki mają wyłącznie charakter ilustracyjny, nie musisz ich przestrzegać.
Przykłady
Input: 001
hold 2
0: add 2 to the list
0: add 2 to the list
1: hold 3, add 3 to the list
list: 2,2,3
Output: 12
Input: 1101
hold 2
1: hold 3, add 3 to the list
1: add 3 to the list
0: hold 5, add 5 to the list
1: hold 7, add 7 to the list
list: 3,3,5,7
Output: 315
Kilka innych przykładów:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
Wyzwanie
Napisz koder i dekoder dla tej metody kodowania.
(Dekoder odwraca proces enkodera).
Wejście wyjście
Koder może przyjmować dane wejściowe w dowolnym rozsądnym formacie
Koder musi wyprowadzać liczbę całkowitą lub ciąg znaków
Dekoder musi pobierać dane wejściowe w tym samym formacie, w jakim koder podaje
Dekoder musi wysyłać ten sam format, który koder przyjmuje jako dane wejściowe
Innymi słowy decoder( encoder( input ) ) === input
Notatki
- Dekoder może założyć, że jego wejście jest dekodowalne
- Twoja odpowiedź musi dotyczyć liczb całkowitych, które Twój język może natywnie obsługiwać bez użycia (
long
,bigInt
itp.), Być rozsądna, jeśli Twój język obsługuje tylko liczby całkowite do 1, być może ponownie rozważ opublikowanie odpowiedzi
Punktacja
Twój wynik jest sumą długości w bajtach enkodera i dekodera.
Jeśli musisz zaimportować moduł, import można policzyć tylko raz, pod warunkiem, że Twój koder i dekoder mogą współistnieć w tym samym pliku i zostać ponownie użyte (podobnie jak funkcje).
Domyślne luki są zabronione.
To jest golf golfowy, więc wygrywa najkrótszy wynik dla każdego języka.
Odpowiedzi:
05AB1E , 13 bajtów
Koder, 8 bajtów
Wypróbuj online!
Wyjaśnienie
Dekoder, 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka , 17 bajtów
Koder (10 bajtów):
Wypróbuj online!
Dekoder (7 bajtów):
Wypróbuj online!
W jaki sposób?
Enkoder:
Dekoder:
źródło
JavaScript (ES6), 130 bajtów
I / O: tablica bitów ↔ liczba całkowita
Koder, 71 bajtów
Wypróbuj online!
Dekoder, 59 bajtów
Wypróbuj online!
źródło
Java 10, 209 bajtów
Koder, 124 bajty
Wypróbuj online.
Wyjaśnienie:
Dekoder, 85 bajtów
Wypróbuj online.
Wyjaśnienie:
źródło
long
naint
.Łuska , 18 bajtów
Koder, 11 bajtów
Wypróbuj online!
Dekoder, 7 bajtów
Wypróbuj online!
Jak oni pracują
Enkoder:
Dekoder:
źródło
Python 2 ,
234193174 bajtówEnkoder,
11610197 bajtów:Wykorzystuje twierdzenie Wilsona .
Wypróbuj online!
Dekoder,
1189277 bajtów:Wypróbuj online!
źródło
J , 34 bajty
Mocno zainspirowany galaretką Jonathana Allana!
Koder: 23 bajty
Wypróbuj online!
Nie lubię tych wielu widelców do czapek
[:
- powinno być możliwe do gry w golfa.Dekoder: 11 bajtów
Wypróbuj online!
źródło
Galareta , 15 bajtów
Koder, 9 bajtów
Wypróbuj online!
Dekoder, 6 bajtów
Wypróbuj online!
źródło
C (gcc) ,
180184 bajtów102 bajty - koder
Wypróbuj online!
82 bajty - dekoder
Wypróbuj online!
źródło
Gol> <> , 29 + 39 = 68 bajtów
Enkoder, 29 bajtów
Wypróbuj online!
Dekoder, 39 bajtów
Wypróbuj online!
Jak działają
Byłoby lepiej, gdybym mógł zagrać w golfa w następnej pętli ...
źródło