Sujet : Re: The "Strand" puzzle --- ( Continued Fractions using Lisp orPython? )
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : rec.puzzlesDate : 02. Aug 2024, 13:32:32
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v8ijkv$2qmma$1@dont-email.me>
References : 1 2 3 4
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:
Gauche Scheme
(define (strand lst)
(let go ((left-sum 0) (tail lst))
(if (null? tail)
#f
(let ((right-sum (fold + 0 (cdr tail))))
(cond ((< left-sum right-sum)
(go (+ left-sum (car tail)) (cdr tail)))
((= left-sum right-sum) (car tail))
(#t #f))))))
Faster:
(define (strand lst)
(let go ((left-sum 0) (right-sum (fold + 0 (cdr lst))) (tail lst))
(cond ((< left-sum right-sum)
(go (+ left-sum (car tail))
(- right-sum (cadr tail))
(cdr tail)))
((= left-sum right-sum) (car tail))
(else #f))))