; two palindrome exercises
(define (number-palindrome? n)
(let loop ((x n) (z 0))
(if (zero? x) (= n z)
(let ((q (quotient x 10)) (r (remainder x 10)))
(loop q (+ (* z 10) r))))))
(display (number-palindrome? 123454321)) (newline)
(display (number-palindrome? 123456789)) (newline)
(define (mappend f . xss) (apply append (apply map f xss)))
(define (string-palindrome? xs)
(let ((chars (mappend string->list xs)))
(equal? chars (reverse chars))))
(define x '("a" "bcd" "ef" "g" "f" "ed" "c" "ba"))
(display (string-palindrome? x)) (newline)
(display (string-palindrome? (cdr x))) (newline)
OyB0d28gcGFsaW5kcm9tZSBleGVyY2lzZXMKCihkZWZpbmUgKG51bWJlci1wYWxpbmRyb21lPyBuKQogIChsZXQgbG9vcCAoKHggbikgKHogMCkpCiAgICAoaWYgKHplcm8/IHgpICg9IG4geikKICAgICAgKGxldCAoKHEgKHF1b3RpZW50IHggMTApKSAociAocmVtYWluZGVyIHggMTApKSkKICAgICAgICAobG9vcCBxICgrICgqIHogMTApIHIpKSkpKSkKCihkaXNwbGF5IChudW1iZXItcGFsaW5kcm9tZT8gMTIzNDU0MzIxKSkgKG5ld2xpbmUpCihkaXNwbGF5IChudW1iZXItcGFsaW5kcm9tZT8gMTIzNDU2Nzg5KSkgKG5ld2xpbmUpCgooZGVmaW5lIChtYXBwZW5kIGYgLiB4c3MpIChhcHBseSBhcHBlbmQgKGFwcGx5IG1hcCBmIHhzcykpKQoKKGRlZmluZSAoc3RyaW5nLXBhbGluZHJvbWU/IHhzKQogIChsZXQgKChjaGFycyAobWFwcGVuZCBzdHJpbmctPmxpc3QgeHMpKSkKICAgIChlcXVhbD8gY2hhcnMgKHJldmVyc2UgY2hhcnMpKSkpCgooZGVmaW5lIHggJygiYSIgImJjZCIgImVmIiAiZyIgImYiICJlZCIgImMiICJiYSIpKQooZGlzcGxheSAoc3RyaW5nLXBhbGluZHJvbWU/IHgpKSAobmV3bGluZSkKKGRpc3BsYXkgKHN0cmluZy1wYWxpbmRyb21lPyAoY2RyIHgpKSkgKG5ld2xpbmUp