anchor.diff:    (iterate (for-nested ((i :from 0 :to 999)
                           (j :from 0 :to 999)))
              (for product = (* i j))
  -           (when (palindromep product)
  +           (when (definitely-palindrome-p product)
                (maximize product))))
   
   (defun problem-5 ()
  
positive.code:            (finally (return result))))
  
  
  (defun definitely-palindrome-p (n)
    "Return whether `n` is a palindrome (in base 10), the slow-but-sure way."
    (let ((s (format nil "~D" n)))
      (string= s (reverse s))))
  
  (defun palindromep (n)
    "Return whether `n` is a palindrome (in base 10)."
    (assert (>= n 0) (n) "~A must be a non-negative integer" n)
    ;; All even-length base-10 palindromes are divisible by 11, so we can shortcut
    ;; the awful string comparison. E.g.:
    ;;
    ;;   abccba =
    ;;   100001 * a +
    ;;   010010 * b +
    ;;   001100 * c
    (cond
      ((zerop n) t)
      ((and (evenp (digits-length n))
            (not (dividesp n 11))) nil)
      (t (definitely-palindrome-p n))))
  
  
  (defun sum (sequence &key key)
  
negative.code: (test p32 (is (= 45228 (problem-32))))
  (test p33 (is (= 100 (problem-33))))
  (test p34 (is (= 40730 (problem-34))))
  (test p35 (is (= 55 (problem-35))))
  (test p36 (is (= 872187 (problem-36))))
  
  
  ;; (run! :euler)
  