2009年3月4日水曜日

いてー

今日も朝から疲労倦怠感、風邪気味の倦怠感、風邪気味の症状、微熱、どれも強かったのだけど、数日休んでばかりだったからか肉体的な疲労はそんなに強くなかった。それで午後から出かけて、いつも通り死にそうになって帰ってきた。でもその時点でも肉体的疲労は強くなくて、「脳の疲労」とでも言うべき一連の症状が強くなっただけだったのだが、夕食と風呂で負荷がかかった後、足がめちゃくちゃ筋肉痛。まじで痛え。

アッカーマン関数

2chのC#初心者スレに投稿したアッカーマン関数を計算するC#メソッド。
あからさまに宿題くさかったが、ジェネリッククラスのスタックを使って再帰をヒープで行う方法が提案されるなど、興味深かったので。

方針は、ハッシュを使って計算済みの値を保存し再利用する事で無駄な再帰を減らす事と、上記のヒープを使っての自前再帰。計算済みの値を再利用するので表作成にも有効。うちの環境(メモリ1GB)では
m=0でn=int.MaxValue-1まで
m=1でn=10000000くらいまで
m=2でn=5000000くらいまで
m=3でn=20まで
m=4でn=1まで
計算できた。

static Dictionary<int, Dictionary<int, int>> Ack = new Dictionary<int, Dictionary<int, int>>();

static int Ackermann(int m, int n)
{
Stack<int> argM = new Stack<int>();
Stack<int> argN = new Stack<int>();
argM.Push(m);
argN.Push(n);
while (argM.Count>0) {
if (!Ack.ContainsKey(argM.Peek())) Ack[argM.Peek()] = new Dictionary<int, int>();
if (Ack[argM.Peek()].ContainsKey(argN.Peek())) {
argM.Pop();
argN.Pop();
continue;
} else {
int value;
if (argM.Peek() == 0) {
value = checked(argN.Peek() + 1);
} else if (argN.Peek() == 0) {
if (Ack.ContainsKey(argM.Peek() - 1) && Ack[argM.Peek() - 1].ContainsKey(1)) {
value = Ack[argM.Peek() - 1][1];
} else {
argM.Push(argM.Peek() - 1);
argN.Push(1);
continue;
}
} else {
int n_;
if (Ack.ContainsKey(argM.Peek()) && Ack[argM.Peek()].ContainsKey(argN.Peek() - 1)) {
n_ = Ack[argM.Peek()][argN.Peek() - 1];
} else {
argM.Push(argM.Peek());
argN.Push(argN.Peek() - 1);
continue;
}
if (Ack.ContainsKey(argM.Peek() - 1) && Ack[argM.Peek() - 1].ContainsKey(n_)) {
value = Ack[argM.Peek() - 1][ n_];
} else {
argM.Push(argM.Peek() - 1);
argN.Push(n_);
continue;
}
}
Ack[argM.Pop()][argN.Pop()] = value;
continue;
}
}
return Ack[m][n];
}

2009年3月3日火曜日

体調

今日も、疲労的な倦怠感に加えて軽い吐き気を伴う風邪気味っぽい倦怠感があって、目が覚めてもずっと横になっていた。その後、起きて体温を測ったら37.4度。吐き気があるから食欲もなくてカップラーメンを買ってきた。

2009年3月2日月曜日

微熱

また37.5度。おい、37.5度で定着すんなよ。

でも今日は昨日程には辛くはない。ていうか久しぶりに快晴だったので外出してきた所。まあ、負荷がかかった分死にそうになって倦怠感も疲労も強いが、風邪気味特有の倦怠感ってのはない。

あと、すげー眩しいという神経症状は相変わらず。

食後とは言え、37.6度・・・。なんか珍しく胸を張って微熱と言える微熱になった。だから何だという話だが。

微熱

昨日は、朝方からいきなり37.5度で、億劫という意味の倦怠感に、風邪気味の、わずかな吐き気と熱っぽくて頭がぼーっとする、という意味の倦怠感が加わり、あまりにも体調が悪くて一日中寝ていた。そうやって全く体を動かしていないのに、夜少しすっきりしてきたら筋肉痛がめちゃくちゃ強くなって、しかも熱は全然引いていない。結局夜までずっと横になっていて、夜も早めに寝た(でも不眠気味で入眠に苦労した)。

別に肉体的疲労で立ち上がれないとかそういうのじゃないけど、一日寝ているというような事は今まで一度もなかったのでショック。

今日もこの時間帯に既に37.0度。午後にはもっとあがるんだろうなあ。既に少し気分も悪いし。

来週の診察で病名宙ぶらりん状態に決着が付けば良いんだけど・・・

2009年2月28日土曜日

日経強いなー

8000円より下での動きで日経の強さを実感するのもアレだが。

しかしこれ、いくらNYと連動せずに真面目に平均線まで反発したとは言っても円安を受けてのものだろうからなあ。市場の主体性が確立できているわけではない。このままアメリカを無視して自力で経済を上向かせて、輸出依存の体制も改善して、本来のセオリーどおりの株高・円高の形になるのは・・・一世紀くらい先?ていうかそんなの出来るの?

むしろ、一時的に見られた円安・株安というパターンがそのうち定着して、ずるずると日本経済が凋落という未来の方があり得そうだ。

2009年2月27日金曜日

三角錐のエッジを鋭くした

WPFの法線って、(面ではなく)頂点毎に指定されて、共有される頂点に対して何も指定しないと、面から計算した法線を自動的に平均化するのね。

というわけで、頂点を共有しないようにしたら、より三角錐らしくなった。
以前:

以後:

ミクさん:

コードも更新した。