PY_I_R_W13B_M04 Misja matura - ćwiczenia w konstruowaniu pętli
Zadanie: Bitwa podwórkowa
Bartek i Tomek bawią się w bitwę podwórkową z dziećmi z pobliskiego osiedla. Ich kolega Maciek pilnuje trzepaka kilka bloków dalej. Chłopcy chcą przekazać mu wiadomość o nadchodzącym ataku na jego posterunek. Sami nie mogą jednak opuścić swojego posterunku.
Bartkowi udało się zwerbować do drużyny młodszego brata, Kacpra, w roli posłańca. Chłopcy boją się jednak, że Kacper zostanie złapany wraz z wiadomością. Żeby temu zaradzić, Tomek wymyślił algorytm, dzięki któremu przeciwnik nie będzie umiał odczytać wymienianych wiadomości.
Przedstawiony algorytm przekształca wiadomość s o długości n za pomocą odpowiednich przestawień. Po wykonaniu algorytmu przekształcona wiadomość znajdzie się w zmiennej s:
Algorytm:
Operator mod oznacza resztę z dzielenia, natomiast div – dzielenie całkowitoliczbowe.
Podaj wynik działania przedstawionego algorytmu Tomka dla słów ATAK oraz TRZEPAK.
Specyfikacja problemu:
Dane:
n– długość łańcuchas; liczba naturalnas[0..n‑1]– łańcuch znaków o długości zawierający wiadomość do przekształcenia
Wynik:
s[0..n‑1]– łańcuch znaków o długości zawierający przekształconą wiadomość
Zapisz algorytm w postaci programu w języku C++, Java lub Python.
Rozwiązanie
Przeanalizujmy działanie algorytmu.
Zacznijmy od słowa ATAK. Wypiszmy etapy przekształceń z zastosowaniem przedstawionego algorytmu:
Analogicznie analizujemy kolejne iteracje pętli dla słowa TRZEPAK:
Wynik: AAKT i TPKAZRE
Słownik
zmniejszenie wartości zmiennej o jeden
zwiększenie wartości zmiennej o jeden
technika programowania polegająca na powtarzaniu tej samej operacji w pętli określoną liczbę razy lub aż do spełnienia określonego warunku; termin ten używany jest także w węższym znaczeniu - nazywa się nim operacje wykonywane wewnątrz takiej pętli
pętla, która nigdy nie zostanie zakończona, ponieważ warunek wyjścia z pętli nigdy nie zostaje spełniony
wywołanie pętli wewnątrz innej pętli