「オラにじぇじぇじぇなコードを書いてくんろ!」のやつ
http://codeiq.hatenablog.com/entry/2013/08/06/121542
せっかく書いたので、一応ここにも書いておこうかと。言語は現時点で一番得意なJavaScript/node.jsで。
まあ、どちらもあまり綺麗なコードではないのだけど……
rev3
#!/usr/bin/env node console.log(function(spagetti, neapolitan) { neapolitan = neapolitan.split(''); return spagetti.split('').map(function(chr) { return (chr === neapolitan[0]) ? '[' + neapolitan.shift() + ']' : chr; }).join(''); }('gtgtsgipgttptinggipsppaigsesgp' + 'etgstpatetisiesagaeaigttetepit' + 'iatsegssieeeeatepaaiagtpieataa' + 'tppiitgiapsteitatiiatpetetettt' + 'gpetpaasipttssstpeeeggtiagttte' + 'gtiipestsasgpsepaasapttgattgia' + 'tppegitiatpasgatgepttggapesaee' + 'taeissttggieietgspagesiipestip' + 'ggstttpateptitiaetottissgggttt' + 'aipappgstsptttgtpispattgegstlt' + 'iappseisapgistaiagteeiptptpisa' + 'ieisagstapeteietgteiisgtiptstg' + 'tstasspeatspptitttatteastsgtpt' + 'gtasggpniaaeteaisett', 'neapolitan'));
引数を結果の保存として使うコード。でも代入すらも排除したくなったので以下のコードに変更。
rev4
#!/usr/bin/env node console.log(function(spagetti, neapolitan) { return spagetti.split('').map(function(chr) { return (chr === this.neapolitan[0]) ? '[' + this.neapolitan.shift() + ']' : chr; }.bind({ neapolitan: neapolitan.split('') })).join(''); }('gtgtsgipgttptinggipsppaigsesgp' + 'etgstpatetisiesagaeaigttetepit' + 'iatsegssieeeeatepaaiagtpieataa' + 'tppiitgiapsteitatiiatpetetettt' + 'gpetpaasipttssstpeeeggtiagttte' + 'gtiipestsasgpsepaasapttgattgia' + 'tppegitiatpasgatgepttggapesaee' + 'taeissttggieietgspagesiipestip' + 'ggstttpateptitiaetottissgggttt' + 'aipappgstsptttgtpispattgegstlt' + 'iappseisapgistaiagteeiptptpisa' + 'ieisagstapeteietgteiisgtiptstg' + 'tstasspeatspptitttatteastsgtpt' + 'gtasggpniaaeteaisett', 'neapolitan'));
bindしちゃう。でもbindしたせいでthisが必要になるのでコードが若干横に長くなった……