RosettaCodeData/Task/Test-a-function/E/test-a-function.e

51 lines
772 B
Plaintext

#!/usr/bin/env rune
? def isPalindrome(string :String) {
> def upper := string.toUpperCase()
> def last := upper.size() - 1
> for i => c ? (upper[last - i] != c) in upper(0, upper.size() // 2) {
> return false
> }
> return true
> }
? isPalindrome("")
# value: true
? isPalindrome("a")
# value: true
? isPalindrome("aa")
# value: true
? isPalindrome("baa")
# value: false
? isPalindrome("baab")
# value: true
? isPalindrome("ba_ab")
# value: true
? isPalindrome("ba_ ab")
# value: false
? isPalindrome("ba _ ab")
# value: true
? isPalindrome("ab"*2)
# value: false
? def x := "ab" * 2**15; null
? x.size()
# value: 65536
? def xreversed := "ba" * 2**15; null
? isPalindrome(x + xreversed)
# value: true
? (x + xreversed).size()
# value: 131072