Neprogramátor/Krátká matematická myšlenka
(define (Pythagorova-věta a b c) ; a, b jsou odvěsny, c je přepona
(= (* c c) (+ (* a a) (* b b))))
(define (vypočítej-přeponu-pro-odvěsny a b)
(sqrt (+ (* a a) (* b b))))
(define (vypočítej-odvěsnu-pro-přeponu-a-odvěsnu c a)
(sqrt (- (* c c) (* a a))))
O jakou myšlenku se jedná? Jak ji ověřit?
Jde o myšlenu Pythagorovy věty.
(define (ověř-platnost-Pythagorovy-věty-pro a b c)
(string-append "Pro trojúhelník "
(number->string a) " "
(number->string b) " "
(number->string c) " "
"Pythagorova věta "
(if (Pythagorova-věta a b c)
"platí"
"neplatí")
"."))
(ověř-platnost-Pythagorovy-věty-pro 3 4 5)
(ověř-platnost-Pythagorovy-věty-pro 1 2 3)
(define (přepona-pro-odvěsny a b)
(string-append "Pro odvěsny "
(number->string a)
" a " (number->string b)
" je přepona "
(number->string (vypočítej-přeponu-pro-odvěsny a b))
"."))
(přepona-pro-odvěsny 3 4)
(define (odvěsna-pro-přeponu-a-odvěsnu c a)
(string-append "Pro přeponu "
(number->string c)
" a odvěsnu "
(number->string a)
" je druhá odvěsna "
(number->string (vypočítej-odvěsnu-pro-přeponu-a-odvěsnu c a))
"."))
(odvěsna-pro-přeponu-a-odvěsnu 5 4)
(odvěsna-pro-přeponu-a-odvěsnu 5 3)
(let* ((první-odvěsna 3)
(druhá-odvěsna 4)
(přepona (vypočítej-přeponu-pro-odvěsny první-odvěsna druhá-odvěsna)))
(ověř-platnost-Pythagorovy-věty-pro první-odvěsna druhá-odvěsna přepona))
(let* ((přepona 5)
(první-odvěsna 3)
(druhá-odvěsna (vypočítej-odvěsnu-pro-přeponu-a-odvěsnu přepona první-odvěsna)))
(ověř-platnost-Pythagorovy-věty-pro první-odvěsna druhá-odvěsna přepona))
(let* ((přepona 5)
(první-odvěsna 4)
(druhá-odvěsna (vypočítej-odvěsnu-pro-přeponu-a-odvěsnu přepona první-odvěsna)))
(ověř-platnost-Pythagorovy-věty-pro první-odvěsna druhá-odvěsna přepona))