Sujet : Re: Given string 'a.bc.' -- each dot(.) is to be replaced with 0 or 1
De : HenHanna (at) *nospam* devnull.tb (HenHanna)
Groupes : comp.lang.scheme comp.lang.lispDate : 19. May 2024, 09:19:15
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v2c95k$38qpc$4@dont-email.me>
References : 1
User-Agent : Mozilla Thunderbird
On 5/18/2024 1:28 AM, HenHanna wrote:
How can i write this function simply? (in Scheme (Gauche))
-- Given a string 'a.bc.' -- each dot(.) is to be replaced 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, say, (a $ b c $) rather than 'a.bc.'
___________________________________________________
From the Gauche (Scheme) manual:
(cartesian-product ’((a b c) (0 1)))
⇒ ((a 0) (a 1) (b 0) (b 1) (c 0) (c 1))
________________________________________
The Gauche (Scheme) manual describes
string-count and cartesian-product
as built-in functions, but I couldn't use them and ended up defining them myself -- Why is that?
Do i have to import libraries, as in Python?
(define (countDots s)
(count (lambda (c) (equal? c #\.))
(string->list s)))