Bu anahtar şifresini uygulayın
Hedef
Belirli bir şifreyi uygulamak için algoritmayı (Algoritma bölümünde açıklanmıştır) kullanın.
Program, STDIN veya mevcut en yakın eşdeğerden girişi okumalıdır, şifreleme metnini ve bir anahtarı oluşturmak için algoritmayı kullanın.
Şifre metni ve anahtar STDOUT'a veya mevcut en yakın eşdeğere yazılır. Şifreleme metnini ve anahtarı çıktığı sürece herhangi bir biçime izin verilir.
Algoritma
Dizedeki karakterleri ilgili ASCII değerlerine dönüştürün. Örneğin:
Hello -> 72 101 108 108 111
Daha sonra, 0-9 aralığında rastgele sayılar içeren dize sürece bir anahtar oluşturmanız gerekecektir.
Hello -> 62841
Rastgele sayı dizisindeki tam sayıları dizenin ASCII değerlerine ekleyin. Yukarıdaki örneklerde 72, 78 ve 101, 104 olacaktır.
72 + 6 = 78, 101 + 2 = 103, 108 + 8 = 116, etc
Ardından, yeni değerleri tekrar karakterlere dönüştürün. Yukarıdaki örneklerde metin Hello
haline gelmiştir Ngtpp
.
Örnekler
(Bunlar basitçe çıktı ne örnekleridir olabilir benziyor. Çıkışı ve değişecektir edebilirsiniz.)
Hello World
Lfrlu)_supg
41606984343
This will be encoded
Zhjs$~koo gj$iuhofgj
60104723305544750226
kurallar
- Girişin yalnızca az, AZ ve boşluk aralığında karakterler içerdiğini varsayabilirsiniz.
- Başvurular tam programlar veya işlevler olmalıdır.
- Gönderiler bayt olarak puanlanacaktır.
- Standart boşluklar yasaktır.
- Bu kod golf, bu yüzden en kısa kod kazanır.
(Bu benim ilk zorluklarımdan biri, eğer yanlış bir şey varsa, bana nasıl geliştirebileceğimi söylemekten çekinmeyin.)
preferably with the format (ciphertext)\n(key).
"tercih edilen özellikler" ve kod golf çok iyi karıştırmayın. Bunu zorunlu hale getirmeli veya diğer çıktı biçimlerine izin vermelisiniz. 3. Anahtarın boşluk bırakmadan yazdırılması gerekiyor mu? Liste formatında yazdırmaya ne dersiniz[0, 5, 2, ...]
?