No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 915 | 916 | 917 |...| 1243 | 1244 | 1245 || Next»

てんぷれーとはすける

テンプレートは透ける.変換したらこーなった.

閑話休題.

理論の実証のために,いくつものデータ型に対して同じようなクラスやインスタンスやゴニョゴニョを沢山書く必要があった.が,それらはデータ型の定義さえ手に入れば機械的に作れるものなので,二個目の型に取りかかったあたりで面倒&馬鹿らしくなってきた.

ということで,定義を生成するプログラムを Template Haskell を使って書きだしたのだけど…… こっちはこっちでめんどくさい.わかりやすいドキュメントがあるのか無いのか.つか,データ型を渡して型クラスとかインスタンスとかを生成させるという使い方(つまりは deriving のようなことをさせるの)は正しいのかどうかよく分からん.

とりあえず別の手法にいったほうが良いかも知れないなぁ.

CYKなのかCKYなのか忘れる

Wikipedia に
The Cocke–Younger–Kasami (CYK) algorithm (alternatively called CKY)
とか書かれているからどっちでもいいのだろうか?

とりあえず CMYK と同じ順番でいいのね.

どうでもいいけど Haskell で書くとメンドイ.

7x7x7のキューブを1時間で直す

センターキューブのキャップが外れて正しい位置が分からなくなったので,バラして組み直した.かなりシステマティックな構造をしているので組み上げも比較的簡単.最後にハメるパーツをどれにするかで難易度が変わりそうだけど,センターから桂馬飛びの位置にあるヤツが楽かもしれない.全体を歪ませてから穴に向けて押し込むと結構簡単にはまってくれる.

多次元配列とポインタのポインタと

時々「配列とポインタは同一視出来る」という説明を聞くのだけど,これって良い説明なのか悪い説明なのかよく分からない.特に,多次元の配列の解説と同時にこの説明があるのはどうなのかなぁとか疑問に思う.1次元の配列を扱う範囲に置いては特に文句はないのだけど.

多次元配列の解説においては,「多次元配列=ポインタのポインタ」という説明になる.仮に float c[10][20] という配列と float **d というポインタがあった場合,この説明では c = d とした以降は c と d がプログラム中で同一に扱えることになる.が,実際には c と d はインクリメントとかデリファレンスの挙動とかが違い,同一視すると痛い目を見る.正しくは,c は 20要素の float 配列のポインタ(float (*)[20]と書くのか?)と同一視出来る程度であって float ** とは別物と.

ということで,下のプログラムを動かすと c と d が別物だとよく分かる.c と e は同じ挙動.

main(){
  float c[10][20], **d, (*e)[20];
  d = c;
  e = c;
  printf("%p %p %p\n", c, d, e);
  printf("%p %p %p\n", c+1, d+1, e+1);
  printf("%d %d %d\n", c == *c, d==*d, e==*e);
}

結果は以下の通り.

0x7fff7bca9320 0x7fff7bca9320 0x7fff7bca9320
0x7fff7bca9370 0x7fff7bca9328 0x7fff7bca9370
1 0 1

なんでFAXなんだか

ホテルの予約を FAX で申し込みしなければならないとか面倒すぎる.なぜにインターネットで処理できないのか?

というか,送信だけならいいけど「予約の結果を送るから受信できるようにしておいてね」とか面倒すぎる.

ねぎ しょうが にんにく にんじん たまねぎ とりにく

シチューがうめぇ.

突然食べたくなったので生姜と大蒜と葱のクリームシチューを作った.風邪予防とも言う.ここんとこ寒かったり夜明け前に長距離バイクで走ったり標高の高いところに行ったりカメラ構えてじっとしてたりしたので.

さらに粗挽き黒胡椒を振ると能力アップ!

«Prev || 1 | 2 | 3 |...| 915 | 916 | 917 |...| 1243 | 1244 | 1245 || Next»
Search
Feeds

Page Top