2016-02-10 110 views
0

所以我有以下標準的任務:球拍 - 比較/分析兩種結構

一個名爲歐氏距離函數的定義給出。該函數計算xy平面中兩點之間的距離。這些點以四個單獨的數字給出:x1,y1,x2和y2。

重寫該函數,以便它帶有兩個參數,它們都是Posn類型,並運行相同的計算。

> (define the-origin (make-posn 0 0)) 
> (define some-point (make-posn 3 7)) 
> (euclidean-distance the-origin some-point) 
#i7.615773105863909 
> (euclidean-distance (make-posn 1 1) (make-posn 4 5)) 
5 

這裏我的麻煩是,我不知道如何提取我需要的信息,以比較平方的差異等。我到目前爲止:

(define (euclidean-distance posn1 posn2) 
    (sqrt (+ (sqr (- posn1-x posn2-x)) 
      (sqr (- posn1-y posn2-y))))) 

不知道如何去做我需要做的。

回答

2

只需使用每個位置的訪問過程,就像這樣:

(define (euclidean-distance posn1 posn2) 
    (sqrt (+ (sqr (- (posn-x posn1) (posn-x posn2))) 
      (sqr (- (posn-y posn1) (posn-y posn2))))))