Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

How could I improve?

Name: Anonymous 2011-03-24 7:19

Lets face it /prog/, I'm a shitty programmer.
How would you improve upon these functions?
It's a couple of functions I was gonna use for writing a primes function utilizing the sieve of Erastothenes.


(defun make-prime-array (n)
  (let ((output (make-array (1- n))))
    (loop for i from 2 to n do
     (setf (aref output (- i 2)) i))
    output))


(defun clean-array (arr n )
  (let ((output nil))
    (loop for i across arr do
     (if (/= (mod i n) 0)
         (push i output))
     (if (= i n)
         (push i output)))
    (reverse output)))


(defun make-array-list (lst)
  (let ((output (make-array (length lst))))
    (loop for i from 0 to (1- (length lst)) do
     (setf (aref output i) (nth i lst)))
    output))

Name: Anonymous 2011-03-24 7:30

Rewrite them in a good programming language, such as Java!

Name: VIPPER 2011-03-24 7:46

>>2
Hax some more anii instead.

Name: Anonymous 2011-03-24 10:42

if when only used with 2 arguments (no else clause) is better written as when, if you only have an else clause, write it as unless.

Anyways, here's some toy prime sieve I wrote more than a year and a half ago when I was learning CL:

(define-modify-macro set-differencef (&rest args) set-difference)

(defun prime-sieve (n)
  (let ((primes (seq 2 n)))
    (loop for i from 2 to n
          do (set-differencef primes (rest (seq i n i))))
    (sort primes #'<)))

Name: Anonymous 2011-03-24 10:43

Forgot one definition:

(defun seq (n m)
  (loop for i from n to m collect i))

Name: Anonymous 2011-03-24 10:43

Damn it,

(defun seq (n m &optional (k 1))
  (loop for i from n to m by k collect i))

Name: Anonymous 2011-03-24 14:57


Don't change these.
Name: Email:
Entire Thread Thread List