Blame


1 665c255d 2023-08-04 jrmu ;; (flatmap
2 665c255d 2023-08-04 jrmu ;; (lambda (new-row)
3 665c255d 2023-08-04 jrmu ;; (map (lambda (rest-of-queens)
4 665c255d 2023-08-04 jrmu ;; (adjoin-position new-row k rest-of-queens))
5 665c255d 2023-08-04 jrmu ;; (queen-cols (- k 1))))
6 665c255d 2023-08-04 jrmu ;; (enumerate-interval 1 board-size))
7 665c255d 2023-08-04 jrmu
8 665c255d 2023-08-04 jrmu ;; This new mapping calls (queen-cols (- k 1)) board-size times upon each call to (queen-cols k).
9 665c255d 2023-08-04 jrmu
10 665c255d 2023-08-04 jrmu ;; k calls to queen-cols
11 665c255d 2023-08-04 jrmu ;; 1 board-size
12 665c255d 2023-08-04 jrmu ;; 2 bs^2
13 665c255d 2023-08-04 jrmu ;; 3 bs^3
14 665c255d 2023-08-04 jrmu ;; ...
15 665c255d 2023-08-04 jrmu ;; bs bs^bs
16 665c255d 2023-08-04 jrmu
17 665c255d 2023-08-04 jrmu ;; 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