Giriş:
Bir zamanlar çocukken derlediğim bir belgede saklanan birçok farklı şifrem var, zorluklar için en uygun olduğunu düşündüğüm birkaç tanesini (çok önemsiz ve çok zor değil) seçtim ve onları zorluklara dönüştürdüm. Birçoğu hala sanal alanda ve hepsini mi göndereceğimi henüz bilmiyorum, ya da sadece birkaçı. İşte ikincisi ( Bilgisayar Şifresi ilk gönderdiğim oydu).
İçin Trifid şifre alfabe (anahtar kullanmadan) (ve, ek Joker) üç 3 3 tarafından tablolardan ayrılır:
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
Şifrelemek istediğimiz bir metin, tablo-satır-sütun sayılarına kodlanan ilk karakter karakterdir. Örneğin, metin this is a trifid cipher
:
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
Daha sonra her şeyi arka arkaya yukarıdaki tabloda üç kişilik gruplar halinde koyduk:
311 331 331 332 111 131 121 121 331 331 313 133 232 313 332 322 313 313 132 333 313 331 223
Ve bunlar aynı tabloları kullanarak karakterlere geri dönüştürülür:
s y y z a g d d y y u i q u z w u u h u y o
Dikkat edilmesi gereken bir şey, giriş uzunluğu 3 ile eş zamanlı olmalıdır. Dolayısıyla, uzunluk 3'ün katlarıysa, giriş uzunluğunu artık 3 değil, bir veya iki arka boşluk ekleriz.
Meydan okuma:
Bir dize verildi sentence_to_encipher
, yukarıda açıklandığı gibi şifreleyin.
Sadece sentence_to_encipher
gerekir, bu yüzden deşifre programı / fonksiyonu oluşturmak gerek. Gelecekte deşifre için bir bölüm 2 meydan okuma yapabilirim (ancak şifreleme sürecine önemsiz / benzer olduğunu hissediyorum).
Zorluk kuralları:
- Varsayabilirsin
sentence_to_encipher
yalnızca harf ve boşluk içerdiğini . - Tam küçük harf veya tam büyük harf kullanabilirsiniz (lütfen yanıtınızda hangisini kullandığınızı belirtin).
- Giriş uzunluğu 3 olduğunda artık bir veya iki arka boşluk eklemeyi seçebilirsiniz.
- G / Ç esnektir. Hem giriş hem de çıkış bir dize, liste / dizi / karakter akışı vb. Olabilir.
Genel kurallar:
- Bu kod golf , bayt en kısa cevap kazanır.
Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi engellemesine izin vermeyin. 'Herhangi bir' programlama dili için olabildiğince kısa bir cevap bulmaya çalışın. - Varsayılan I / O kuralları ile cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT, fonksiyonlar / yöntem, uygun parametreler ve dönüş tipi, tam programlar ile kullanılabilir. Çağrınız.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuz için bir test içeren bir bağlantı ekleyin (örn. TIO) ).
- Ayrıca, cevabınız için bir açıklama eklemeniz şiddetle tavsiye edilir.
Test senaryoları:
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)