WDI – zajęcia 3

    1. Co robi funkcja f?
      		def f(a, b):
      			if b == 0:
      				return 0
      			return a + f(a, b - 1)
    2. Co się stanie jeśli w powyższym przykładzie zmienimi znak + na *?
    3. Co zwracają funkcje e i o zdefiniowane poniżej?
      		def e(n):
      		      if n == 0:
      			        return True
      	  	      else:
      				return o(n - 1)
      
      		def o(n):
      			if n == 0:
      				return False
      			else:
      				return e(n - 1)
    4. Co zwracają funkcje take i skip zdefiniowane poniżej?
      		def take(l):
      			if l == []:
      				return []
      			else:
      				return [l[0]] + skip(l[1:])
      		def skip(l):
      			if l == []:
      				return []
      			else:
      				return take(l[1:])
    5. Napisz rekurencyjną funkcję rec_rev(s), która dla zadanego napisu s zwróci odwrócony napis s.
      Hint: Wykorzystaj dodawanie napisów s1+s2 oraz to, że napisy można indeksować podobnie jak listy.
    6. Napisz rekurencyjną funkcję rec_pal(s) zwracającą True, gdy s jest palindromem. W przeciwnym przypadku funkcja zwraca wartość False.
    7. Napisz rekurencyjną funkcję rec_find(v, x), która dla zadanej posortowanej rosnąco listy liczb v zwróci wartość True, gdy element x występuje na liście v. W przeciwnym przypadku funkcja zwraca wartość False. Zakładamy, że lista v jest posortowana rosnąco — nie trzeba tego sprawdzać.
    8. Napisać funkcję merge z wykładu w wersji iteracyjnej.
    9. (★) Zdefinujmy ciąg Fibonacciego w następujący sposób:

      • f(0) = 0, f(1) = f(2) = 1 gdy n <= 2
      • f(n) = f(n-1) + f(n-2) w p.p.

      Wypisz drzewo wywołań rekurencyjnych f(n). Za pomocą znaków | (pipe) połącz wywołania rekurencyjne z wywołującą funkcją (f(n-1) oraz f(n-2) z f(n)), a odgałęzienia do sumowanych wyników zaznacz znakiem + (plus). Przykłady pokazują jak wygląda wyjście dla różnych wartości n.

    10. (★) Podziałem liczby naturalnej n na k części nazywamy ciąg k liczb naturalnych sumujących się do n. Napisz funkcję p(n,k), która dla danej liczby naturalnej n znajdzie liczbę podziałów liczby n na k części.

WDI – zajęcia 2

Zadania na laboratorium nr 2:

  1. Zaimplementuj funkcję kalkulator(d, a, b), która przyjmuje jako parametr rodzaj wykonywanego działania i dwa parametry liczbowe i zwraca wynik w postaci liczbowej. Można założyć, że działanie jest pojedynczym znakiem ze zbioru {“+”, “-“, “*”, “/”}. Przykładowo kalkulator(“+”, 2, 2) ma zwrócić 4.
  2. Spróbuj rozwiązać to zadanie używając funkcji eval.
  3. Zaimplementuj funkcję double_sum.
  4. Znajdź sumę liczb naturalnych mniejszych niż 1000, które są wielokrotnościami 3 lub 5.
  5. Napisz iteracyjną funkcję fib(n), która dla zadanej liczby całkowitej dodatniej n zwróci n-ty wyraz ciągu Fibonacciego.
  6. Napisz funkcję palindrom(s), która dla zadanego ciągu znaków s sprawdzi, czy napis ten jest palindromem.
  7. (★) Dana jest lista N liczb. Czy istnieje liczba występująca na tej liście więcej niż N/2 razy?
  8. (★) W przestrzeni rozmieszczono n punktów w taki sposób, że żadne trzy z nich nie są współliniowe. Następnie każdą parę tych punktów połączono odcinkiem i każdy odcinek pokolorowano na czarno albo na czerwono. Trójkątem jednobarwnym nazwiemy każdy trójkąt mający wszystkie trzy boki tego samego koloru. Dane jest n = 6 punktów oraz lista czerwonych odcinków wyrażona za pomocą listy incydencji: l = [[1,3,5],[0,2,4],[1,3,5],[0,2,4],[1,3,5],[0,2,4]]. Indeks listy l oznacza punkt, a pod danym indeksem listy l znajduje się lista punktów z którymi ten punkt tworzy odcinek. Na przykład punkt o indeksie 0 tworzy odcinki z punktami o indeksach: 1,3 oraz 5 (l[0] = [1,3,5]). Znajdź liczbę wszystkich trójkątów jednobarwnych.

WDI – zajęcia 1

Zadania rozgrzewkowe: podstawowe polecenia w Bashu i operacje arytmetyczne w Pythonie

    • Stwórz katalog o nazwie hello. Stwórz w nim plik o nazwie hello.py. Umieść w nim program w Pythonie, który wypisuje Hello world!
    • Uruchom program hello.py używając interpretera Pythona
    • Skopiuj katalog hello. Wyświetl zawartość nowego katalogu. W nowo powstałym katalogu zmień nazwę pliku hello.py na testy.py. Napisz w nim program, który wypisze wyniki działań: 123456789 + 1234567890, 2015*2016, 5/10/2015, 5.0/10/2015, 1/2, (2015*2016) do potęgi 8, jak również wynik pierwszego działania z powyższej listy minus wynik ostatniego działania (użyj zmiennych).

Zadania:

  • Zadanie z testu kompetencji: Napisz funkcję parsum(A), która policzy sumę parzystych elementów listy. Pożądane działanie funkcji ilustrują przykłady:
    parsum([1,4,2,6,5,3,1]) zwraca 12
    parsum([]) zwraca 0
    parsum([­3,­2,2,­4]) zwraca 8
  • (*) Napisz funkcję pierwiastki(a,b,c), która zwraca pierwiastki wielomianu kwadratowego ax^2 + bx + c

Etykiety do zadania 2

Witam,

Przypominam, że w czwartek widzimy się na prezentacjach Państwa wyników. Dane nt. rzeczywistych etykiet pacjentów są w tym pliku.

Proszę pamiętać, że nawet najlepszy model nie może dać gwarancji 100% skutecznośći, ale też jeśli komuś wyszła zgodność na poziomie 5%, to warto poszukać błędu w analizach. Jeśli to ktoś zrobi do czwartku, to tym lepiej.