codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; the 147 puzzle (define (f k) (let ((fss (list))) (let loop1 ((k k) (n 1) (d 1) (fs (list))) (if (= k 1) (if (zero? (modulo d n)) (set! fss (cons (cons (/ d n) fs) fss))) (let ((lo (if (null? fs) (+ (quotient d n) 1) (max (car fs) (+ (quotient d n) 1)))) (hi (quotient (* k d) n))) (let loop2 ((a lo)) (when (<= a hi) (let* ((new-d (lcm a d)) (new-n (- (* n new-d (/ d)) (/ new-d a)))) (loop1 (- k 1) new-n new-d (cons a fs))) (loop2 (+ a 1))))))) (reverse (map reverse fss)))) (for-each (lambda (x) (display x) (newline)) (f 5))
Private
[
?
]
Run code
Submit