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 ketiga dan termudah (setelah Computer Cipher dan Trifid Cipher yang saya posting sebelumnya).
Dengan Clock Cipher, kami menggunakan gambar berikut untuk menyandikan teks:
Jadi kalimat seperti this is a clock cipher
menjadi:
t h i s i s a c l o c k c i p h e r (without additional spaces of course, but added as clarification)
19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17
Tantangan:
Diberikan string sentence_to_encipher
, enkripsinya seperti dijelaskan di atas.
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 tidak diperbolehkan menambahkan nol di depan untuk huruf
b
- huruf terenkripsi tunggalj
, tetapi dua nol00
wajib untuk spasi. - Anda harus menggunakan
:
sebagai pemisah, dan tambahan atau jejak tambahan:
tidak diizinkan. - Anda diperbolehkan menggunakan huruf kecil
am
danpm
bukannya huruf besarAM
danPM
, selama itu konsisten.
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 pun'. - 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 clock cipher"
Output: "19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17"
Input: "test"
Output: "19:4:18:19"
Input: "what time is it"
Output: "22:7:AM:19:00:19:8:12:4:00:8:18:00:8:19"
Input: "acegikmoqsuwy bdfhjlnprtvxz"
Output: "AM:2:4:6:8:10:12:14:16:18:20:22:24:00:1:3:5:7:9:11:13:15:17:19:21:23:PM"
Input: "easy peazy"
Output: "4:AM:18:24:00:15:4:AM:PM:24"
[7, ":", 8, ":", "00", ":", 1, ":", 14, ":", 1]
untukhi bob
, atau harus satu bergabung hasilnya? Omong-omong, sandi rapi!['7', ':', '8', ':', '0', '0', ':', '1', ':', '1', '4', ':', '1']
).Jawaban:
Python 2 ,
7472 byteCobalah online!
Mengambil input karena semua huruf kecil
sumber
05AB1E ,
2221 byteCobalah online! atau sebagai Test Suite
Beberapa solusi 21 byte alternatif :
sumber
ª
telah berubah :)Perl 6 , 47 byte
Cobalah online!
Anonim Apapun lambda yang mengambil string dari kedua case dan mengembalikan string yang dienkripsi.
Penjelasan:
sumber
Pyth, 25 byte
Coba online di sini , atau verifikasi semua uji sekaligus di sini .
sumber
JavaScript (Node.js) , 72 byte
Mengambil input dalam huruf kecil.
Cobalah online!
sumber
Java (JDK) , 95 byte
Cobalah online!
Kredit
sumber
char
untukvar
. :)C # (Visual C # Interactive Compiler) , 70 byte
Mengambil input sebagai string huruf kecil. Pertama memeriksa apakah char adalah spasi, dan jika itu, mengubahnya menjadi
00
. Selanjutnya, ia memeriksa apakah char adalah A, dan mengubahnya menjadiAM
. Ia memeriksa lagi untuk Z dan mengubahnya menjadiPM
jika itu. Terakhir, jika char melewati semua cek, ia akan dikonversi ke urutan abjad-1.-2 byte terima kasih kepada @dana
Cobalah online!
sumber
Ruby , 49 byte
Cobalah online!
Port of Jo King's Perl menjawab . Mengambil input sebagai array karakter, mengembalikan string dengan AM / PM dalam huruf besar.
sumber
Merah ,
124121110109 byteCobalah online!
sumber
05AB1E , 20 byte
Sangat terinspirasi oleh 22-byter @ Mr.Xcoder dalam komentar dari jawaban 05AB1E yang ada oleh @Emigna .
Mengambil input sebagai daftar karakter huruf kecil (akan menjadi 21 byte dengan yang terdepan
S
jika saya mengambil input sebagai string).Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Tcl , 100 byte
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 98 byte
Mengambil input sebagai array karakter (huruf kecil). Cobalah online!
sumber
s=>string.Join(':',s.Select(c=>new[]{c-97+"","AM","PM","00"}["az ".IndexOf(c)+1]))
.Arang , 26 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input dalam huruf kecil (dapat dengan mudah diubah menjadi huruf besar). Penjelasan:
Setel karakter latar belakang ke
:
. Ini mengisi celah antara nilai-nilai output yang dibuat oleh gerakan yang benar.Ulangi setiap karakter, sisakan celah setiap kali. (Langkah pertama tidak berpengaruh karena kanvas masih kosong pada saat ini.)
Aktifkan karakter dan jika itu ruang,
a
atauz
kemudian output kode yang sesuai. Saya menggunakan×0²
bukannya di00
sini karena yang terakhir akan menelan biaya dua byte di pemisah tambahan.Kalau tidak, output posisi 0-huruf diindeks dalam huruf kecil sebagai string.
sumber
Jelly , 24 byte
Cobalah online!
sumber