Sujet : Re: Given string 'a.bc.' -- each dot(.) is to be replaced with 0 or 1
De : karme (at) *nospam* karme.de (Jens Thiele)
Groupes : comp.lang.schemeDate : 24. May 2024, 16:45:53
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v2q971$2c9oj$1@dont-email.me>
References : 1 2
HenHanna <
HenHanna@devnull.tb> writes:
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?
yes.
As the manual states this is in the util.combinations library:
gosh> (cartesian-product '((a b c) (0 1)))
*** UNBOUND-VARIABLE-ERROR: unbound variable: cartesian-product
Stack Trace:
_______________________________________
0 (report-error e)
1 (eval expr env)
at "/usr/share/gauche-0.98/0.9.14/lib/gauche/interactive.scm":359
2 (evaluator exp (vm-current-module))
3 (with-error-handler (^e (report-error e) #t) (^ () (let loop2 ...
gosh> (use util.combinations)
gosh> (cartesian-product '((a b c) (0 1)))
((a 0) (a 1) (b 0) (b 1) (c 0) (c 1))
Greetings
karme