• Given string 'a.bc.' -- each dot(.) is to be replaced with 0 or 1

    From HenHanna@21:1/5 to All on Sat May 18 01:28:37 2024
    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.'

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jens Thiele@21:1/5 to HenHanna on Fri May 24 16:45:53 2024
    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)