Szyfry przestawieniowe, anagramy - 2h
Przykłady szyfrów przestawieniowych
Ćwiczenie wstępne (https://pl.spoj.com/problems/AL_30_02/) :
AL_30_02 - Enigma w wersji light
Jaś i jego dziadek znów bawią się w kryptologów. Zasady zabawy są takie same jak dawniej. Dziadek szyfruje pewne wiadomości, a Jasio próbuje je odszyfrować. Tym razem dziadek znów wymyślił niezbyt skomplikowany szyfr przestawieniowy.
Twoim zadaniem jest napisać dla Jasia program, który będzie automatycznie deszyfrował teksty przygotowane przez dziadka.
Wejście
Nieokreślona liczba linii z wiadomościami zaszyfrowanymi przez dziadka Jasia.
Wiadomości złożone są jedynie z wielkich liter angielskiego alfabetu oraz spacji.
Wiadomość w jednej linii ma co najmniej 1 znak i nie więcej niż 100 znaków.
Wyjście
Taka sama liczba linii jak na wejściu. W każdej z nich odszyfrowana wiadomość z danej linii wejściowej.
Przykład
Wejście:
MAL KA AATO
IKELO L BKELO
WAMGIN W LIJSRE ETHGI
UWAGA: Zadanie ma formę łamigłówki, dlatego celowo nie podano w treści dokładnej zależności pomiędzy danymi wejściowymi i wyjściowymi. Z tego samego powodu nie ma wyjścia dla przykładu.
Anagram słów kilka ...
Sortowanie łańcucha tekstowego:
Załóżmy że chcemy posortować łańscuch tekstowy - s złożony (metoda bąbelkowa) np ALAMAKOTA :
Anagram - badanie metodą wykorzystującą sortowanie
>
Porównanie metod sortowania
Podsumowanie
Napisz program szyfrujący szyfrem kolumnowym tekst wczytany z klawiatury. Pamiętaj, aby tekst wczytać za pomocą funkcji getline, ponieważ może on zawierać spacje. Użyj zmiennej klucz, gdzie klucz to liczba całkowita wieksza od 1 a mneijsza od ilości znaków wczytanych do zaszyfrowania.
Zad. 2
Napisz programszyfrujący szyfrem kolumnowym tekst wczytany z klawiatury. Kolejność odczytywania znakó z kolumn określają cyfry tworzące klucz, a liczbę kolumn wskazuje długość klucza
Specyfikacja Dane: tj - tekst jawny złożony z wielkich liter alfabetu łacińskiego, kl - napis złożony z niepowtarzających się cyfr dziesiętnych mniejszych od długości klucza kl. Wynik: szyfrogram - tekst jawny tj zaszyfrowany szyfrem kolumnowym o liczbie kolumn i ich kolejności określonych przez klucz kl. |
Zad. 3
Napisz program wczytujący dwa słowa i wypisujacy "TAK", gdy podane słowa są anagramami, "NIE" - w przeciwnym wypadku. Zastosuj algorytm wykorzystujący zliczanie.
- Napisz program wczytujący trzy słowa i sprawdzajocy, czy są one anagramami.
- Napisz program, który wczyta dowolny tekst z klawiatury i zaszyfruje go szyfrem przestawieniowynł polegającym na zamianie miejscami znaków na pozycjach parzystych i nieparzystych.
- Napisz program, który sprawdzi, czy dwa słowa są anagramami. Program powinien wczytać dane z pliku tekstowego.
- Napisz program wczytujący dowolny tekst z klawiatury oraz liczbę będącą kluczem szyfrowania (liczbę kolumn). Program powinien szyfrować wczytany tekst szyfrem przestawieniowym polegającym na spiralnym odczytaniu tekstu Jawnego zapisanego wierszami zgodnie z poniższym przykładem.
Przykład:
Tekst jawny: ALA MA KOTA 1 PSA
Klucz: 4 Szyfrogram: K SXXXAIOMALA AP TA
- Napisz program szyfrujący tekst szyfrem kolumnowym z kluczem określającym liczbę kolumn i kolejność ich przeglądania tak, aby mogło być więcej niż 10 kolumn.
- Napisz program, który z pliku tekstowego przekazanego przez nauczyciela (np. szyfrogram_kolumnowy.txt) wczyta jednowierszowy szyfrogram i klucz szyfrowania. Szyfrogram powstał przez zaszyfrowanie tekstu jawnego szyfrem kolumnowym. Klucz (drugi wiersz pliku) jest napisem złożonym z niepowtarzających się cyfr dziesiętnych mniejszych od długości klucza i określa liczbę kolumn oraz kolejność ich przeglądania. Wynikiem działania programu powinien być tekst jawny wyświetlony na ekranie.
Zadanie M1. Anagram
Anagram to słowo powstałe z innego słowa przez przestawienie liter. Przez słowo rozumiemy w tym zadaniu dowolny ciąg liter alfabetu łacińskiego.
Przykłady anagramów:
dla słowa: barok – korba, robak, arobk, rokab, orkab …
dla słowa: ranty – tyran, narty, ntyra, natyr, ytnar …
W pliku tekstowym anagram.txt znajduje się 200 wierszy zawierających po 5 słów w każdym wierszu. Słowa oddzielone są znakiem odstępu. Długość każdego ze słów wynosi od 1 do 20 znaków.
Przykład:
abcd cdba dbac cbad dcba
barbakan xle ala foto otof
smok ayszkm lampa ayszkm bakara
skok arabanta oko agnieba dyskietka
… …
Napisz program w wybranym przez siebie języku programowania, za pomoc którego wykonasz poniższe polecenia:
a/ Wyszukaj w pliku anagram_m1.txt te wiersze, w których wszystkie słowa znajdujące się w danym wierszu mają taką samą liczbę znaków. Zapisz te wiersze w pliku odp_M1a.txt.
b/ Wyszukaj w pliku anagram.txt wszystkie wiersze tekstu, w których wszystkie słowa są anagramami pierwszego słowa w danym wierszu. Zapisz te wiersze w pliku odp_M1b.txt.
Zadanie M2 - Anagramy inaczej
Moda w Bajtolandii zmienia się szybko – popularność straciły tkaniny ze słowami powtarzającymi się we wzorach. Sklep chciałby złożyć nowe zamówienie, tym razem wyłącznie na te tkaniny, których wzory to czteroliterowe różne słowa, będące anagramami.Napisz program podający liczbę wierszy w pliku anagram_m2.txt , w których wszystkie słowa to czteroliterowe anagramy, które się nie powtarzają. Wynik programu zapisz do pliku najmodniejsze_tkaniny.txt.
Zad. 2: Rozwiązanie przykładowe zad. 2
Zadanie M1. Anagram:
a/
abcd cdba dbac cbad dcba wrona rossa slowo gwert rezas grant hello zakon lloeh hello kabaret kabanos kabaret gertyfu kabaret ola ala aga oal ola rezas rossa zaser sarez rezas foto foto tofo tofo foto romans romans normag masrom ansrom ekran ranek lampa zakon ekran korba orkan delpu pudel udelp czek azer reza zare rzea cebula romans romans mansro romans kruk kruk buka zuka nuka agent rossa serce cerse sdfrt qwerty wertyq wertyu magnor normag glob lobg bogl glbo gblo triada dariat aadrit iatdar adatri kotek tekok teokk kokte otekk obrus bruso soubo seawo rusob rower werro werro owerr erwor ipfon ipfon fonip ipfon zakop nerka drewn korba korba korba patyk wrona wrona wrona wrona foto tofo foot ftoo ootf spiker kerspi erspik erspki kiersp burza orkan lukde pudeh lerfy
b/
abcd cdba dbac cbad dcba foto foto tofo tofo foto glob lobg bogl glbo gblo triada dariat aadrit iatdar adatri kotek tekok teokk kokte otekk rower werro werro owerr erwor foto tofo foot ftoo ootf spiker kerspi erspik erspki kiersp
Zadanie m2 odp: 10