Uzupełnij podaną funkcję odszyfruj, tak aby zwracała tekst jawny dla zaszyfrowanego szyfrem Playfair ciągu znaków oraz tablicy szyfrującej zwróconej przez funkcję przetwarzaj_klucz().
Specyfikacja problemu:
Dane:
wiadomosc – ciąg o dowolnej liczbie znaków, składający się z wielkich liter alfabetu łacińskiego, bez litery Q
klucz – klucz wykorzystywany do utworzenia tablicy szyfrującej
Wynik:
jawny – odszyfrowane słowo; ciąg znaków składający się z wielkich liter alfabetu łacińskiego, bez litery Q
Działanie swojego programu przetestuj dla szyfrogramu BRDOWJZTKWMP oraz klucza wskaznik.
RqJzsgV24pvvc
Przykładowe rozwiązanie zadania:
Linia 1. def odszyfruj otwórz nawias okrągły wiadomosc przecinek tablica zamknij nawias okrągły dwukropek.
Linia 2. tekst znak równości cudzysłów cudzysłów.
Linia 3. for i in range otwórz nawias okrągły 0 przecinek len otwórz nawias okrągły wiadomosc zamknij nawias okrągły przecinek 2 zamknij nawias okrągły dwukropek.
Linia 4. znak podkreślnik 1 przecinek znak podkreślnik 2 znak równości wiadomosc otwórz nawias kwadratowy i zamknij nawias kwadratowy przecinek wiadomosc otwórz nawias kwadratowy i plus 1 zamknij nawias kwadratowy.
Linia 5. wiersz podkreślnik 1 przecinek kolumna podkreślnik 1 znak równości divmod otwórz nawias okrągły tablica kropka index otwórz nawias okrągły znak podkreślnik 1 zamknij nawias okrągły przecinek 5 zamknij nawias okrągły.
Linia 6. wiersz podkreślnik 2 przecinek kolumna podkreślnik 2 znak równości divmod otwórz nawias okrągły tablica kropka index otwórz nawias okrągły znak podkreślnik 2 zamknij nawias okrągły przecinek 5 zamknij nawias okrągły.
Linia 7. if wiersz podkreślnik 1 znak równości znak równości wiersz podkreślnik 2 dwukropek.
Linia 8. tekst plus znak równości tablica otwórz nawias kwadratowy wiersz podkreślnik 1 asterysk 5 plus otwórz nawias okrągły kolumna podkreślnik 1 minus 1 zamknij nawias okrągły procent 5 zamknij nawias kwadratowy.
Linia 9. tekst plus znak równości tablica otwórz nawias kwadratowy wiersz podkreślnik 2 asterysk 5 plus otwórz nawias okrągły kolumna podkreślnik 2 minus 1 zamknij nawias okrągły procent 5 zamknij nawias kwadratowy.
Linia 10. elif kolumna podkreślnik 1 znak równości znak równości kolumna podkreślnik 2 dwukropek.
Linia 11. tekst plus znak równości tablica otwórz nawias kwadratowy otwórz nawias okrągły otwórz nawias okrągły wiersz podkreślnik 1 minus 1 zamknij nawias okrągły procent 5 zamknij nawias okrągły asterysk 5 plus kolumna podkreślnik 1 zamknij nawias kwadratowy.
Linia 12. tekst plus znak równości tablica otwórz nawias kwadratowy otwórz nawias okrągły otwórz nawias okrągły wiersz podkreślnik 2 minus 1 zamknij nawias okrągły procent 5 zamknij nawias okrągły asterysk 5 plus kolumna podkreślnik 2 zamknij nawias kwadratowy.
Linia 13. else dwukropek.
Linia 14. tekst plus znak równości tablica otwórz nawias kwadratowy wiersz podkreślnik 1 asterysk 5 plus kolumna podkreślnik 2 zamknij nawias kwadratowy.
Linia 15. tekst plus znak równości tablica otwórz nawias kwadratowy wiersz podkreślnik 2 asterysk 5 plus kolumna podkreślnik 1 zamknij nawias kwadratowy.
Linia 16. return tekst.
Linia 19. def przetwarzaj podkreślnik klucz otwórz nawias okrągły klucz zamknij nawias okrągły dwukropek.
Linia 20. alfabet znak równości cudzysłów ABCDEFGHIJKLMNOPRSTUVWXYZ cudzysłów.
Linia 21. klucz znak równości klucz kropka upper otwórz nawias okrągły zamknij nawias okrągły.
Linia 23. tablica podkreślnik szyfrujaca znak równości cudzysłów cudzysłów.
Linia 24. for znak in klucz dwukropek.
Linia 25. if znak in alfabet and znak not in tablica podkreślnik szyfrujaca dwukropek.
Linia 26. tablica podkreślnik szyfrujaca plus znak równości znak.
Linia 28. for znak in alfabet dwukropek.
Linia 29. if znak not in tablica podkreślnik szyfrujaca dwukropek.
Linia 30. tablica podkreślnik szyfrujaca plus znak równości znak.
Linia 32. return tablica podkreślnik szyfrujaca.
Linia 35. jawny znak równości odszyfruj otwórz nawias okrągły cudzysłów BRDOWJZTKWMP cudzysłów przecinek przetwarzaj podkreślnik klucz otwórz nawias okrągły cudzysłów wskaznik cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 36. print otwórz nawias okrągły jawny zamknij nawias okrągły.
211
Ćwiczenie 2
Uzupełnij kod tak, aby podana funkcja zwracała tablicę szyfrującą utworzoną ze słowa bazowego zapisanego od końca. Działanie programu przetestuj dla słowa slowo_bazowe = "playfair".
Specyfikacja problemu:
Dane:
slowo_bazowe – łańcuch znaków składający się z liter alfabetu łacińskiego bez litery Q; słowo, na podstawie którego tworzona jest tablica szyfrująca
Wynik:
tablica_szyfrujaca – tablica szyfrująca utworzona ze znaków słowa bazowego slowo_bazowe (liter alfabetu łacińskiego bez litery Q) zapisanych od końca, wypisana w jednej linii poprzez zestawienie ze sobą wszystkich pięciu wierszy
RuCrQ6MgpczyG
Przykładowe rozwiązanie zadania:
Linia 1. def przetwarzaj podkreślnik klucz otwórz nawias okrągły klucz zamknij nawias okrągły dwukropek.
Linia 2. alfabet znak równości cudzysłów ABCDEFGHIJKLMNOPRSTUVWXYZ cudzysłów.
Linia 3. klucz znak równości klucz kropka upper otwórz nawias okrągły zamknij nawias okrągły otwórz nawias kwadratowy dwukropek dwukropek minus 1 zamknij nawias kwadratowy.
Linia 5. tablica podkreślnik szyfrujaca znak równości cudzysłów cudzysłów.
Linia 6. for znak in klucz dwukropek.
Linia 7. if znak in alfabet and znak not in tablica podkreślnik szyfrujaca dwukropek.
Linia 8. tablica podkreślnik szyfrujaca plus znak równości znak.
Linia 10. for znak in alfabet dwukropek.
Linia 11. if znak not in tablica podkreślnik szyfrujaca dwukropek.
Linia 12. tablica podkreślnik szyfrujaca plus znak równości znak.
Linia 14. return tablica podkreślnik szyfrujaca.
Linia 17. tablica podkreślnik szyfrujaca znak równości przetwarzaj podkreślnik klucz otwórz nawias okrągły cudzysłów playfair cudzysłów zamknij nawias okrągły.
Linia 18. print otwórz nawias okrągły tablica podkreślnik szyfrujaca zamknij nawias okrągły.