Deutsch English Français Italiano |
<vc5ppi$20bdd$1@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: "B. Pym" <Nobody447095@here-nor-there.org> Newsgroups: comp.lang.lisp,comp.lang.scheme Subject: Re: palindromic number Date: Sun, 15 Sep 2024 05:02:46 -0000 (UTC) Organization: A noiseless patient Spider Lines: 54 Message-ID: <vc5ppi$20bdd$1@dont-email.me> References: <vc55k8$1nud1$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Injection-Date: Sun, 15 Sep 2024 07:02:46 +0200 (CEST) Injection-Info: dont-email.me; posting-host="0f1f4abe2f0188b39c05744f5a8843bd"; logging-data="2108845"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18yk4G4ss6jcjTEunQwJ1ta" User-Agent: XanaNews/1.18.1.6 Cancel-Lock: sha1:ClEKDU7iCC0S3rWyEqkbUdS7UIg= Bytes: 2220 B. Pym wrote: > > "A palindromic number reads the same both ways. The largest > > palindrome made from the product of two 2-digit numbers is 9009 > > = 91 x 99. Find the largest palindrome made from the product of > > two 3-digit numbers." > > > Gauche Scheme > > (use srfi-13) ;; string-reverse > > (define (divisor? n m) (= 0 (mod m n))) > > "We don't need no stinkin' loops!" > > (define (prod-of-3-dig-nums? n) > (let1 sq (exact-integer-sqrt n) > (any (is divisor? n) (lrange sq 999)))) > > (define (good? n) > (let1 s (number->string n) > (and (equal? s (string-reverse s)) > (prod-of-3-dig-nums? n)))) > > (find good? (lrange 998001 0 -1)) > ===> > 906609 > > Given: > > (define-syntax is > (syntax-rules () > [(is x) > (lambda (y) (equal? y x))] > [(is compare x) > (lambda (y) (compare y x))] > [(is key compare x) > (lambda (y) (compare (key y) x))])) > Let's start with Project Euler Problem 1 : "If we list all the natural > numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. > The sum of these multiples is 23. Find the sum of all the multiples of > 3 or 5 below 1000." Gauche Scheme (use srfi-1) ;; lset-union (fold + 0 (lset-union = (lrange 3 1000 3) (lrange 5 1000 5))) ===> 233168