自 己 制 裁

俺は馬鹿だ!マジで馬鹿だ!
超追い込まれているこの状況下で、パソコン&ケータイやりすぎ!


今日はケータイだけで5時間くらい無駄な時間をすごしてしまった・・・。
Wikipedia納豆の製造方法調べてんだよ俺・・・。凄く意味ねえYo!


これはもうちょっと自分に厳しくならないと駄目かもわからんね。
このままじゃ大学受験どころか、多分行くことになる予備校の試験にも落ちる。


というわけで、ここに己の行動を制限するを定めようと思う。




*電子機器に関する法


 一つ、ケータイはメール返信・英語の勉強(Excite翻訳を利用させて貰ってます)以外の利用は禁止。
 一つ、パソコンは1日1時間まで。ただしログオフ時はカウントしない
 一つプログラミングは禁止。(多くの場合、途中で止められないし。)
  () - 雑処理用のバッチファイルとPerlスクリプトだけは可。


 一つ2chブラウザ立ち上げ禁止。(2chをしていると、気付けば
  () - Googleでヒットしたスレを開くのは良い。2chは受験・予備校に関する情報も豊富。


 一つ、アクセス可能なサイトは以下のものに制限する。
  ・http://www.google.co.jp/ (:1)
  ・http://d.hatena.ne.jp/
  ・某ポイント制アップローダサイト (:2)
  (:1) - 検索ワードには 数学; 物理; 英語; 生物; 世界史; 国語(略); 受験 の何れかANDで含めること。
  (:2) - 受験生には、集中力を減退させる、性欲の処理は重要。
 (しかも前立腺ガンの防止にも良いらしい。)

 一つ、W○nnyはご法度。
 一つiPodには英語の勉強に役立ちそうな洋楽を入れる。


*日常に関する法

 一つ、夜は1:00までに布団に入る。布団に入ってから携帯を弄ってはいけない。
 一つ、朝は9時までに起きる。昼寝は禁止
 一つ、月に1回以上は外に出ること。


*この法の改正に関する法

 一つ、前に定めた法は取り消せない。
 一つ、前に定めた法と矛盾する法は作れない。
 一つ、この法は 2006/3/20 から、俺(arcfour)が大学に受かるまで有効とする。




まぁこんな感じでどーでしょうかね・・・。(ネタっぽいけど、大マジですよ。)
穴があったら埋められるようにオーバーライド(笑)出来るようにしたから大丈夫かな?


さぁ、今日も早く寝ないと。では、また明日!

今日はもう寝る

最近、生活のリズムが滅茶苦茶です・・・。
ここは一つ、起死回生(この言葉の意味は知らないけど)ということで早めに寝て早く起きることにする。
っても、どうせ布団に入っても2~3時間は寝られないのだろうけど・・・(泣)


それと、最近ケータイ弄り過ぎ・・・。
勉強しながらケータイ弄ったりしてるし。解約した方がいいかも知れないなぁ。


では!また明日!

フラッシュ、フラッシュ、フラーッシュ!(死ね)

結城浩氏の日記でこんなん見つけた。
http://d.hatena.ne.jp/hyuki/20060225

フラッシュソートだそうです。新しいソーティングアルゴリズムでしょうか。こんなのあったんだ。知らなかった。
各言語で書かれたソースコード
http://www.neubert.net/Flacodes/FLACodes.html

にあるので、早速Cで書かれたものを読んで見ました。


なんか、クイックソートに分布数えソースが混ざったような感じですね。

クイックソートでは、値が大きい方と小さい方の二つに分けますが、
フラッシュソートでは分布数えソートっぽいのを使って複数に分けます。
その後はクイックソートと同じです。(このリンク先のCのコードを見てみると、分けられる量によってフラッシュソートを続行するか、挿入ソートに切り替えるかにしていますが。)


早速書いてみました。
(配列をふんだんに使うんで今日はHaskellじゃなくてCです。)
(isortは淫サーションソートです。紙面節約のため省略します。)



 1: #include <stdio.h>
 2: #include <stdlib.h>
 3: #include <string.h>
 4:
 5: // 定数
 6: #define THRESHOLD 75
 7: #define BACKET_SIZE 75
 8:
 9: // マグロ
10: #define POS(rate, min, v) *1;
29:
30:     { int i;
31:       for(i=0; i < n; i++) backet[POS(rate, min, a[i])]++;
32:       for(i=1; i < BACKET_SIZE; i++) backet[i] += backet[i-1];
33:     }
34:
35:     { int moved = 0, ix = 0, flash = a[0];
36:
37:       while(1) {
38:         int i = --backet[POS(rate, min, flash)];
39:         moved++;
40:         if(i == ix) {
41:           a[i] = flash;
42:           if(moved >= n) break;
43:           while(1) {
44:             ix++;
45:             if(backet[POS(rate, min, a[ix])] > ix) break;
46:           }
47:           flash = a[ix];
48:         } else SWAP(a[i], flash);
49:       }
50:     }
51:
52:     { int i;
53:
54:       for(i=0; i < BACKET_SIZE - 1; i++) {
55:         int n2 = backet[i+1] - backet[i];
56:         if(n2 > THRESHOLD) fsort(a + backet[i], n2);
57:         else isort(a + backet[i], n2);
58:       }
59:     }
60:   }
61: }

悲しいことに、オリジナル(のint用の改変版)のやつよか微妙に遅いです。どこか可笑しいのかも・・・。
ベンチマークとってみると、マージソートより早かったです
(要素数が少ないとマージソートの方が早かった。)
(うちのパソコンはちょっと古いので、要素数80000までしか試せない。)


このアルゴリズムの特徴ですが、ソートする対象は数値じゃないと駄目くさいです。
でも数値であれば不動小数点数もソート出来るので、素の分布数えソートより汎用性が高そうです。

・・・とはいっても、クイックソートマージソートの地位を脅かすほどのものじゃない臭いですね。
OOだと数値じゃないものをソートする方が多かったり?しますからね。
まぁ、気が向いたら使ってみてはいかがでしょうか。


# at 2006/3/19 1:00

ソースにちょっとバカっぽいところがあったので、少し修正。オリジナルのソースに、aを振り分ける前に一番大きい要素と一番最初の要素(a[0])を入れ替えているの部分があるのですが、これは一体何でしょうか。取り払ってみても何も変わらないのですがね・・・。

# at 2006/3/22 0:47

疑問解消。↑をしておくことで、必ず一番大きい要素a[nmax]はa[n-1]に来るようになる。そのお陰で、その後のインサーションソートで配列の終端のインデックスを意識する必要が無くなる。(そのお陰で、少し早くなる)
俺の実装の場合特殊なインサーションソートに依存していないので、その処理は不要。

それと、本家のC版とJava版の実装が微妙に違うのですが・・・。これは一体どういうつもり(笑)なんでしょうか。
どうやら必ずしも再帰は必要ないようです。なので、上記の「クイックソートに分布数えソートが混ざったような〜」はあくまでC版の実装を指した感想になります。不注意ですみません。

*1:int)(rate * (double)((v) - min)))
11: #define SWAP(x, y) do {int t; t = x; x = y; y = t;} while(0)
12:
13: void fsort(int a[], int n) {
14:
15:   int max, min;
16:   
17:   { int i;
18:     min = max = a[0];
19:     for(i=1; i < n; i++) {
20:       if(a[i] < min) min = a[i];
21:       else if(a[i] > max) max = a[i];
22:     }}
23:
24:   if(max != min) {
25:     int backet[BACKET_SIZE];
26:     double rate = (double)(BACKET_SIZE - 1) / (double)(max - min);
27:
28:     memset(backet, 0, BACKET_SIZE * sizeof(int

心臓のしゃっくり

またやってしまった・・・。14時間睡眠・・・。頭痛い。

それに、最近心臓の調子が悪い。
なにやら急に胸が痛くなったり、オナニーの最中にいきなり心臓がバクっ!と一瞬リズムが狂ったりするんです。
後者は、期外収縮といって、いわば心臓のしゃっくりのようなもので、ストレスが原因となっている場合が多いようです。

しかし胸が痛くなるというのは・・・。・・・この前、狭心症を疑って病院で診て貰ったのですが、異常は見つからず。
最近受けた血液検査でも何も疑わしいものは見つかっていないので、動脈硬化を起こしてるなんてことは無いだろうし・・・。

やっぱりストレスかな・・・。ストレス性の狭心症血栓が原因になっているのだろうか。
だとしたら脳梗塞なんてのもあり得るのかな。未成年なのに・・・(泣)
元から悪いのに、これ以上知能低下したらどうなっちゃうのやら。

夢の世界

最近、おかしな夢を見ます。


どんな夢なのかというと、夢を夢と気付くことが出来る夢です。
これだけ聞くと、え?そんなの大したこと無いような・・・って思われる方が多いと思います。


しっかし!これがまた大したことなんです。(何様
夢と気付けたその後は、寝ていながら意識が覚醒し、夢の世界を自由に歩き回ることが出来ます。
この様な状態の夢を明晰夢というそうです。

明晰夢の世界では、その作りは現実そっくりでありながら、何をしても許されるので、男性の方は道行く無抵抗の美女を見境無く襲う野生の獣になること請け合いです。
(しかし、あまり興奮し過ぎると強制的に夢も希望も無い現実世界へと強制送還されてしまうので注意が必要です。)


では、そんな夢のような夢をみるには、一体どうすればいいのでしょうか?
残念ながら、明晰夢を見ることを100%成功させる方法は今のところ存在しません。
自分も、ある日偶然このような特異体験をして、体験内容を元にネットで検索したら、それが明晰夢というものであることを知ったのです。


しかし!諦めることはありません。実は明晰夢を見る方法は色々と研究されていて、お近くの書店で明晰夢に関して書かれている本が手に入るそうです。
http://www.amazon.co.jp/exec/obidos/search-handle-form/250-9037917-4621856

またネットで検索すると明晰夢に関する記事がわんさかと出てきますので、
獣化に興味がある方は調べてみてはいかがでしょうか。

今日は時間が無いのでここで!

Oh! 朕・わらわのトラックバック初体験

kidd-number5氏の指摘についてですが、

すみません、自分の言葉足らずでした。


「〜より」と言ったのは、示したかった前置詞の持つ意味自体を伝えるために、
近い意味を持つ日本語を用いたものであって、
日本語における、(複数の意味をもつ)「〜より」という言葉自体を意識したものではありません。
(より限定的に表現するとしたら、「〜よりも」でしょうか。)


つまり、文 "s v B より A" があるとき、
「より」の意味は、sがAとBにvする時、AはBよりsにvされる傾向が強い、と限定した上での「〜より」です。
注: v は状態動詞とします。
(この説明は、感覚を掴ませるためだけのものなので、論理的にはおかしいかもです。)

もうちょっと詳しく書いておくべきでした。自分の怠慢です、申し訳ない。


あと、DVDで英語字幕表示できました。いやー助かります。
機械は苦手なんでこういう機能があることに全く気付きませんでしたw
ディズニー、試してみます。有難うございました!

はてなで活動する同士として(?)、これからも宜しくお願いしますー。 >id:kidd-number5