我正在解决这个干净的编程语言的作业;问题是我们有一个五位数,我们想检查它是否是一个奇怪的回文。我被困在将数字分成五个单独的数字并与原始数字进行比较以进行回文检查的阶段。使用 Clean 我无法遍历数字并检查双方是否保持相同,因此我正在寻找替代解决方案(一些数学运算)。
代码块:
isOddPalindrome :: Int -> Bool
isOddPalindrome a
| isFive a <> 5 = abort("The number should be exactly five digits...")
| (/*==> Here should be the palindrome check <==*/) && (a rem 2 <> 0) = True
| otherwise = False
isFive :: Int -> Int
isFive n
| n / 10 == 0 = 1
= 1 + isFive(n / 10)
我的想法是取这个数字,将它的数字一个接一个地附加到一个空列表中,然后在列表中执行该reverse
方法并检查它是否是相同的数字(回文)