Repo
kjana00@gmail.com
2010-11-11 01:24:20
今朝はくもり。朝ごはんはパンとソーセージとゆでたまごとサラダ。またすぐ晴れてくるものかと思ったら、今日はどうもそのまま天気が悪い日みたい。何でそうわけのわからない意地を張って立ち止まるかなと混んでる電車で高校生を避けたりしつつ仕事場へ。
昨日帰る途中で間違いに気付いてた辺りを直して typedef された構造体の名前がちゃんと出るようにするだとか、多次元配列の出力だけ間違えてたんで直すとかして、とりあえず意図した通りのものがパーズ出来てるのを確認。それで最終的に欲しい形式そのものは面倒臭いから、読み込んだらコピー出来る形にしようとあれこれ。.xls ファイルに入力するからとりあえず CSV にしておけばコピーは楽だよねっていう程度の話。
ポインタは uint32_t に見せかけとかばいいかとか、配列の要素の型を引っ張り出すのにどうしようかとかでしばらく。typedef と型を同じクラスで扱ってると面倒臭いからやっぱり分離して typedef は参照してる型にメソッドを移譲するようにしてみたり、そうしたら同じハッシュに入れてたのが面倒臭いことになったんで分離したり。
スカラー型はこんなもんでいいとして、配列をどうしようかとちょっと悩む。作るファイルが配列の各要素を個別に並べなきゃならない。で、配列は多次元。各次元の要素数の配列を作って、index = Array.new(dim.size, 0) なんてして index を作ってみて、さてこれを全域に渡って舐めるにはどうしたらいいだろうっていう。まあ各桁の最大値が違うっていうのを除けば n 進数のインクリメントっていうのと変わらないなっていうことでこんな感じでごまかした:
def inc(index, dim) index[-1] += 1 (index.size-1).downto(0) do |n| if index[n] >= dim[n] throw :finish if n < 1 index[n] = 0 index[n-1] += 1 end end end
def each_array_index dim = [3, 2, 5] index = Array.new(dim.size, 0) catch :finish do loop do yield(index) inc(index, dim) end end end
each_array_index do |i| p i end
何かもうちょっとやりようがありそうな気はするけど、まああんまり突っ込んでもしょうがないし。これでスカラーの配列まではどうにかなったかなっていうところで今日は終わりにしておく。帰る途中で出力をちょっと間違えてたなっていうのに気付いたりしたけど。
帰って晩ごはんに鴨の水炊き。鴨だからってちょっとだしを考え過ぎたかも。みりんは入れなくても良かったかな。そんなに悪くはなかったとはいえ。雑炊にしたら卵が無くなるねと思ってたら、そもそも今朝使い切ってたっていう寝惚けた事態。卵が無いと雑炊っていうより猫まんまっぽくなるのだよね。
後は遊び。粘って勝ちを拾ったのはいいけど、軽い気持でログルス使いに挑んだらさくっと死んだのは想定外……