同じ文字列のn回繰り返しを作る「最速」の方法
パズルっぽくておもしろかったのでやってみた。と、別のところにも書いたのだけど、あそこじゃあ反応が薄いので、見てる人が多そうなこっちで聞いてみる。
function(s,n){ var q = ''; while(n){ if(n%2) q += s; s += s; n >>= 1; } return q; }
javascript:alert((function(s,n){var q='';while(n){if(n%2)q+=s;s+=s;n>>=1;}return q;})('hoge',10)) //=> hogehogehogehogehogehogehogehogehogehoge
速さのベンチはこっちの一番下にある data:uri をアドレス欄に入れてみたらいいと思います。
もっと良い方法を知ってる人は教えてください。
小飼弾さんも同じこと書いてるや。
n が負の時におかしくなるから「for(n *= n > 0; n; n >>= 1, str += str) if(n & 1) result += str;」かなぁ
はてなブックマーク - 404 Blog Not Found:アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法
ほんとだ。上に書いた関数で n に負の値を渡すと立派なブラクラになるので注意。