Rocksolid Light

News from da outaworlds

mail  files  register  groups  login

Message-ID:  

Beware the one behind you.


comp / comp.lang.scheme / Re: palindromic number

SubjectAuthor
* palindromic numberB. Pym
+- Re: palindromic numberB. Pym
`- Re: palindromic numberB. Pym

1
Subject: palindromic number
From: B. Pym
Newsgroups: comp.lang.lisp, comp.lang.scheme
Organization: A noiseless patient Spider
Date: Sat, 14 Sep 2024 23:18 UTC
Path: eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Nobody447095@here-nor-there.org (B. Pym)
Newsgroups: comp.lang.lisp,comp.lang.scheme
Subject: palindromic number
Date: Sat, 14 Sep 2024 23:18:36 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 37
Message-ID: <vc55k8$1nud1$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Date: Sun, 15 Sep 2024 01:18:37 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="0f43c1e237ee538ebdb678e0d9ed742f";
logging-data="1833377"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX185GFI7PQXnb1F24UnVbyln"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:+MrsjK8VX7UXqmTcbsgmtKiQ6SA=
View all headers

> "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))]))

Subject: Re: palindromic number
From: B. Pym
Newsgroups: comp.lang.lisp, comp.lang.scheme
Organization: A noiseless patient Spider
Date: Sun, 15 Sep 2024 04:26 UTC
References: 1
Path: eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Nobody447095@here-nor-there.org (B. Pym)
Newsgroups: comp.lang.lisp,comp.lang.scheme
Subject: Re: palindromic number
Date: Sun, 15 Sep 2024 04:26:58 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 54
Message-ID: <vc5nmc$1vnei$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 06:26:58 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="0f1f4abe2f0188b39c05744f5a8843bd";
logging-data="2088402"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+xvclKHQ3leQPrTtgbxUzQ"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:KDGQ9rQWboV1Dqfk1uLopa9qZcw=
View all headers

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))]))

> "Each new term in the Fibonacci sequence is generated by adding
> the previous two terms. By starting with 1 and 2, the first 10
> terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... By
> considering the terms in the Fibonacci sequence whose values do
> not exceed four million, find the sum of the even-valued terms."

(do ((a 1 b)
(b 2 (+ a b))
(s 0 (if (even? a) (+ a s) s)))
((> a 4000000) s))

===>
4613732

Subject: Re: palindromic number
From: B. Pym
Newsgroups: comp.lang.lisp, comp.lang.scheme
Organization: A noiseless patient Spider
Date: Sun, 15 Sep 2024 05:02 UTC
References: 1
Path: eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Nobody447095@here-nor-there.org (B. Pym)
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=
View all headers

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

1

rocksolid light 0.9.8
clearnet tor