HenHanna <
[email protected]> 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
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)