;; 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

Cevap