(module monkey mzscheme (require (lib "42.ss" "srfi") (only (lib "13.ss" "srfi") string-join)) ;; monkey: number -> void ;; Prints a list of numbers according to the puzzle described ;; in http://rbandrews.livejournal.com/128578.html. (define (monkey n) (do-ec (:range k n) (printf "~a~n" (string-join (map number->string (make-row n k)) " ")))) ;; make-row: number number -> (listof number) ;; Produces a row of the puzzle grid. (define (make-row n k) (define (square x) (* x x)) (define (f i j) (* (+ i j) (add1 j))) (append (list-ec (:range i k) (f (- (add1 n) k) i)) (list (square (add1 k))))))