anchor.diff:           (sort (copy-seq list2) sort-predicate)))
   
   
  +(defun irange (start end &key (step 1) (key 'identity))
  +  "Inclusive `range`."
  +  (range start (1+ end) :step step :key key))
  +
  +
  +(defun length= (n sequence)
  +  (= n (length sequence)))
  +
  +
  +
   ;;;; Problems -----------------------------------------------------------------
   (defun problem-1 ()
     ;; If we list all the natural numbers below 10 that are multiples of 3 or 5,
  
positive.code:     (pandigitalp 123 0 3) ; => nil
  
    "
    (equal (range start (1+ end))
           (sort (digits integer) #'<)))
  
  (defun pandigitals (&optional (start 1) (end 9))
    "Return a list of all `start` to `end` (inclusive) pandigital numbers."
  
negative.code:                         ;; to include those with a 0 first.
                          (unless (zerop (first digits))
                            (gather (digits-to-number digits))))
                        (irange start end)
                        :copy nil)))
  
  
  (defun permutations (sequence &key length)
    (gathering (map-permutations #'gather sequence :length length)))
  
  (defun combinations (sequence &key length)
    (gathering (map-combinations #'gather sequence :length length)))
  
  
  (defun-inline digits< (n digits)
  