;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: Kipu ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto Kipu :słowa Niech "przekątna ObliczDługośćPrzekątnej :słowa SkokNaprzódPrawo 200 -300 Prawo 90 SzyfrujSłowa :słowa :przekątna Lewo 90 SkokNaprzódPrawo -200 300 już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: Kwadrat ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto Kwadrat :bok Lewo 45 Powtórz 4 [ Naprzód :bok Prawo 90 ] Prawo 45 już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: ObliczDługośćPrzekątnej ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto ObliczDługośćPrzekątnej :słowa Niech "liczba_przekątnych_po_y ObliczLiczbęPrzekątnychNajdłuższegoSłowaListy :słowa Niech "długość_przekątnej_po_y 400 / :liczba_przekątnych_po_y Niech "długość_listy_słów Długość :słowa Niech "liczba_przekątnych_po_x 2*(:długość_listy_słów-1) + 1 Niech "długość_przekątnej_po_x 600 / :liczba_przekątnych_po_x Jeżeli (:długość_przekątnej_po_x < :długość_przekątnej_po_y) [ Niech "przekątna :długość_przekątnej_po_x ] [ Niech "przekątna :długość_przekątnej_po_y ] Wynik :przekątna już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: ObliczLiczbęKwadratówLitery ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto ObliczLiczbęKwadratówLitery :litera Niech "przesunięcie_litery_względem_a (Ascii :litera) - (Ascii "a) Niech "kod_litery Reszta :przesunięcie_litery_względem_a 3 Wynik (:kod_litery+1) już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: ObliczLiczbęPrzekątnychNajdłuższegoSłowaListy ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto ObliczLiczbęPrzekątnychNajdłuższegoSłowaListy :słowa Niech "liczba_przekątnych_najdłuższego_słowa 0 Powtórz (Długość :słowa) [ Niech "aktualne_słowo Element numpow :słowa Niech "liczba_przekątnych_aktualnego_słowa ObliczLiczbęPrzekątnychPojedynczegoSłowa :aktualne_słowo Jeśli (:liczba_przekątnych_aktualnego_słowa > :liczba_przekątnych_najdłuższego_słowa) [ Niech "liczba_przekątnych_najdłuższego_słowa :liczba_przekątnych_aktualnego_słowa ] ] Wynik :liczba_przekątnych_najdłuższego_słowa już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ObliczLiczbęPrzekątnychPojedynczegoSłowa ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto ObliczLiczbęPrzekątnychPojedynczegoSłowa :pojedyncze_słowo Niech "liczba_przekątnych 0 Powtórz (Długość :pojedyncze_słowo) [ Niech "aktualna_litera Element numpow :pojedyncze_słowo Niech "liczba_kwadratów_litery ObliczLiczbęKwadratówLitery :aktualna_litera Niech "liczba_przekątnych :liczba_przekątnych + 2 + ( (:liczba_kwadratów_litery-1)/2 ) ] Wynik :liczba_przekątnych już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: RysujLiterę ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto RysujLiterę :liczba_kwadratów :przekątna Niech "bok :przekątna/pwk(2) Naprzód :przekątna Powtórz :liczba_kwadratów [ Kwadrat :bok Skok (:przekątna/2) ] Skok (:przekątna/2) już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: Skok ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto Skok :długość Podnieś Naprzód :długość Opuść już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: SkokNaprzódPrawo ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto SkokNaprzódPrawo :naprzód :prawo Podnieś Naprzód :naprzód Prawo 90 Naprzód :prawo Lewo 90 Opuść już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: SzyfrujPojedynczeSłowo ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto SzyfrujPojedynczeSłowo :pojedyncze_słowo :przekątna Niech "długość_zwisu 0 Powtórz (Długość :pojedyncze_słowo) [ Niech "aktualna_litera Element numpow :pojedyncze_słowo Niech "liczba_kwadratów_litery ObliczLiczbęKwadratówLitery :aktualna_litera RysujLiterę :liczba_kwadratów_litery :przekątna Niech "długość_zwisu :długość_zwisu + 2*:przekątna + (:liczba_kwadratów_litery-1)*(:przekątna/2) ] Skok (-:długość_zwisu) już ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Procedura: SzyfrujSłowa ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; oto SzyfrujSłowa :słowa :przekątna Niech "długość_listy_słów Długość :słowa Powtórz :długość_listy_słów [ Niech "aktualne_słowo Element numpow :słowa Prawo 90 SzyfrujPojedynczeSłowo :aktualne_słowo :przekątna Lewo 90 Jeśli (numpow <> :długość_listy_słów) [ Naprzód (2*:przekątna) ] ] Skok ( -2 * (:długość_listy_słów-1) * :przekątna ) już