Deutsch   English   Français   Italiano  
<v8tkv7$1n9hq$3@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: HenHanna <HenHanna@devnull.tb>
Newsgroups: comp.lang.lisp
Subject: Re: string chains
Date: Tue, 6 Aug 2024 10:02:30 -0700
Organization: A noiseless patient Spider
Lines: 63
Message-ID: <v8tkv7$1n9hq$3@dont-email.me>
References: <v8rni4$15nl8$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 06 Aug 2024 19:02:32 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="e8f11e744464abe1aea113e5c87782ad";
	logging-data="1812026"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+ZDCWM1bRvUGvd76nrXqhHofsANl2BBZk="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:IamhzVnu7bCA5bRPohTwVF0+/qg=
Content-Language: en-US
In-Reply-To: <v8rni4$15nl8$1@dont-email.me>
Bytes: 2967

On 8/5/2024 4:34 PM, B. Pym wrote:
>> The task is to somehow implement Amb, and demonstrate it with
>> a program which chooses one word from each of the following
>> four sets of character strings to generate a four-word
>> sentence:
>>
>> "the" "that" "a"
>> "frog" "elephant" "thing"
>> "walked" "treaded" "grows"
>> "slowly" "quickly"
>>
>> The constraint to be satisfied is that the last character of
>> each word (other than the last) is the same as the first
>> character of its successor.
>>
>> The only successful sentence is "that thing grows slowly";
>> other combinations do not satisfy the constraint and thus
>> fail.
> 
> newLISP
> 
> (define (cartesian-product lists)
>    (if (null? lists)
>      '(())
>      (let (subproduct (cartesian-product (rest lists)))
>        (apply append
>          (map
>            (fn (x) (map (fn (xs) (cons x xs)) subproduct))
>            (first lists))))))
> 
> (define (good? xs)
>    (for-all
>      (fn (pair) (starts-with (pair 1) ((pair 0) -1)))
>      (map list (0 -1 xs) (rest xs))))
> 
> (filter good?
>    (cartesian-product
>      '(("preconize" "cozy" "Lilliputian")
>        ("climb" "nub" "snob" "end" "yet")
>        ("however" "by" "but" "so" "tot")
>        ("the" "that" "a" "tack" "of")
>        ("frog" "elephant" "thing")
>        ("walked" "treaded" "grows")
>        ("slowly" "quickly")
>        ("yank" "can" "you" "choose")
>        ("won't" "understand"))))
> 
> (("cozy" "yet" "tot" "that" "thing" "grows" "slowly" "you"
>    "understand")
>   ("Lilliputian" "nub" "but" "that" "thing" "grows" "slowly"
>    "you" "understand"))


Did you avoid using  Scheme  because it's bad for this
type of string  manipulation?

        -----  e.g.  in Python the last char of string is just String[-1]



       >>> May 12, 2019 — newLISP is a general purpose scripting 
language for developing web applications and programs in general in the 
domains of artificial ...