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 yoksa sadece birkaçını mı göndereceğimden henüz emin değilim. Ama işte bunlardan ilki olan ilk kişi.
Bir Bilgisayar Şifresi, verilen metni belirli bir 'rastgele' karakter gruplarına şifreleyecektir length
. Böyle bir grup bir rakam içeriyorsa, şifrelenmiş karakter için kendi grubunu dizine eklemek için bu rakamı kullanır. Grupta hiçbir rakam yoksa, bu ilk karakterin kullanıldığı anlamına gelir.
Örneğin, metnin this is a computer cipher
belirli bir uzunluğunu şifrelemek istediğimizi varsayalım 5
. Bu potansiyel bir çıktıdır (not: sayılar aşağıdaki örnekte 1 dizinlenmiştir):
t h i s i s a c o m p u t e r c i p h e r (without spaces of course, but added as clarification)
qu5dt hprit k3iqb osyw2 jii2o m5uzs akiwb hwpc4 eoo3j muxer z4lpc 4lsuw 2tsmp eirkr r3rsi b5nvc vid2o dmh5p hrptj oeh2l 4ngrv (without spaces of course, but added as clarification)
Grubun nasıl deşifre edileceğini açıklamak için birkaç grubu örnek olarak ele alalım:
qu5dt
Bu grup, bir basamak içeren5
bu grubun (1-endeksli) 5. karakter şifresi çözülmüş metin için kullanılan bir karakter, yani:t
.hprit
: Bu gruptaki ilk karakteri şifresi çözülmüş metin için dolaylı kullanılır Bu gruba hiçbir basamak içerir:h
.osyw2
Bu gruplar, bir basamak içeren2
bu grubun (1-endeksli) 2. karakter şifresi çözülmüş metin için kullanılan bir karakter, yani:s
.
Meydan okuma:
Bir tamsayıyı verilen length
ve dize word_to_encipher
bir çıkış, rasgele , yukarıda tarif edildiği gibi şifrelenmiş dize.
Yalnızca verilen encipher zorunda length
ve word_to_encipher
gerek de bir deşifre programı / fonksiyonu oluşturmak, böylece. Ancak gelecekte deşifre için bir bölüm 2 meydan okuma yapabilir.
Zorluk kuralları:
length
Aralıkta olacağını varsayabilirsiniz[3,9]
.- Vasiyetnamenin
word_to_encipher
sadece harf içerdiğini varsayabilirsiniz . - Tam küçük harf veya tam büyük harf kullanabilirsiniz (lütfen yanıtınızda hangisini kullandığınızı belirtin).
- Çıktılarınız, her grup ve bir gruptaki (varsa) basamakların konumları eşit olarak rastgele olmalıdır . Yani alfabenin tüm rastgele harfleri aynı olma şansına sahiptir; şifrelenmiş mektubun her gruptaki konumu aynı olma şansına sahiptir; ve basamağın konumu aynı olma şansına sahiptir (ilk karakter olduğu ve hiçbir basamağın bulunmadığı durumlar hariç ve açıkça şifrelenmiş karakterle aynı konumda olamaz).
- Ayrıca, 1 dizinli yerine 0 dizinli rakamlar kullanmanıza izin verilir. Lütfen yanıtınızda kullandığınız ikisinden hangisini kullandığınızı belirtin.
- Rakam
1
(veya0
0 dizinli olduğunda) çıkışta hiçbir zaman mevcut olmaz. Yanib1ndh
karakteri 'b' şifrelemek için geçerli bir grup değil. Bununla birlikte,b4tbw
burada, geçerlidir4
şifrelemektedirb
4. (1-endeksli) konumu ve diğer karakterb
,t
,w
(tesadüfen aynı zamanda içeren rasgeleb
). Diğer olası geçerli gruplarlength
: 5 karakteri 'b' olan şifrelemek içinabcd2
,ab2de
,babbk
,hue5b
, vb
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 mümkün olduğunca 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:
Length: 5
Word to encipher: thisisacomputercipher
Possible output:
qu5dthpritk3iqbosyw2jii2om5uzsakiwbhwpc4eoo3jmuxerz4lpc4lsuw2tsmpeirkrr3rsib5nvcvid2odmh5phrptjoeh2l4ngrv
Input:
Length: 8
Word to encipher: test
Possible output:
ewetng4o6smptebyo6ontsrbtxten3qk
Input:
Length: 3
Word to encipher: three
Possible output:
tomv3h2rvege3le
abcd2
, ab2de
, babbk
hepsi aynı? Ayrıca b1akk
geçerli mi?
b1akk
hayır derdim. Açıklığa kavuşturmak için meydan açıklamasında düzenleyecektir. İlk karakter şifrelenmişse, hiçbir rakam olmamalıdır.
"a??"
676 olası sonuçları vardır, ama "1a?"
, "?a1"
, "2?a"
, "?2a"
, only104 sonuçları vardır. Yani, tüm bu 780 sonuçlardan bir sonuç seçmeye çalışıyorsam, "şifrelenmiş mektubun konumu" dağılımı 13: 1: 1, 1: 1: 1 değil. Ve bunu "tekdüze rastgele" nasıl çalıştığını düşünürüm.