0

車を取り、それを逆の車と比較することにより、アトムを含む単一のリストに対して真/偽を返す実用的な回文があります。次に、最初と最後を cdr (reverse (cdr list)) で破棄します。

'(ab) c (ba)) が true を返すように、サブリスト内のアトムで機能させたいと思います。

car がリストであるかどうかを最初に確認し、そうである場合は caar を比較し、null になるまで caar を逆にして続行します。
「オブジェクト #f は適用できません」というメッセージが表示されます。

(DEFINE (pdrome lst)
  (cond
    ; ((NOT (LIST? lst)) DISPLAY "USAGE: (palindrome [list])" )
    ((null? lst) #t)
     ((null? (cdr lst)) #t)

     ((LIST? (car lst))
       ((null? (car lst) ) () )
       ((null? (cdr lst) ) () )
    ((equal? (caar lst) (caar (reverse lst)))
    (pdrome (cdar (reverse(cdar lst))))))

     ((equal? (car lst) (car(reverse lst))) 
      (pdrome (cdr (reverse (cdr lst)))))

        (else #F) ) )

入れ子にならないように、私もこのようにしようとしましたが、これを理解できません。ヒントやヒントをいただければ幸いです。ありがとう!

(LIST? car lst)  
palindrome (append (caar lst) (caar (reverse lst)))
4

2 に答える 2