Procházet zdrojové kódy

Updated practice exercise 4 'Algoritmiek'.

Improved function descriptions.
pull/1/head
tijmenjoppe před 4 roky
rodič
revize
9d26792b73
1 změnil soubory, kde provedl 77 přidání a 48 odebrání
  1. +77
    -48
      practicum_4_algoritmiek_student.py

+ 77
- 48
practicum_4_algoritmiek_student.py Zobrazit soubor

@ -1,89 +1,120 @@
""" coding=utf-8
Analytical Skills - practicum 4: algoritmiek
Analytical Skills
Practicum 4: algoritmiek
(c) 2019 Hogeschool Utrecht
Tijmen Muller (tijmen.muller@hu.nl)
Naam:
Klas:
Klas:
Studentnummer:
"""
Opdracht: beantwoord onderstaande vragen en werk onderstaande functies uit. Elke functie krijgt als argument een
(mogelijk ongesorteerde) lijst *lst* met gehele getallen (int).
Let op! Je mag voor deze opdracht geen extra modules importeren met 'import'.
"""
"""
1. Sorteeralgoritme
1. Sorteeralgoritme
Hieronder staat de pseudocode van een sorteeralgoritme:
1. Startend vanaf het begin van een lijst, vergelijk elk element met zijn volgende buur.
2. Als het element groter is dan zijn volgende buur, verwissel ze van plaats.
3. Doorloop zo de lijst tot het eind.
4. Als er verwisselingen zijn geweest bij stap 2., ga naar stap 1.
Hieronder staat de pseudocode van een sorteeralgoritme:
1. Startend vanaf het begin van een lijst, vergelijk elk element met zijn volgende buur.
2. Als het element groter is dan zijn volgende buur, verwissel ze van plaats.
3. Doorloop zo de lijst tot het eind.
4. Als er verwisselingen zijn geweest bij stap 2., ga naar stap 1.
1a. Handmatig toepassen
Gegeven is de lijst l = [ 4, 3, 1, 2 ]. Geef de waardes die de lijst aanneemt bij álle tussenstappen bij
toepassing van bovenstaand sorteeralgoritme.
1a. Handmatig toepassen
Gegeven is de lijst l = [ 4, 3, 1, 2 ]. Geef de waardes die de lijst aanneemt bij álle tussenstappen bij
toepassing van bovenstaand sorteeralgoritme.
[antwoord]
[antwoord]
1b. Implementatie
Implementeer het sorteeralgoritme in Python in een functie genaamd my_sort(lst). Lever je code pas in als alle
tests geen foutmeldingen meer geven.
1b. Implementatie
Implementeer het sorteeralgoritme in Python in een functie genaamd my_sort(lst).
1c. Best en worst case
- Stel je hebt een lijst met de waarden 1, 2 en 3. Bij welke volgorde van de waarden in de lijst is het
sorteeralgoritme het snelste klaar (best-case scenario)? Hoeveel vergelijkingen (zoals beschreven in stap 1.
van de pseudocode) zijn nodig geweest?
1c. Best en worst case
- Stel je hebt een lijst met de waarden 1, 2 en 3. Bij welke volgorde van de waarden in de lijst is het
sorteeralgoritme het snelste klaar (best-case scenario)? Hoeveel vergelijkingen (zoals beschreven
in stap 1. van de pseudocode) zijn nodig geweest?
[antwoord]
- Bij welke volgorde van de waarden in de lijst is het sorteeralgoritme het minst snel klaar
(worst-case scenario)? Hoeveel vergelijkingen zijn nodig geweest?
[anwoord]
- Stel je hebt een lijst met de waarden 1 tot en met 4. Wat is nu het best-case scenario? Hoeveel vergelijkingen
zijn er nodig?
En wat is nu het worst-case scenario? Hoeveel vergelijkingen zijn er nodig?
- Bij welke volgorde van de waarden in de lijst is het sorteeralgoritme het minst snel klaar
(worst-case scenario)? Hoeveel vergelijkingen zijn nodig geweest?
[antwoord]
- Stel je hebt een lijst met de waarden 1 tot en met n (je weet nu dus niet precies hoeveel waarden er in de lijst
zitten, het zijn er 'n'). Wat is nu het best-case scenario? Hoeveel vergelijkingen zijn er nodig?
En wat is nu het worst-case scenario? Hoeveel vergelijkingen zijn er nodig?
- Stel je hebt een lijst met de waarden 1 tot en met 4. Wat is nu het best-case scenario?
Hoeveel vergelijkingen zijn er nodig?
En wat is nu het worst-case scenario? Hoeveel vergelijkingen zijn er nodig?
[antwoord]
- Stel je hebt een lijst met de waarden 1 tot en met n (je weet nu dus niet precies hoeveel waarden er in de
lijst zitten, het zijn er 'n'). Wat is nu het best-case scenario? Hoeveel vergelijkingen zijn er nodig?
En wat is nu het worst-case scenario? Hoeveel vergelijkingen zijn er nodig?
[antwoord]
2. Recursie
2. Recursie
2a. Lineair zoeken
Implementeer het lineair zoekalgoritme in Python op een *recursieve* manier. Maak hiervoor de functie genaamd
linear_search_recursive(lst, target).
2a. Lineair zoeken
Implementeer het lineair zoekalgoritme in Python op een *recursieve* manier. Maak hiervoor de functie genaamd
linear_search_recursive(lst, target). Lever je code pas in als alle tests geen foutmeldingen meer geven.
2b. Binair zoeken
Implementeer het binair zoekalgoritme in Python op een *recursieve* manier. Maak hiervoor de functie genaamd
binary_search_recursive(lst, target). Lever je code pas in als alle tests geen foutmeldingen meer geven.
2b. Binair zoeken
Implementeer het binair zoekalgoritme in Python op een *recursieve* manier. Maak hiervoor de functie genaamd
binary_search_recursive(lst, target).
"""
def my_sort(lst):
""" Implementatie van het sorteeralgoritme die gegeven lijst lst sorteert """
pass
"""
Sorteert gegeven lijst lst volgens het algoritme zoals beschreven in de pseudocode bij 1. hierboven.
De sortering vind 'in place' plaats, met andere woorden: de gegeven lijst lst wordt *zelf* gemuteerd. Er is
geen return-waarde.
"""
return None
def linear_search_recursive(lst, target):
""" Bepaalt of *target* voorkomt in lijst *lst* door middel van recursief lineair zoeken. """
"""
Zoekt een element in gegeven lijst door middel van recursief lineair zoeken.
Argumenten:
lst -- de lijst waarin gezocht wordt (list)
target -- het element dat gezocht wordt
Retourneert of het element in de lijst voorkomt (bool)
"""
return False
def binary_search_recursive(lst, target):
""" Bepaalt of *target* voorkomt in lijst *lst* door middel van recursief binair zoeken. """
"""
Zoekt een element in gegeven lijst door middel van recursief binair zoeken.
Argumenten:
lst -- de lijst waarin gezocht wordt (list)
target -- het element dat gezocht wordt
Retourneert of het element in de lijst voorkomt (bool)
"""
return False
"""
========================================================================================================================
"""==============================================[ HU TESTRAAMWERK ]====================================================
Onderstaand staan de tests voor je code -- hieronder mag je niets wijzigen!
Je kunt je code testen door deze file te runnen of met behulp van pytest.
"""
@ -94,7 +125,7 @@ def test_my_sort():
lst_test = random.sample(range(-99, 100), 6)
lst_copy = lst_test.copy()
my_sort(lst_test)
assert lst_test == sorted(lst_copy), sa">"Fout: my_sort({}) geeft {} in plaats van {}".format(lst_copy, lst_test, sorted(lst_copy))
assert lst_test == sorted(lst_copy), n">f"Fout: my_sort({lst_copy}) geeft {lst_test} in plaats van {sorted(lst_copy)}"
def test_linear_search_recursive():
@ -124,9 +155,7 @@ if __name__ == '__main__':
test_binary_search_recursive()
print("Je functie binary_search_recursive() werkt goed!")
print("Gefeliciteerd, alles lijkt te werken! Lever je werk nu in op Canvas...")
print("e">\nGefeliciteerd, alles lijkt te werken! Lever je werk nu in op Canvas...")
except AssertionError as ae:
print("\x1b[0;31m" + str(ae))

Načítá se…
Zrušit
Uložit