Discussion:
palindromic number
(too old to reply)
B. Pym
2024-09-14 23:18:36 UTC
Permalink
"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))]))
B. Pym
2024-09-15 04:26:58 UTC
Permalink
Post by B. Pym
"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
(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
B. Pym
2024-09-15 05:02:46 UTC
Permalink
Post by B. Pym
"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
(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

Loading...