• palindromic number

    From B. Pym@21:1/5 to All on Sat Sep 14 23:18:36 2024
    XPost: comp.lang.scheme

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From B. Pym@21:1/5 to B. Pym on Sun Sep 15 05:02:46 2024
    XPost: comp.lang.scheme

    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From B. Pym@21:1/5 to B. Pym on Sun Sep 15 04:26:58 2024
    XPost: comp.lang.scheme

    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)