Taxicab numbers: Difference between revisions

added scheme example
m (→‎{{header|REXX}}: added/change whitespace, used a template for output header.)
(added scheme example)
Line 2,511:
1676926719 (63³ + 1188³) (714³ + 1095³)
1677646971 (99³ + 1188³) (891³ + 990³)
</pre>
 
=={{header|Scheme}}==
{{libheader|Scheme/SRFIs}}
 
<lang scheme>
(import (scheme base)
(scheme write)
(srfi 1) ; lists
(srfi 69) ; hash tables
(srfi 132)) ; sorting
 
(define *max-n* 1500) ; let's go up to here, maximum for x and y
(define *numbers* (make-hash-table eqv?)) ; hash table for total -> list of list of pairs
 
(define (retrieve key) (hash-table-ref/default *numbers* key '()))
 
;; add all combinations to the hash table
(do ((i 1 (+ i 1)))
((= i *max-n*) )
(do ((j (+ 1 i) (+ j 1)))
((= j *max-n*) )
(let ((n (+ (* i i i) (* j j j))))
(hash-table-set! *numbers* n
(cons (list i j) (retrieve n))))))
 
(define (display-number i key)
(display (+ 1 i)) (display ": ")
(display key) (display " -> ")
(display (retrieve key)) (newline))
(let ((sorted-keys (list-sort <
(filter (lambda (key) (> (length (retrieve key)) 1))
(hash-table-keys *numbers*)))))
;; first 25
(for-each (lambda (i) (display-number i (list-ref sorted-keys i)))
(iota 25))
;; 2000-2006
(for-each (lambda (i) (display-number i (list-ref sorted-keys i)))
(iota 7 1999))
)
</lang>
 
{{out}}
<pre>
1: 1729 -> ((9 10) (1 12))
2: 4104 -> ((9 15) (2 16))
3: 13832 -> ((18 20) (2 24))
4: 20683 -> ((19 24) (10 27))
5: 32832 -> ((18 30) (4 32))
6: 39312 -> ((15 33) (2 34))
7: 40033 -> ((16 33) (9 34))
8: 46683 -> ((27 30) (3 36))
9: 64232 -> ((26 36) (17 39))
10: 65728 -> ((31 33) (12 40))
11: 110656 -> ((36 40) (4 48))
12: 110808 -> ((27 45) (6 48))
13: 134379 -> ((38 43) (12 51))
14: 149389 -> ((29 50) (8 53))
15: 165464 -> ((38 48) (20 54))
16: 171288 -> ((24 54) (17 55))
17: 195841 -> ((22 57) (9 58))
18: 216027 -> ((22 59) (3 60))
19: 216125 -> ((45 50) (5 60))
20: 262656 -> ((36 60) (8 64))
21: 314496 -> ((30 66) (4 68))
22: 320264 -> ((32 66) (18 68))
23: 327763 -> ((51 58) (30 67))
24: 373464 -> ((54 60) (6 72))
25: 402597 -> ((56 61) (42 69))
2000: 1671816384 -> ((940 944) (428 1168))
2001: 1672470592 -> ((632 1124) (29 1187))
2002: 1673170856 -> ((828 1034) (458 1164))
2003: 1675045225 -> ((744 1081) (522 1153))
2004: 1675958167 -> ((711 1096) (492 1159))
2005: 1676926719 -> ((714 1095) (63 1188))
2006: 1677646971 -> ((891 990) (99 1188))
</pre>
 
342

edits