; identifying palindromes
(define (palindrome? xv)
(let ((len (vector-length xv)))
(let loop ((left 0) (right (- len 1)))
(cond ((< right left) #t)
((not (equal? (vector-ref xv left)
(vector-ref xv right))) #f)
(else (loop (+ left 1) (- right 1)))))))
(display (palindrome? (vector 1 2 3 4 5 6 7))) (newline)
(display (palindrome? (vector 1 2 3 4 3 2 1))) (newline)
(define (palindrome? xs)
(let loop ((h xs) (t xs) (front (list)))
(cond ((null? t) #t)
((pair? h)
(if (pair? (cdr h))
(loop (cddr h) (cdr t)
(cons (car t) front))
(loop (cdr h) (cdr t) front)))
((equal? (car t) (car front))
(loop h (cdr t) (cdr front)))
(else #f))))
(display (palindrome? (list 1 2 3 4 5 6 7))) (newline)
(display (palindrome? (list 1 2 3 4 3 2 1))) (newline)
OyBpZGVudGlmeWluZyBwYWxpbmRyb21lcwoKKGRlZmluZSAocGFsaW5kcm9tZT8geHYpCiAgKGxldCAoKGxlbiAodmVjdG9yLWxlbmd0aCB4dikpKQogICAgKGxldCBsb29wICgobGVmdCAwKSAocmlnaHQgKC0gbGVuIDEpKSkKICAgICAgKGNvbmQgKCg8IHJpZ2h0IGxlZnQpICN0KQogICAgICAgICAgICAoKG5vdCAoZXF1YWw/ICh2ZWN0b3ItcmVmIHh2IGxlZnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3Rvci1yZWYgeHYgcmlnaHQpKSkgI2YpCiAgICAgICAgICAgIChlbHNlIChsb29wICgrIGxlZnQgMSkgKC0gcmlnaHQgMSkpKSkpKSkKCihkaXNwbGF5IChwYWxpbmRyb21lPyAodmVjdG9yIDEgMiAzIDQgNSA2IDcpKSkgKG5ld2xpbmUpCihkaXNwbGF5IChwYWxpbmRyb21lPyAodmVjdG9yIDEgMiAzIDQgMyAyIDEpKSkgKG5ld2xpbmUpCgooZGVmaW5lIChwYWxpbmRyb21lPyB4cykKICAobGV0IGxvb3AgKChoIHhzKSAodCB4cykgKGZyb250IChsaXN0KSkpCiAgICAoY29uZCAoKG51bGw/IHQpICN0KQogICAgICAgICAgKChwYWlyPyBoKQogICAgICAgICAgICAoaWYgKHBhaXI/IChjZHIgaCkpCiAgICAgICAgICAgICAgICAobG9vcCAoY2RkciBoKSAoY2RyIHQpCiAgICAgICAgICAgICAgICAgICAgICAoY29ucyAoY2FyIHQpIGZyb250KSkKICAgICAgICAgICAgICAgIChsb29wIChjZHIgaCkgKGNkciB0KSBmcm9udCkpKQogICAgICAgICAgKChlcXVhbD8gKGNhciB0KSAoY2FyIGZyb250KSkKICAgICAgICAgICAgKGxvb3AgaCAoY2RyIHQpIChjZHIgZnJvbnQpKSkKICAgICAgICAgIChlbHNlICNmKSkpKQoKKGRpc3BsYXkgKHBhbGluZHJvbWU/IChsaXN0IDEgMiAzIDQgNSA2IDcpKSkgKG5ld2xpbmUpCihkaXNwbGF5IChwYWxpbmRyb21lPyAobGlzdCAxIDIgMyA0IDMgMiAxKSkpIChuZXdsaW5lKQ==