New Scientist Puzzle

Liste des GroupesRevenir à cl lisp 
Sujet : New Scientist Puzzle
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lisp
Date : 11. Jun 2024, 10:51:08
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v4935o$vj38$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
VIER and NEUN represent 4-digit squares, each letter denoting a
distinct digit. You are asked to find the value of each, given the
further requirement that each uniquely determines the other.

The "further requirement" means that of the numerous pairs of
answers, choose the one in which each number only appears once
in all of the pairs.

Gauche Scheme

(use srfi-13) ;; string-map
(use srfi-42) ;; list-ec
 
(define squares4d
  (map (lambda (n) (number->string (square n)))
       (lrange 32 100)))

(define alphabet (map integer->char (lrange 65 91)))

(define (->pattern str)
  (let ((table
          (map cons
            (delete-duplicates (string->list str))
            alphabet)))
    (string-map (cut assoc-ref table <>) str)))

(define possibles
  (let ((pat (->pattern "NEUNVIER")))
    (list-ec
      (:list n squares4d)
        (:list v squares4d)
          (if (equal? pat (->pattern (string-append n v))))
            (list n v))))

(define (count* f xs)
  (count (lambda(ys) (equal? (f xs) (f ys))) possibles))

(find
  (lambda(nv) (= 1 (count* car nv) (count* cadr nv)))
  possibles)

  ===>
("9409" "6241")

Date Sujet#  Auteur
11 Jun 24 * New Scientist Puzzle3B. Pym
11 Jun 24 `* Re: New Scientist Puzzle2HenHanna
10 Aug 24  `- Re: New Scientist Puzzle1steve g

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal