Kitoshimadaki proqramlaşdırma müsabiqəsinin təşkilat komitəsinin üzvləri gizli mesajları üçün kriptoqrafik proqram təminatından istifadə etmək qərarına gəldilər. Onlar Kodai Software şirkətindən bunun üçün çox mürəkkəb riyazi şifrdən istifadə edən kriptoqrafik proqram təminatı hazırlamağı xahiş etdilər.
İT-layihələrlə bağlı hesabatların nəticələrinə görə, onların bir çoxu vaxtında, büdcə çərçivəsində və ya lazım olan funksionallıqla yerinə yetirilmir. Bu dəfə də belə oldu: Kodai Software şirkəti vaxtında mürəkkəb şifrin hazırlanmasını bacarmadı və müvəqqəti olaraq daha sadə bir şifrdən — əvəzetmə (substitusiya) üsulundan istifadə etməyi təklif etdi. Baxmayaraq ki, təşkilat komitəsi bundan narazı idi, onlar funksionallığın tam hazırlanacağına dair təkid edərək, müvəqqəti olaraq daha az etibarlı həllə razılaşdılar.
Şifrələnmədən öncəki mətnə bundan sonra açıq, şifrələndikdən sonrakı mətnə isə şifrələnmiş deyəcəyik.
Əvəzetmə şifrində hər bir hərf, qaydalarda verilmiş nizamsız hərf cütləri ilə dəyişdirilir. Cütdəki ardıcıllıq əhəmiyyət kəsb etmir, yəni cütü ilə eynidir. Hər bir hərf ən çox bir cütdə iştirak edə bilər. Əgər sözdə belə bir cütdən hərf rast gəlirsə, o, həmin cütdəki digər hərflə əvəz olunur. Heç bir cütdə iştirak etməyən hərflər dəyişməz qalır.
Məsələn,ABCDEFGHIJKLMNOPQRSTUVWXYZ
Qayda olaraq \{ (A, Z), (B, Y) \} tətbiq olunarsa,
ZYCDEFGHIJKLMNOPQRSTUVWXBA
alınar.
Bu, bizə şans verə bilər, çünki əvəzetmə qaydaları kifayət qədər zəif görünür. Ola bilsin, təşkilat komitəsi üzvləri arasındakı əlaqələri öyrənmək mümkün oldu. Sizin vəzifəniz — şifrələnmiş mesaj üzrə açıq mətnin müəyyən edən proqram yazmaqdır.
Şifrələnmiş mesaj bir və ya bir neçə sözdən ibarətdir. Hər söz üçün variantların siyahısı verilir — açıq mətn kimi istisna olunmadan yalnız orada verilmiş sözlər istifadə oluna bilər. Siyahıdakı bəzi sözlər isə istifadə edilməyə bilər.
Zəmanət verilir ki, ən azı bir namizəd söz ardıcıllığı var ki, verilmiş şifrələnmiş mətn, müəyyən bir əvəzetmə qaydası ilə əldə oluna bilər. Lakin bəzən açıq mətnin birmənalı şəkildə müəyyən etmək mümkün olmaya bilər.
Hər tapşırıq bir neçə məlumat dəsti ehtiva edir. Bir dəstin formatı:
n word_1 word_2 word_n sequence
Birinci ədəd — namizəd sözlərin sayıdır. Sonra sətirdə namizəd sözlər verilir. Sonuncu sətirdə şifrələnmiş söz/sözlər — bir və ya bir neçə söz boşluqlarla ayrılıb və nöqtə ilə bitir.
Bütün ardıcıllığın uzunluğu -dən böyük və -dən çox deyil (boşluq və nöqtə daxil olmaqla). Siyahıda -dən artıq söz yoxdur. Yalnız – latın hərflərindən istifadə olunur. Hər bir sözün uzunluğu -dən -yə qədərdir.
Bir rəqəmli 0 olan sətir girişin sonunu göstərir.
Hər məlumat dəsti üçün ayrıca sətirdə deşifrovka olunmuş mesajı çap edin. Sözləri bir boşluqla ayırın, son sözü nöqtə ilə tamamlayın.
Əgər açıq mətn birmənalı şəkildə müəyyən olunmursa, yalnız "-." sətrini çap edin.
Nümunə 1