0

最大値が 1 で最小値が 0 であるリスト内のすべての値をスケーリングしようとしています。これは、私が達成しようとしているものの例です。

(check-expect (squash (list 100 90 70 20)) (list 1 0.875 0.625 0)).

ご覧のとおり、最大値は 100 であるため、スケーリングされた値は 1 であり、最小値である 20 は 0 にスケーリングされます。

これらすべての値を縮小するために、計算を実行しています Z=(Li - (smallest-val)) / ((largest-val) - (smallest-val))

ここで、Li はリスト内のすべての値です (L1、L2、L3 ...)

これまでの私のコードは次のとおりです

(define (squash L)
  (local
    [
     ;;(largest-val M) returns the largest value M in L
     ;;(largest-val: (listof Num) -> Num
     (define (largest-val M) (foldr max (first M) (rest M)))

     ;;(smallest-val x) returns the smallest value x in L
     ;;(smallest-val: (listof Num) -> Num
     (define (smallest-val x) (foldr min (first x) (rest x)))
     ]
    (cond
      [(empty? L)'()]
      [else (cons (/ (- (first L) smallest-val) (- largest-val smallest-val))
                   (squash (rest L)))])))

これが私のエラーです

:: -: (lambda (a1) ...) を指定すると、2 番目の引数として数値が期待されます

プログラムが動作するようにこのコードを修正する方法がわからない

命令型プログラミング パラダイムを使用してソリューションを維持したいので、現在と同じ形式で回答を維持したいと考えています。

4

2 に答える 2