Pengantar:
Saya memiliki banyak cipher yang berbeda yang disimpan dalam dokumen yang pernah saya kompilasi sebagai seorang anak, saya memilih beberapa yang saya pikir paling cocok untuk tantangan (tidak terlalu sepele, dan tidak terlalu keras) dan mengubahnya menjadi tantangan. Sebagian besar dari mereka masih berada di kotak pasir, dan saya belum yakin apakah saya akan memposting semuanya, atau hanya beberapa. Ini yang kedua ( Computer Cipher adalah yang pertama kali saya posting).
Untuk Trifid Cipher (tanpa menggunakan kata kunci) alfabet (dan wildcard tambahan) dibagi menjadi tiga tabel 3 oleh 3:
table 1: table 2: table 3:
|1 2 3 |1 2 3 |1 2 3
-+----- -+----- -+-----
1|a b c 1|j k l 1|s t u
2|d e f 2|m n o 2|v w x
3|g h i 3|p q r 3|y z
Teks yang ingin kami enkripsikan adalah karakter pertama dengan karakter yang disandikan ke dalam nomor kolom-baris-tabel. Misalnya, teks this is a trifid cipher
menjadi:
t h i s i s a t r i f i d c i p h e r
table: 3 1 1 3 3 1 3 3 1 3 3 2 1 1 1 1 3 1 1 2 1 1 2
row: 1 3 3 1 3 3 1 3 1 3 1 3 3 2 3 2 3 1 3 3 3 2 3
column: 2 2 3 1 3 3 1 3 1 3 2 3 3 3 3 1 3 3 3 1 2 2 3
Kami kemudian meletakkan semuanya satu demi satu baris demi baris dalam tabel di atas dalam kelompok tiga:
311 331 331 332 111 131 121 121 331 331 313 133 232 313 332 322 313 313 132 333 313 331 223
Dan itu diubah kembali ke karakter menggunakan tabel yang sama:
s y y z a g d d y y u i q u z w u u h u y o
Satu hal yang perlu diperhatikan, panjang input harus coprime ke 3. Jadi jika panjangnya adalah kelipatan 3, kami menambahkan satu atau dua spasi tambahan untuk membuat panjang input tidak kelipatan 3 lagi.
Tantangan:
Diberikan string sentence_to_encipher
, enkripsinya seperti dijelaskan di atas.
Anda hanya perlu mengenkripsikan yang diberikan sentence_to_encipher
, jadi tidak perlu membuat program / fungsi penguraikan juga. Saya mungkin membuat tantangan bagian 2 untuk menguraikan di masa depan (meskipun saya merasa itu sepele / mirip dengan proses penyandian).
Aturan tantangan:
- Anda dapat mengasumsikan surat
sentence_to_encipher
wasiat tersebut hanya berisi huruf dan spasi. - Anda dapat menggunakan huruf besar atau huruf besar penuh (sebutkan mana yang Anda gunakan dalam jawaban Anda).
- Anda dapat memilih untuk menambahkan satu atau dua spasi tambahan saat panjang input 3 untuk membuatnya bukan kelipatan 3 lagi.
- I / O fleksibel. Baik input dan output dapat berupa string, daftar / array / aliran karakter, dll.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Input: "this is a trifid cipher"
Output: "syyzagddyyuiquzwuuh uyo"
Input: "test"
Output: "utbk"
Input: "output"
Possible outputs: "rrvgivx" (one space) or "rrzcc lr" (two spaces)
Input: "trifidcipher"
Possible output: "vabbuxlzz utr" (one space) or "vabbyzv rx ie " (two spaces)