zadania dodatkowe

1) Języki świata

Woj Bronimir wrócił do domu rodzinnego z dalekiej podróży po wczesnośredniowiecznej Europie. Po przyjeździe zechciał pochwalić się ziomkom swoją znajomością języków obcych opowiadając im o wielkiej bitwie o której słyszał w różnych językach.

Przerażeni ziomkowie uznali, że Bronimira opętały złe moce i niezwłocznie wezwali kapłanów Perkuna by odprawili egzorcyzmy. Kapłani po przybyciu na miejsce wysłuchali jeszcze raz Bronimira i natychmiast złożyli go do świętego ognia by oczyścić jego skalaną duszę.

Jeden z nich doznał natchnienia i powiedział pozostałym, iż według niego wszystkie języki są do siebie podobne i wywodzą się z jednego języka.

Arcykapłan uznał jednakże, że nadmierna ilość pomysłów szkodzi spokojowi społecznemu i pozwolił świętemu ogniowi oczyścić również duszę kapłana-wolnomyśliciela.

Zadanie:

Sprawdź czy natchniony kapłan miał rację. Zbadaj podobieństwo pomiędzy tekstami (poniżej warianty zadania): a) różne języki: znajdź na Wikipedi opis bitwy o której słyszał Bronimir (np. Bitwa pod Brunanburh). Zapisz cały tekst ze stron opisujących bitwę po włosku, hiszpańsku, walijsku (cymraeg), angielsku, francusku i po polsku (wybierz co najmniej 3 różne języki).

b) w ramach tego samego języka: znajdź na Wikipedii zbiór podobnych tekstów (np. opisy zwierząt ze strony Ryjówkowate - wybierz kilka podstron i zapisz cały tekst z nich)

Wybierz jeden z powyższych podpunktów. Wybierz odpowiednią według Ciebie metodę porównania tekstów/języków i zastosuj ją. Zaprezentuj wyniki w postaci wybranej miary podobieństwa dla wszystkich możliwych par języków/tekstów opisujących bitwę/małe ryjówki.

Podpowiedzi:

a) zaimplementuj miarę podobieństwa opartą na dwójkach lub trójkach (n-gramach) sąsiadujących liter - np. n-gramy 'trójki' dla napisu "ala ma kota" to: 'ala', 'la ', 'a m', ' ma', ' ma ', 'a k', ' ko', 'kot', 'ota'

b) TFIDF, podobieństwo fraz, podobieństwo n-gramów

2) Dywan Sierpińskiego

Narysuj piękny fraktal (dywan Sierpińskiego albo trójkąt Sierpińskiego) korzystając z dwuwymiarowych tablic (np z pakietu numpy). Każdy element tablicy może przyjmować wartość 0 lub 1 i będzie reprezentować jeden piksel obrazu. Znajdź bibliotekę i/lub narzędzie zewnętrzne do prezentacji wyniku.

praca domowa 1

Generowanie liczb losowych (ilosć gwiazdek oznacza jednocześnie trudność i ilość możliwych do uzyskania punktów, nr zadania).

Termin oddania: następne zajęcia

Maksymalnie mozna uzyskać sześć punktów.

  1. (★★) Zasymuluj rzut kostką do gry. Uruchom program kilka razy i sprawdź, że daje wszystkie możliwe wyniki
  2. (★★) Korzystając wyłącznie z funkcji random.random() wygeneruj liczbę z przedziału [0, 3).
  3. (★★) Jak za pomocą funkcji random.random() zasymulować funkcję random.uniform(a, b)?
  4. (★★) Jak za pomocą funkcji random.randrange(a, b) zasymulować random.choice(L)?
  5. (★★★) Jak za pomocą funkcji random.random() zasymulować funkcję random.randrange(a, b)?
  6. (★★★) Zasymuluj 6 rzutów kostką. Wypisz średnią arytmetyczną, minimum i maksimum wyników.

praca domowa 2

