再びTDDを実践しながらProject Eulerを解く

今年の初めに立てた目標

 Rubyを使ってTDDを実践しながらno titleを1,2日に1問解く(ついでに英語にも取り組める!)と立てたものの最初の1月だけで見事に挫折した.絶対に直接的な参考文献をググらないというルールの元やっていて,挫折ポイントになったのは順列生成のProblem 24.

A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:

012 021 102 120 201 210

What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?

http://projecteuler.net/index.php?section=problems&id=24

 順列生成くらいならまだまだソラで書けるぜ,へっへーと思っていたが詰んだというのが情けない.CS寄りの数学的な解決力を身に付けるつもりでいたのに,ここで意地を張って解くのでは埒があかないと気づいたのは今更になってである.

 毎日解こうと思って週初めにProblem \d+と書いた7枚の付箋は24-30で物悲しげに今日も僕のタイピングに揺れている.4ヶ月もだ.情けない.

 ということで,ググる閾を少しだけ下げて,週末レベルで再開しようと誓った月曜出社前の朝である.会社の人とか友達とかと一緒にわいわい解いて,今年中で目指せ200問とかやりたい.新しい問題のリリースメールを見る度に自己嫌悪が憑いて来ている.

解いたらgithubにpushしている