string chains

Liste des GroupesRevenir à cl lisp 
Sujet : string chains
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp
Date : 06. Aug 2024, 01:34:32
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v8rni4$15nl8$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
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"))

Date Sujet#  Auteur
6 Aug 24 * string chains3B. Pym
6 Aug 24 `* Re: string chains2HenHanna
7 Aug 24  `- Re: string chains1Kaz Kylheku

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal