Cara kerja pengodean
Diberikan daftar bit:
- Pegang prime (dimulai dengan
2
) - Punya daftar
- Untuk setiap bit dalam input
- Jika sama dengan bit sebelumnya, tambahkan perdana yang Anda pegang ke daftar
- Jika berbeda, pegang prime berikutnya dan tambahkan ke daftar
- Kembalikan produk semua angka dalam daftar Anda
- Untuk bit pertama, anggap bit sebelumnya adalah
0
Catatan: langkah-langkah ini hanya untuk tujuan ilustrasi, Anda tidak diharuskan untuk mengikutinya.
Contohnya
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
Beberapa contoh lagi:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
Tantangan
Tulis pembuat enkode dan decoder untuk metode penyandian ini.
(Decoder membalikkan proses encoder).
Input output
Encoder dapat mengambil input dalam format apa pun yang masuk akal
Encoder harus menampilkan bilangan bulat atau string
Decoder harus mengambil input dalam format yang sama dengan yang encoder utput
Decoder harus menampilkan format yang sama dengan yang diambil oleh encoder sebagai input
Dengan kata lain decoder( encoder( input ) ) === input
Catatan
- Dekoder dapat mengasumsikan bahwa inputnya dapat didekodekan
- Jawaban Anda hanya harus berurusan dengan bilangan bulat bahwa bahasa Anda native dapat mendukung tanpa menggunakan (
long
,bigInt
, dll), masuk akal, jika Anda bahasa hanya mendukung int hingga 1, mungkin mempertimbangkan kembali posting jawaban
Mencetak gol
Skor Anda adalah jumlah dari panjang dalam byte encoder dan decoder.
Jika Anda perlu mengimpor modul, impor hanya dapat dihitung satu kali asalkan encoder dan decoder Anda dapat hidup berdampingan dalam file yang sama dan digunakan kembali (seperti fungsi).
Celah default dilarang.
Ini adalah kode-golf sehingga skor terpendek untuk setiap bahasa menang.
Jawaban:
05AB1E , 13 byte
Encoder, 8 byte
Cobalah online!
Penjelasan
Decoder, 5 byte
Cobalah online!
Penjelasan
sumber
Jelly , 17 byte
Pengkode (10 byte):
Cobalah online!
Dekoder (7 byte):
Cobalah online!
Bagaimana?
Encoder:
Dekoder:
sumber
JavaScript (ES6), 130 byte
I / O: array bit ↔ integer
Encoder, 71 byte
Cobalah online!
Decoder, 59 byte
Cobalah online!
sumber
Java 10, 209 byte
Encoder, 124 byte
Cobalah online.
Penjelasan:
Decoder, 85 byte
Cobalah online.
Penjelasan:
sumber
long
keint
.Sekam , 18 byte
Encoder, 11 byte
Cobalah online!
Decoder, 7 byte
Cobalah online!
Bagaimana mereka bekerja
Encoder:
Dekoder:
sumber
Python 2 ,
234193174 byteEncoder,
11610197 byte:Menggunakan teorema Wilson .
Cobalah online!
Decoder,
1189277 byte:Cobalah online!
sumber
J , 34 byte
Sangat terinspirasi oleh solusi Jelly Jonathan Allan's!
Encoder: 23 byte
Cobalah online!
Saya tidak suka banyak garpu itu
[:
- itu harus golf.Decoder: 11 byte
Cobalah online!
sumber
Jelly , 15 byte
Encoder, 9 byte
Cobalah online!
Decoder, 6 byte
Cobalah online!
sumber
C (gcc) ,
180184 byte102 bytes - Encoder
Cobalah online!
82 bytes - Decoder
Cobalah online!
sumber
Gol> <> , 29 + 39 = 68 byte
Encoder, 29 byte
Cobalah online!
Decoder, 39 byte
Cobalah online!
Bagaimana cara kerjanya?
Akan lebih baik jika saya bisa bermain golf di putaran perdana berikutnya ...
sumber