逆引きxyzzy lisp(集計) - circleratio/xyzzy GitHub Wiki

目次

リストの集計

リストに含まれる要素の数を数える

(defun take-head (n lst)
  (if (= n 0) nil
    (cons (car lst) (take-head (1- n) (cdr lst)))))

(defun count (num lst)
  (setf (nth (- num 1) lst) (+ (nth (- num 1) lst) 1))
  lst)

(defun count-list (lst result)
  (if (= (length lst) 0) result
    (count-list (cdr lst) (count (car lst) result))))

(count-list '(1 2 3 3 2 1 1 2) '(0 0 0))
=> (3 3 2)
⚠️ **GitHub.com Fallback** ⚠️