Kodlama nasıl çalışır?
Bir bit listesi verildiğinde:
- Asal tut (ile başlayan
2
) - Bir listeniz var
- Girişteki her bit için
- Önceki bit ile aynıysa, tuttuğunuz asalı listeye ekleyin
- Farklıysa, bir sonraki asalınızı tutun ve listeye ekleyin
- Listenizdeki tüm numaraların ürününü iade edin
- İlk bit için, önceki bitin
0
Not: bu adımlar yalnızca açıklama amaçlıdır, bunları izlemenize gerek yoktur.
Örnekler
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
Bazı örnekler:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
Meydan okuma
Bu kodlama yöntemi için bir kodlayıcı ve bir kod çözücü yazın .
(Kod çözücü kodlayıcının işlemini tersine çevirir).
Giriş çıkış
Kodlayıcı girişi makul herhangi bir biçimde alabilir
Kodlayıcı bir tamsayı veya bir dize çıktısı almalıdır
Kod çözücü girişi, kodlayıcının kullandığı formatta almalıdır.
Kod çözücü, kodlayıcının girdi ile aynı formatta çıktı alması gerekir
Diğer bir deyişle decoder( encoder( input ) ) === input
notlar
- Dekoder, girişinin deşifre edilebilir olduğunu varsayabilir
- Cevabınız sadece dil doğal olarak (kullanmadan destekleyebilir tamsayılar uğraşmak zorundadır
long
,bigInt
sadece 1'e int'leri destekler dil varsa, makul ol, vs.), belki Yanıt göndererek yeniden
puanlama
Skorunuz enkoder ve dekoderin bayt cinsinden uzunluklarının toplamıdır.
Bir modülü içe aktarmanız gerekirse, kodlayıcı ve kod çözücünüz aynı dosyada bir arada bulunabiliyorsa ve yeniden kullanılabilirse (işlevler gibi) içe aktarma yalnızca bir kez sayılabilir.
Varsayılan boşluklar yasaktır.
Bu kod golf yani her dil için en kısa puan kazanır.