Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s
collatz, palindrome, maybe, fizzbuzz, anagram, roman, binary, either, primes, zipwith, matrix, wordcount, powers — all 18/18 programs green. conformance.sh PROGRAMS array updated; scoreboard.md regenerated. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
87 lines
2.1 KiB
Plaintext
87 lines
2.1 KiB
Plaintext
;; palindrome.hs — palindrome check via reverse comparison.
|
|
|
|
(define
|
|
hk-as-list
|
|
(fn
|
|
(xs)
|
|
(cond
|
|
((and (list? xs) (= (first xs) "[]")) (list))
|
|
((and (list? xs) (= (first xs) ":"))
|
|
(cons (nth xs 1) (hk-as-list (nth xs 2))))
|
|
(:else xs))))
|
|
|
|
(define
|
|
hk-prog-val
|
|
(fn
|
|
(src name)
|
|
(hk-deep-force (get (hk-eval-program (hk-core src)) name))))
|
|
|
|
(define hk-pal-src "isPalindrome xs = xs == reverse xs\n")
|
|
|
|
(hk-test
|
|
"isPalindrome empty"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome []\n") "r")
|
|
(list "True"))
|
|
|
|
(hk-test
|
|
"isPalindrome single"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome [1]\n") "r")
|
|
(list "True"))
|
|
|
|
(hk-test
|
|
"isPalindrome [1,2,1] True"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome [1,2,1]\n") "r")
|
|
(list "True"))
|
|
|
|
(hk-test
|
|
"isPalindrome [1,2,3] False"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome [1,2,3]\n") "r")
|
|
(list "False"))
|
|
|
|
(hk-test
|
|
"isPalindrome [1,2,2,1] True"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome [1,2,2,1]\n") "r")
|
|
(list "True"))
|
|
|
|
(hk-test
|
|
"isPalindrome [1,2,3,4] False"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome [1,2,3,4]\n") "r")
|
|
(list "False"))
|
|
|
|
(hk-test
|
|
"isPalindrome five odd True"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome [1,2,3,2,1]\n") "r")
|
|
(list "True"))
|
|
|
|
(hk-test
|
|
"isPalindrome racecar True"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome \"racecar\"\n") "r")
|
|
(list "True"))
|
|
|
|
(hk-test
|
|
"isPalindrome hello False"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome \"hello\"\n") "r")
|
|
(list "False"))
|
|
|
|
(hk-test
|
|
"isPalindrome a True"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome \"a\"\n") "r")
|
|
(list "True"))
|
|
|
|
(hk-test
|
|
"isPalindrome madam True"
|
|
(hk-prog-val (str hk-pal-src "r = isPalindrome \"madam\"\n") "r")
|
|
(list "True"))
|
|
|
|
(hk-test
|
|
"not-palindrome via map"
|
|
(hk-as-list
|
|
(hk-prog-val
|
|
(str hk-pal-src "r = filter isPalindrome [[1],[1,2],[1,2,1],[2,3]]\n")
|
|
"r"))
|
|
(list
|
|
(list ":" 1 (list "[]"))
|
|
(list ":" 1 (list ":" 2 (list ":" 1 (list "[]"))))))
|
|
|
|
{:fails hk-test-fails :pass hk-test-pass :fail hk-test-fail}
|