2

パーティション (リストのリスト) を取り、同値関係を表すペアのリストを返す Scheme 関数を定義するのに助けが必要です。コードを書き始めましたが、間違った方向に進んでいることに気づきました。私は何時間もこれを見てきましたが、進歩はありません。

(define partition 
  (lambda (piv l p1 p2)
    (if (null? l) 
        (list p1 p2)
        (if (< (car l) piv)
            (partition piv (cdr l) (cons (car l) p1) p2)
            (partition piv (cdr l) p1 (cons (car l) p2))))))

ただし、関数は次のように機能する必要があります (partition ’((3 4) (5)))((3 3) (3 4) (4 3) (4 4) (5 5))

どんな助けでも大歓迎です

4

1 に答える 1

0

別の例が参考になります。メンバーリストのすべての要素が互いに同等であるという仮定に基づいて、これで十分かもしれません:

(define (partition lol) ; lol, list of lists
    (apply append
        (map
            (lambda (liszt)
                (apply append (map
                    (lambda (elem)
                        (map
                            (lambda (other)
                                (list elem other))
                            liszt))
                    liszt)))
            lol)))
于 2015-04-04T21:08:43.147 に答える