Strona główna » Poradniki » Logomocja » LOGIA » Logia 2004/05 - Etap III

Logia 2004/05 - Etap III

· Etap I · Etap II · Etap III ·
iOryginalna treść zadań jest dostępna pod oficjalnym adresem konkursu LOGIA

Zadanie 1 (Kipu)

Kipu to system zapisu liczb i innych danych stosowany przez Indian andyjskich (m.in. w państwie Inków). Polegał on na utrwalaniu danych za pomocą węzłów wiązanych na sznurkach, których sekwencje odchodziły od sznurka głównego (poziomego).

Zdefiniuj procedurę KIPU :słowa, gdzie dana :słowa jest niepustą listą słów złożonych z małych liter alfabetu łacińskiego (bez polskich znaków diakrytycznych), rysującą sznurki z węzłami. Co trzecią literę alfabetu poczynając od a (czyli litery a, d, g itd.) kodujemy węzłem pojedynczym (obrócony kwadrat), co trzecią literę poczynając od b (b, e, h itd.) węzłem podwójnym (dwa kwadraty, wierzchołek drugiego leży w środku pierwszego), pozostałe węzłem potrójnym (trzy kwadraty) – patrz przykłady. Każde kolejne słowo kodowane jest jednym pionowym sznurkiem. Odstępy pomiędzy węzłami-literami są równe przekątnej pojedynczego kwadratu, a odstępy pomiędzy pionowymi sznurkami dwóm przekątnym. Rysunek musi mieścić się na ekranie i spełniać jeden z dwóch warunków: długość sznurka głównego wynosi 600 lub długość najdłuższego pionowego sznurka wynosi 400.

Powyżej widać efekty wywołań KIPU [a b c abc] oraz KIPU [ala ma kota].

Obrazek 1 do zadania 1

    Zadanie 2 (Prostokąty)

    Zdefiniuj procedurę PROS :lista :s :w rysującą na środku ekranu ciąg prostokątów. Danymi procedury są: :lista - niepusta lista słów składających się z małych liter alfabetu łacińskiego (bez polskich znaków diakrytycznych), z których każde zawiera co najmniej jedną samogłoskę i co najmniej jedną spółgłoskę, :s - określa szerokość rysunku, a :w - określa wysokość rysunku. Kolejne prostokąty odpowiadają kolejnym słowom. Dolne boki prostokątów stanowią dolną krawędź rysunku. Dwa sąsiednie prostokąty mają wspólny fragment jednego z pionowych boków. Szerokości poszczególnych prostokątów są proporcjonalne do liczby spółgłosek w poszczególnych słowach. Wysokości poszczególnych prostokątów są proporcjonalne do liczby samogłosek w poszczególnych słowach.

    Poniżej widać efekty wywołań PROS [ala ma kota] 222 111 oraz PROS [abrakadabra hokus pokus] 360 111.

    Obrazek 1 do zadania 2

      Zadanie 3 (Zliczanie)

      Zdefiniuj funkcję ILEL :lista, gdzie dana :lista jest dowolną listą. Zadaniem funkcji jest analiza wszystkich małych liter alfabetu łacińskiego (bez polskich znaków diakrytycznych), występujących w zapisie danej :lista. Podczas tej analizy wszystkie pozostałe znaki są pomijane. Wynikiem funkcji jest lista dwuelementowych list zawierających literę i liczbę jej wystąpień w danej :lista. Kolejność elementów w liście wynikowej wynika z kolejności liter w alfabecie. Jeśli jakaś litera nie występuje w danej :lista, to w wynikowej liście stosowny element jest pomijany.

      ILEL [alamakota][[a 4][k 1][l 1][m 1][o 1][t 1]]
      ILEL [abrakadabra [] [[[] hokus] pokus]][[a 5][b 2][d 1][h 1][k 3][o 2][p 1][r 2][s 2][u 2]]

        Zadanie 4 (Scalanie)

        Zdefiniuj funkcję SCALAJ :listyliczb, gdzie dana :listyliczb jest niepustą listą uporządkowanych niemalejąco list liczbowych. Wynikiem funkcji jest uporządkowana niemalejąco lista ze scalonymi liczbami z list danej :listyliczb.

        SCALAJ [[2 4 6 8 10][1 3 5][1 2 3]][1 1 2 2 3 3 4 5 6 8 10]
        SCALAJ [[3 4 5][1 2][6]][1 2 3 4 5 6]