;; binary position (defun pos (item list pos-list) (if (not (null list)) (if (= item (car list)) (pos item (cdr list) (cons 1 pos-list)) (pos item (cdr list) (cons 0 pos-list))) (reverse pos-list)))
;; cumulative position (defun bin2cum (pos cum-pos cum) (if (not (null pos)) (if (= 0 (car pos)) (bin2cum (cdr pos) cum-pos (+ cum 1)) (bin2cum (cdr pos) (cons cum cum-pos) (+ cum 1))) (reverse cum-pos))) [112]> (pos 4 '(3 4 1 0 1 7 8 9 11 4 12 1 6) NIL) (0 1 0 0 0 0 0 0 0 1 0 0 0) [113]> (bin2cum (pos 4 '(3 4 1 0 1 7 8 9 11 4 12 1 6) NIL) NIL 0) (1 9) On Thu, 24 Apr 2008 09:30:10 +0300, Volkan YAZICI <[EMAIL PROTECTED]> wrote: > On Wed, 23 Apr 2008, Aykut Caglayan <[EMAIL PROTECTED]> writes: >> Ornegin soyle bir listem var:>'(0 1 1 0 0 1 1) >> ve ben su cevabi ariyorum:> '(1 2 5 6) > > CL-USER> (defun positions (item list) > "POSITION derivate returns list of positions of the > supplied ITEM occuring in the specified LIST." > (labels ((collect-positions (position accum list) > (cond > ((endp list) accum) > ((eql item (first list)) > (collect-positions (1+ position) > (cons position accum) > (rest list))) > (t (collect-positions (1+ position) accum (rest > list)))))) > (nreverse (collect-positions 0 nil list)))) > STYLE-WARNING: redefining POSITIONS in DEFUN > POSITIONS > CL-USER> (positions 1 '(0 1 1 0 0 1 1)) > (1 2 5 6) > > Ağız tadınıza uygun olarak KEY ve TEST seçeneklerini de -- POSITION > işlevinde olduğu gibi -- POSITIONS'a da ekleyebilirsiniz. > > > İyi çalışmalar. > > _______________________________________________ > cs-lisp mailing list > cs-lisp@cs.bilgi.edu.tr > http://church.cs.bilgi.edu.tr/lcg > http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp _______________________________________________ cs-lisp mailing list cs-lisp@cs.bilgi.edu.tr http://church.cs.bilgi.edu.tr/lcg http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp