GEEKy Script Writer [perl and more!]
You should permit the JavaScript!!
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【むしろ】どれエガ?の解説【反省会】
昨晩のどれエガ?だけど、なんか寝てる間にはてなブクマとかついてて笑った。
みんな優しい。しかも本人降臨してるし。
エガちゃん、このブログにもコメントおくれよ。ちょっと期待してたんだからサ!

というような話はさておき、せっかく本人が見てくれてたんだから、彼のためにもスクリプトの解説しちゃおう!
javascript:function eg(){d=document.getElementsByTagName('html')[0].innerHTML;e=[12360,12456];g=[12364,12460];a=[12356,12452];c=0;for(x=-1;++x<2;)for(y=-1;++y<2;)for(z=-1;++z<2;){s=String.fromCharCode(e[x],g[y],a[z]);p=0;while((p=d.indexOf(s,p+1))!=-1)c++;}alert(c+String.fromCharCode(12456,12460,12356,12391,12377,12290))}eg();

いやはや、相変わらずの汚いコードですいませんどうも。
まずは読みやすいように整形しましょうか。
function eg(){
d=document.getElementsByTagName('html')[0].innerHTML;
e=[12360,12456];g=[12364,12460];a=[12356,12452];
c=0;
for(x=-1;++x<2;)
for(y=-1;++y<2;)
for(z=-1;++z<2;){
s=String.fromCharCode(e[x],g[y],a[z]);
p=0;
while((p=d.indexOf(s,p+1))!=-1)
c++;
}
alert(c+String.fromCharCode(12456,12460,12356,12391,12377,12290))
}
eg();

今の頭で見てみると、コードの荒さが露呈しちゃってますね。まあいっか。
innerHTMLとかはそのまんまなのでスルーして、次の部分。
e=[12360,12456];g=[12364,12460];a=[12356,12452];

これは、"えがい","えがイ","えガい","えガイ","エがい","エがイ","エガい","エガイ"の全てにヒットさせるためとページの文字コードによる影響をなくすために、検索文字列をその場で生成させる必要があったので、各カナの文字コードを配列にしてあるんですね。今考えたら別に配列3つも用意する必要もなかったんだけどね。うん。シクった。

そして次の部分。
for(x=-1;++x<2;)
for(y=-1;++y<2;)
for(z=-1;++z<2;){
s=String.fromCharCode(e[x],g[y],a[z]);

お察しの通り、ここでsにさきほどの文字コードから生成した検索用文字列(えがい~エガイ)を代入してるわけです。

そして、次の部分。
これがperlなら
$c += ($d =~ /$s/);

のように楽にヒット数を加算できるんですが、JavaScriptの正規表現にはそんなのなかったはず(簡単にできるなら誰か教えてください)なので、
p=0;
while((p=d.indexOf(s,p+1))!=-1)
c++;

のようなコーディングが必要になってくるわけです。
forの最奥ループごとに、検索offsetを0で初期化(p=0の部分)して、indexOfで検索していってるわけです。でもよく考えたら-1で初期化しないとだめなんだよね。p+1しちゃってるから。
もしくは、
p=0;
while(!(p=d.indexOf(s,p)+1))
c++;

こんな感じですね。
のび太君は本当にバカだなあ。

んで、最後にcと、"エガいです。"を文字コードから変換したやつをくっつけてalertで表示させておしまい。ちゃんちゃん。


まあ、なんかの参考にでもなるんならしておくれ。
面白がって便乗してるだけの僕に、エガちゃんについて論じる資格はない。

テーマ:プログラミング - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2005 GEEKy Script Writer [perl and more!] all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。