Sujet : Re: Given string 'a.bc.' -- replace each dot(.) with 0 or 1
De : sgonedes1977 (at) *nospam* gmail.com (steve)
Groupes : comp.lang.lispDate : 19. May 2024, 08:05:13
Autres entêtes
Message-ID : <87jzjqibfq.fsf@gmail.com>
References : 1 2
User-Agent : Gnus/5.13 (Gnus v5.13)
Kaz Kylheku <
643-408-1753@kylheku.com> writes:
On 2024-05-18, HenHanna <HenHanna@devnull.tb> wrote:
< >
< > How can i write this function simply? (in Common Lisp)
< >
< > -- Given a string 'a.bc.' -- replace each dot(.) with 0 or 1.
< >
< > -- So the value is a list of 4 strings:
< > ('a0bc0' 'a0bc1' 'a1bc0' 'a1bc1')
< >
< > -- The order is not important.
< > If the string has 3 dots, the value is a list of length 8.
< >
< > If the program is going to be simpler,
< > pls use, e.g. (a $ b c $) rather than 'a.bc.'
>
TXR Lisp:
>
(defun bindots (str)
(let* ((s (copy str))
(ixs (where (op eql #\.) s))
(n (len ixs)))
(collect-each ((digs (rperm '(#\0 #\1) n)))
(set [s ixs] digs)
(copy s))))
where is collect-each in common lisp?
set [x] is no good! not in lisp