importing projecteuler into git
[srid.projecteuler.git] / 9.scm
blob3f82b9fde19149f09056fbc0e3a56a043af263ef
1 (require (only (lib "1.ss" "srfi") filter))\r
2 \r
3 (define (numbers a b)\r
4   (cond ((> a b) null)\r
5         (else (cons a (numbers (add1 a) b)))))\r
6 \r
7 (define (cross l1 l2)\r
8   (if (null? l1)\r
9       '()\r
10       (append (map (lambda (x)\r
11                      (cons (car l1) x))\r
12                    l2)\r
13               (cross (cdr l1) l2))))\r
15 (define (square n)\r
16   (* n n))\r
18 (define (try-ptriplet sum)\r
19   (define ab (filter (lambda (x)\r
20                        (< (car x) (cdr x)))\r
21                      (cross (numbers 1 sum)\r
22                             (numbers 1 sum))))\r
23   (define abc (map (lambda (x)\r
24                      (let ((a (car x))\r
25                            (b (cdr x)))\r
26                        (list a b (- sum (+ a b)))))\r
27                    ab))\r
28   \r
29   (define triplets (filter (lambda (x)\r
30                              (let ((a (car x))\r
31                                    (b (cadr x))\r
32                                    (c (caddr x)))\r
33                                (= (square c)\r
34                                   (+ (square a)\r
35                                      (square b)))))\r
36                            abc))\r
37   triplets)\r
39 (try-ptriplet 1000)