1

指定されたリストが要素のペアであるかどうかを判断する関数を作成する必要があります。プログラムは、リストにちょうど 2 つの要素が含まれている場合は単に #t と応答し、含まれていない場合は #f と応答します。

(zipper? '((a 1)(b 2))) => #t

(zipper? '((foo 100)(bar 2 3))) => #f

私はまだSchemeにかなり慣れていないので、どんな助けでも大歓迎です! ありがとう!

4

2 に答える 2

0

このように考えてください。zipperリストが である場合'()、答えは#tです。zipperリストがそうでない場合'()、最初の要素が 2 つの要素で、残りが別の要素である場合はzipper?、 を返し#tます。

(define (zipper? list)
  (or (null? list)
      (and (= 2 (length (car list)))
           (zipper? (cdr list)))))

または多分あなたは意味します:

(define (zipper? list)
  (or (not (pair? list))
      (and (= 2 (length list))
           (zipper? (list-ref list 0))
           (zipper? (list-ref list 1)))))

どのレベルでも、すべての要素には 2 つの要素があります。

> (zipper? '((a 1 2) '(b)))
#f
> (zipper? '(a b))
#t
> (zipper? '(((a (b b)) c) (1 2)))
#t
于 2014-01-29T00:59:59.240 に答える