Een manier om de vierkantswortel van een gegeven getal n te berekenen is om deze bewerking te zien als een binair zoekalgoritme. Immers:
Jouw taak is om de functie vkw(n)
te schrijven die de vierkantswortel van n uitrekent en returnt. Je mag géén ingebouwde vierkantswortels (zoals **0.5
) gebruiken. Eens je dit gedaan hebt mag je onderstaande code kopiëren in Dodona.
def vkw(n):
# HIER JOUW CODE
pass
def test_vkw(n):
if n == 0:
return 1 if vkw(n) == 0.0 else -1
x = vkw(n)
y = n ** 0.5
return 1 if abs(x-y) / y < 10**-10 else 0
Dodona zal dan jouw code testen via de functie test_vkw(n)
, die nagaat of jouw uitgerekende vierkantswortel tot op 10 cijfers gelijk is aan de ingebouwde in Python.
Tip: Je kan natuurlijk géén lijst met mogelijke waarden opstellen voor dit probleem. Je functie zal moeten eindigen als de boven- en ondergrens dicht genoeg bij elkaar liggen. Als jouw onder- en bovengrens a en b heten, dan kun je dit via onderstaande boolean:
(b**2 - a**2) / b**2 > 10**-12
Zolang deze boolean True is liggen a en b nog te ver uit elkaar om te returnen.