Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
29
Task/Palindrome-detection/REBOL/palindrome-detection.rebol
Normal file
29
Task/Palindrome-detection/REBOL/palindrome-detection.rebol
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
REBOL [
|
||||
Title: "Palindrome Recognizer"
|
||||
URL: http://rosettacode.org/wiki/Palindrome
|
||||
]
|
||||
|
||||
; In order to compete with all the one-liners, the operation is
|
||||
; compressed: parens force left hand side to evaluate first, where I
|
||||
; copy the phrase, then uppercase it and assign it to 'p'. Now the
|
||||
; right hand side is evaluated: p is copied, then reversed in place;
|
||||
; the comparison is made and implicitely returned.
|
||||
|
||||
palindrome?: func [
|
||||
phrase [string!] "Potentially palindromatic prose."
|
||||
/local p
|
||||
][(p: uppercase copy phrase) = reverse copy p]
|
||||
|
||||
; Teeny Tiny Test Suite
|
||||
|
||||
assert: func [code][print [either do code [" ok"]["FAIL"] mold code]]
|
||||
|
||||
print "Simple palindromes, with an exception for variety:"
|
||||
repeat phrase ["z" "aha" "sees" "oofoe" "Deified"][
|
||||
assert compose [palindrome? (phrase)]]
|
||||
|
||||
print [crlf "According to the problem statement, these should fail:"]
|
||||
assert [palindrome? "A man, a plan, a canal, Panama."] ; Punctuation not ignored.
|
||||
assert [palindrome? "In girum imus nocte et consumimur igni"] ; Spaces not removed.
|
||||
|
||||
; I know we're doing palindromes, not alliteration, but who could resist...?
|
||||
Loading…
Add table
Add a link
Reference in a new issue