[ create a new paste ] login | about

Project: programmingpraxis
Link: http://programmingpraxis.codepad.org/I6l4ojtJ    [ raw code | output | fork ]

programmingpraxis - Scheme, pasted on Nov 9:
; taxicab numbers

(define (root3 n)
  (let loop ((u n))
    (let* ((s u)
           (t (+ (+ s s) (quotient n (* s s))))
           (u (quotient t 3)))
      (if (< u s) (loop u) s))))

(define (cubes n)
  (let loop ((x 0) (y (root3 n)) (zs (list)))
    (let ((s (+ (* x x x) (* y y y))))
      (cond ((< y x) (reverse zs))
            ((< s n) (loop (+ x 1) y zs))
            ((< n s) (loop x (- y 1) zs))
            (else (loop (+ x 1) (- y 1)
              (cons (list x y) zs)))))))

(let loop ((n 1))
  (if (< 1 (length (cubes n)))
      (begin (display n) (display ": ")
             (display (cubes n)) (newline))
      (loop (+ n 1))))


Output:
1
1729: ((1 12) (9 10))


Create a new paste based on this one


Comments: