2013-07-23

CodeIQ × はてな エンジニア夏祭り2013 第1夜 に参加した

CodeIQ × はてな エンジニア夏祭り2013 第1夜 はてなの挑戦状 に参加した。「ワンライナーで書けるっしょ!」と思って pry 立ち上げて粘ったものの、全然そんなことない回答に仕上がりました。




設問は次の通りでした。

■ 課題

以下のようにスパゲティ(spagetti)という文字 50 個分をバラバラにしてランダムに配置した文字列があります。この中に前から順番に「n」「e」「a」「p」「o」「l」「i」「t」「a」「n」という順番でナポリタン(neapolitan)という文字が隠れています。その該当文字を抜き出し、前後に [ ] を付け加えてください。

-------
gtgtsgipgttptinggipsppaigsesgpetgstpatetisiesagaeaigttetepitiatsegssieeeeatepaaiagtpieataatppiitgiapsteitatiiatpetetetttgpetpaasipttssstpeeeggtiagtttegtiipestsasgpsepaasapttgattgiatppegitiatpasgatgepttggapesaeetaeissttggieietgspagesiipestipggstttpateptitiaetottissgggtttaipappgstsptttgtpispattgegstltiappseisapgistaiagteeiptptpisaieisagstapeteietgteiisgtiptstgtstasspeatspptitttatteastsgtptgtasggpniaaeteaisett
-------

例として、以下の様な状態に文字列を変換できれば正解です。

-------
gtgtsgipgttpti[n]ggipsppaigs[e]sgpetgstpatetisiesagaeaigttetepitiatsegssieeeeatepaaiagtpieata[a]tppiitgia[p]steitatiiatpetetetttgpetpaasipttssstpeeeggtiagtttegtiipestsasgpsepaasapttgattgiatppegitiatpasgatgepttggapesaeetaeissttggieietgspagesiipestipggstttpateptitiaet[o]ttissgggtttaipappgstsptttgtpispattgegst[l]tiappse[i]sapgis[t]aiagteeiptptpisaieisagstapeteietgteiisgtiptstgtst[a]sspeatspptitttatteastsgtptgtasggp[n]iaaeteaisett
-------


■ 注意事項
- 必ず文字の先頭から [n][e][a][p][o][l][i][t][a][n] という並びになるようにしてください
- 例えば「i」など複数回出現するような文字の場合は [l] と [t] の間にあれば、どの i に [] がついても問題ありません



※ 解答は作成したプログラムのソースコードをtxtファイルに貼り付けていただき、そのファイルのみをアップロードしてください。

噴飯コードですね、はい。特に each_with_index がだめだと反省しています。設問には想定時間10分って書いてありますが、全然10分で終わっていません。優秀な解答がブログで示されるようなので楽しみにしています。



【追記】

PHP でも書いたので貼っておきます。そもそも正規表現にする必要なかった^^;






@ymkjp