2

ペアの重み (ペアの 2 つの数値の合計) に従って、ペアのストリームを並べ替えようとしています。(重複を除外しているわけではありません。) 私のコードが機能していないようです。

(define (merge-weighted s1 s2 weight)
  (let ((h1 (stream-car s1))
        (h2 (stream-car s2)))
    (if ((weight h1) < (weight h2))
        (cons-stream h1 (merge-weighted (stream-cdr s1) s2 weight))
        (cons-stream h2 (merge-weighted new1 (stream-cdr s2) weight)))))

整数のストリーム (s1) で別の整数のストリーム (s2) を使用してマージ加重を呼び出し、次の weight1 を使用する場合:

(define (weight1 pair)
  (+ (car pair) (cdr pair)))
4

2 に答える 2

2

これを試してみてください。間違った場所の問題を修正し、<空のストリームを処理するためのいくつかの基本ケースを追加します。

(define (merge-weighted s1 s2 weight)
  (cond ((stream-null? s1) s2)
        ((stream-null? s2) s1)
        (else
         (let ((h1 (stream-car s1))
               (h2 (stream-car s2)))
           (if (< (weight h1) (weight h2))
               (cons-stream h1 (merge-weighted (stream-cdr s1) s2 weight))
               (cons-stream h2 (merge-weighted s1 (stream-cdr s2) weight)))))))

確かに、質問の一部として、特定の入力に対して予想される出力の例を投稿する必要があります。

于 2013-04-03T14:31:50.117 に答える