Blob


1 ;; (flatmap
2 ;; (lambda (new-row)
3 ;; (map (lambda (rest-of-queens)
4 ;; (adjoin-position new-row k rest-of-queens))
5 ;; (queen-cols (- k 1))))
6 ;; (enumerate-interval 1 board-size))
8 ;; This new mapping calls (queen-cols (- k 1)) board-size times upon each call to (queen-cols k).
10 ;; k calls to queen-cols
11 ;; 1 board-size
12 ;; 2 bs^2
13 ;; 3 bs^3
14 ;; ...
15 ;; bs bs^bs
17 ;; So, overall, it seems like ultimately, queen-cols is called board-size^board-size times. In the original version, queen-cols is only called board-size times. So, if it originally takes time T, the new version will take time T^T