Source of Nothingness - g

* Menu

[[About:self:AboutPage.txt]] | [[Profile:file/southly/]] | [[まとめ:self:1163859357.txt]] | [[オリジナル:http://ninjinix.x0.com/rn/]] | [[xyzzy:http://raido.sakura.ne.jp/southly/xyzzy/site-lisp/]] | [[あんてな:http://i-know.jp/southly/listall]] | [[■:http://raido.sakura.ne.jp/southly/lisp/ni/view.lisp]] | [[buzz:http://www.google.com/profiles/southly#buzz]]

* Scrapbook : Oniguruma

oniguruma/index.html

その2。
対象が文字列ならなんとかなるでしょ。
気がかりは文字コード。
バッファを対象にするのは内部コードとの絡みがあるから厳しいだろうな。

* 素数を求める

素直じゃない再帰・マクロ(ほぼ)無し
(defun generate-primes (limit)
  (format t "~{ ~D~}~%"
          (funcall (lambda (f c n &optional (x 3) (prime (list 2)))
                     (funcall f f c n x prime))
                   (lambda (f c n x prime)
                     (if (> x n)
                         (nreverse prime)
                       (if (funcall c c x prime)
                           (funcall f f c n (+ x 2) (cons x prime))
                         (funcall f f c n (+ x 2) prime))))
                   (lambda (c x prime)
                     (if (endp prime)
                         t
                       (if (zerop (rem x (car prime)))
                           nil
                         (funcall c c x (cdr prime)))))
                   limit)))

* 素数を求める

素直に再帰
(defun generate-primes (limit)
  (labels ((check (x prime)
             (cond ((endp prime)
                    t)
                   ((zerop (rem x (car prime)))
                    nil)
                   (t
                    (check x (cdr prime)))))
           (main (n x prime)
             (cond ((> x n)
                    (nreverse prime))
                   ((check x prime)
                    (main n (+ x 2) (cons x prime)))
                   (t
                    (main n (+ x 2) prime)))))
    (format t "~{ ~D~}~%" (main limit 3 (list 2)))))

* 素数を求める

素直にループ
(defun generate-primes (limit)
  (let ((prime nil))
    (push 2 prime)
    (do ((x 3 (+ x 2)))
        ((> x limit))
      (if (dolist (i prime t) (if (zerop (rem x i)) (return nil)))
          (push x prime)))
    (format t "~{ ~A~}~%" (nreverse prime))))

* 2006-06-22

* 素数を求める。

とりあえず、アルゴリズム事典から。
よりLispらしく。
(defun generatePrimes (n)
  (let ((k 0)
        (prime (make-vector n :fill-pointer 0)))
    (vector-push 2 prime)
    (incf k)
    (do ((x 3 (+ x 2))
         (i 0 0))
        ((>= k n))
      (while (and (< i k) (/= 0 (rem x (aref prime i))))
        (incf i))
      (when (= i k)
        (vector-push x prime)
        (incf k)))
    prime))

* Scrapbook : soft/Xming - ペンギンの杜 - Linuxソフトライブラリ -