任天堂のCode Puzzleがやっと解けました

GAEやPythonの勉強を中断してずっと挑戦していた任天堂Code Puzzleがやっと最終問題まで解けました。
この問題は9月中頃ツイッターなどで話題になっていたようなのですが、私は10月に入ってから知りせっかくPythonを勉強中だしやってみようと挑戦を始め2週間ほどかかってやっと解くことができました。
速い方だと7,8時間で全問解けるそうですが、私は最終問題にたどり着くまでに3日ほど、最終問題を解くのに10日ほどかかりました。(^_^;)
最終問題に10日もかかったのはあるポイントでずっと詰まっていたからでして、実はクリアできた現在でもいまいちスッキリしていないのですがネタバレを含んでしまうのでエントリの最後に書きたいと思います。
すべて自力で解きました!と言いたいところなのですが最終問題ではid:hirataraさんのヒントを参考にさせていただきました。

感想としてはとにかく楽しかったです。最初の問題で「なんでわざわざこんな書き方を・・・」と思っていたことが実は後の問題への伏線になっているなど、ちょっとしたお遊びとは思えないクオリティで「さすがゲームの任天堂!」とヘンに感心してしまいました。
これまで一度も使ったことがなかったビット演算やPythonの記法、組み込み関数など勉強になることも多かったです。2週間もかけていると途中で何度も諦めようかなと思ったのですがクリア時の達成感は大きいので、もしまだチャレンジしていなければぜひオススメしたいと思います。


ここから下、最終問題について少しネタバレになります。見たくない方はご注意ください。










最終問題で私がずっと詰まっていたのはハッシュ値を算出し、そこから' iTI'の4文字で構成される文字列を求めた後、いよいよ答えの文字列を求めようという部分です。
今回のルールに従って文字列を暗号化すると32文字の空白列の左右から'iTI'の文字でうまっていくことになりますが、これ元の文字列が長いと左右からきた文字が重なることも考えられますよね。
例えば'artgearartgear'という文字列を変換すると

iI                              
ITi                            i
ITiiIi                         i
TiITIIi                       iI
TiITIIiI                      iI
iITiTITTi                    iIT
iITiTITTiIIi                 iIT
ITiTiI  IIIIi               iITi
ITiTiI  IIIIii              iITi
TiTiITiiTIIITIi            iITiI
TiTiITiiTIIITIiiI          iITiI
iTiITiIIiTITiTTTTi        iITiIT
iTiITiIIiTITiTTTTiiIi     iITiIT
TiITiIIIIiIiT ii ITIIi   iITiITi
TiITiIIIIiIiT ii ITIIiiI iITiITi
iITiIIIIITII iII IiTITTT ITiITiT
iITiIIIIITII iII IiTITTT Ti ITiT
ITiIIIIITiTT IIT TIiI ii  T IiTi
ITiIIIIITiTT IIT TIiI ii  T ITTi
TiIIIIITiT iiTT   TTT IIi iiI  I
i IIIIITiT iiTT   TTT IIi iiI   
T TIIITiT iII i   iiiiTII ITTi i
T TTIITiT iII i   iiiiTII ITTi i
  i TTiT iIIT Ti iITTIiTT I  T T
  i TITT iIIT Ti iITTIiTT I  T T
 iTi I iiIIT   T IT  TI iiIi i i
 iTi I i  TT   T IT  TI iiIi i i
 TiT I Ti ii   iiI    I ITII T T

というように左右から埋まる文字が重なって両者を考慮した文字で埋められていくという状況になります。
このパターンも考えないといけないよなーと思っていたので、せめてbars_posの最終位置や最後の一文字くらいは分からないと解きようがない!となって詰まっていました。そのヒントがHTMLのどこかに書かれているんじゃないかと血眼になって探しました(^_^;)
このようなパターンは考えなくてもいいという事がわかるヒントがどこかにあるのですかね・・・。
とりあえずそれはないと仮定して解いてみればいいじゃん!て言われたらその通りなのですが。
ちなみにハッシュ値を求めるのにも3,4日かかりました。汗
(3,4日かけて総当りしてたんじゃないですよ!)