Palindrome detection: Difference between revisions

added Ol
No edit summary
(added Ol)
Line 2,689:
<lang octave>palindro_r("ingirumimusnocteetconsumimurigni")
palindro("satorarepotenetoperarotas")</lang>
 
=={{header|Ol}}==
<lang scheme>
; simple case - only lowercase letters
(define (palindrome? str)
(let ((l (string->runes str)))
(equal? l (reverse l))))
 
(print (palindrome? "ingirumimusnocteetconsumimurigni"))
; ==> #true
(print (palindrome? "thisisnotapalindrome"))
; ==> #false
 
 
; complex case - with ignoring letter case and punctuation
(define (alpha? x)
(<= #\a x #\z))
(define (lowercase x)
(if (<= #\A x #\Z)
(- x (- #\A #\a))
x))
 
(define (palindrome? str)
(let ((l (filter alpha? (map lowercase (string->runes str)))))
(equal? l (reverse l))))
 
(print (palindrome? "A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal-Panama!"))
; ==> #true
(print (palindrome? "This is not a palindrome"))
; ==> #false
</lang>
 
=={{header|Oz}}==