开发测试提议的解决方案是否是解决方案的功能?

时间:2013-01-20 00:37:00

标签: scheme racket

例如,二次方程x^2 + 2x + 1 = 0是关于某个未知数x的声明。

因此,如果您替换x = -1,则声明会保留,因为它等于0。 但是,如果您替换x = 1,则该声明将不正确,因为您将获得4

现在我被告知要开发一个功能,测试一些问题是否实际上是一个解决方案。

下面我将从哪里开始?

10x – 6 = 7x + 9

1 个答案:

答案 0 :(得分:1)

这一切都取决于所选择的功能表示。如果你将它们作为lambdas传递,那么测试“声明”是真还是假是微不足道的:

(define (test-claim f1 f2 x)
  (= (f1 x) (f2 x)))

For example:

; x^2 + 2x + 1 = 0, x = -1    
(test-claim (lambda (x) (+ (* x x) (* 2 x) 1))
            (lambda (x) 0)
            -1)

=> #t

; x^2 + 2x + 1 = 0, x = 1    
(test-claim (lambda (x) (+ (* x x) (* 2 x) 1))
            (lambda (x) 0)
            1)

=> #f

; 10x – 6 = 7x + 9, x = 5    
(test-claim (lambda (x) (- (* 10 x) 6))
            (lambda (x) (+ (* 7 x) 9))
            5)

=> #t

; 10x – 6 = 7x + 9, x = 10    
(test-claim (lambda (x) (- (* 10 x) 6))
            (lambda (x) (+ (* 7 x) 9))
            10)

=> #f