Maksymalnie można zdobyć 6 punktów - nie trzeba więc oddawac wszystkich zadań :)

  1. (★) Wypisz wszystkie liczby nieparzyste od 1 do 15.
  2. (★★) Napisz program, który wczyta trzy liczby i powie, która jest największa, która średnia, a która najmniejsza.
  3. (★★) Fibonacci iteracyjny, n kroków (n – zmienna wczytana z klawiatury).
  4. (★★) Policz średnią ze wszystkich liczb z przedziału 1 do n które w wyniku dzielenia przez 7 dają reszŧę 4.
  5. (★★★) Wypisz sumę liczb pierwszych od 1 do n.
  6. (★★★) Liczba całkowita x z przedziału [a, b] jest Ci nieznana i chcesz ją zgadnąć. Zaimplementuj algorytm przeszukiwania binarnego tak by znaleźć x używając jak najmniejszej liczby porównań. Jaka jest maksymalna złożoność obliczeniowa takiego algorytmu przeszukiwania?

praca domowa 3

Zadanie 1 (★)

Na początku programu stwórz listę elementy z 8-10 elementami. W dalszej części programu sprawdź, czy znajduje się w niej liczba 24 i wypisz odpowiednio: „TAK” lub „NIE”. (podać przynajmniej dwa rozwiązania)

Zadanie 2 (★)

Na początku programu stwórz listę elementy z 8-10 elementami, a następnie wybierz jakiś warunek logiczny, np. liczby większe od 23. W dalszej części programu policz, ile elementów z listy elementy spełnia ten warunek. Wypisz na ekranie tę liczbę, a następnie spełniające ją elementy.

Zadanie 3a (★★)

Na początku programu stwórz listę elementy z 8-10 elementami, a następnie wybierz jakiś warunek logiczny, np. liczby większe od 23. W dalszej części programu policz, ile elementów z listy elementy spełnia ten warunek. Wypisz na ekranie tę liczbę, a następnie spełniające ją elementy.

Selekcji elementów dokonaj wykorzystując pokazaną na zająciach konstrukcję (list comprehension) generowania listy w miejscu:

[ i for i in iter if  <warunek logiczny na i]

Zadanie 3 (★★)

Stwórz dwie listy k i l o tej samej liczbie elementów. Na liście k umieść napisy, a na liście l – liczby. Napisz program, który wypisze każdy z napisów z listy k tyle razy, ile wynosi odpowiednia liczba z listy l, np. dla:

k = ['Zajęcia', 'dla', 'ciekawych', 'świata'] 
l = [1, 4, 2, 5]

wypisze:

Zajęcia 
dla 
dla 
dla 
dla 
ciekawych 
ciekawych 
świata 
świata 
świata 
świata 
świata

Zadanie 4 (★★)

Napisz program, który wypisze tabliczkę mnożenia 10x10.

  • użyj zagnieżdzonych pętli for
  • efektem ma być wyswietlenie krotek i, j, j*j

Zadanie 4a (★★★)

Napisz program, który wypisze tabliczkę mnożenia 10x10 - zbuduj tabliczkę mnożenia

  • wykorzystaj rozwijanie listy w miejscu [ list comprehension ] tak by zbudować tabliczkę mnożenia używając tylko jednej takiej konstrukcji
  • efektem ma być wyswietlenie krotek i, j, j*j

Zadanie 5 - Usuwanie duplikatów z listy (★★★)

Napisz program, który z listy l usunie wszystkie powtórzenia elementów. Oceń, jaka jest złożoność obliczeniowa Twojego programu. Czy na pewno masz wszystkie potrzebne dane? Jeśli nie, zapytaj prowadzącego. uwaga - zastosowanie set(x) spowoduje uzyskanie tylko 1,5 punktu

Flagi 6 (★★★)

Wyświetl za pomocą wybranych symboli (#@% ... cyfry lub litery) jedną z flag spośród flag Wlk. Brytanii, Angli i Szkocji. W wariancie dla cierpliwych za dodatkowe 5 punktów należy narysować flagę Walii :)

Krypto Cezar 7 (★★★)

Zaimplementuj szyfr Cezara - translacja każdej litery alfabetu na inną oddaloną o stałą liczbę pozycji.