理系学生日記

おまえはいつまで学生気分なのか

問題2-43 (2.2.3 Sequences as Conventional Interfaces)

Louis Reasonerがまたミスをして、昨日のn-queen問題のflatmap以下をこんな風にして書きやがったらしい。

(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))

で、遅い遅いとか言ってる。Louis--。


なんで遅いのかってのがまず第一の問題なんですけど、各列のqueenの場所を決めるごとに、時間のかかるqueen-colsがボードサイズだけ呼ばれまくるのが問題なんだと思われます。
しかもqueen-colsは再帰なので、クソ遅くなるんだと思った。ていうのが答えでいいですかよくないですね、でも計算量とかはもう考えません。