Skip to content

Latest commit

 

History

History
20 lines (14 loc) · 970 Bytes

2.43.md

File metadata and controls

20 lines (14 loc) · 970 Bytes

2.43

Question

Louis Reasoner is having a terrible time doing exercise 2.42. His queens procedure seems to work, but it runs extremely slowly. (Louis never does manage to wait long enough for it to solve even the 6x6 case.) When Louis asks Eva Lu Ator for help, she points out that he has interchanged the order of the nested mappings in the flatmap, writing it as

(flatmap
 (lambda (new-row)
   (map (lambda (rest-of-queens)
          (adjoin-position new-row k rest-of-queens))
        (queen-cols (- k 1))))
 (enumerate-interval 1 board-size))

Explain why this interchange makes the program run slowly. Estimate how long it will take Louis's program to solve the eight-queens puzzle, assuming that the program in exercise 2.42 solves the puzzle in time $T$.

Answer

Instead of enumerating all possible coordinates for the next queen given $k - 1$ safe columns, Louis's code generates $k - 1$ columns for every possible queen coordinate.