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.
- (★★) Zasymuluj rzut kostką do gry. Uruchom program kilka razy i sprawdź, że daje wszystkie możliwe wyniki
- (★★) Korzystając wyłącznie z funkcji random.random() wygeneruj liczbę z przedziału [0, 3).
- (★★) Jak za pomocą funkcji random.random() zasymulować funkcję random.uniform(a, b)?
- (★★) Jak za pomocą funkcji random.randrange(a, b) zasymulować random.choice(L)?
- (★★★) Jak za pomocą funkcji random.random() zasymulować funkcję random.randrange(a, b)?
- (★★★) 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ń :)
- (★) Wypisz wszystkie liczby nieparzyste od 1 do 15.
- (★★) Napisz program, który wczyta trzy liczby i powie, która jest największa, która średnia, a która najmniejsza.
- (★★) Fibonacci iteracyjny, n kroków (n – zmienna wczytana z klawiatury).
- (★★) Policz średnią ze wszystkich liczb z przedziału 1 do n które w wyniku dzielenia przez 7 dają reszŧę 4.
- (★★★) Wypisz sumę liczb pierwszych od 1 do n.
- (★★★) 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.