6/21 OSわからん
『OS自作入門』をやっているのだけれど, 各回でのコードの差分を追うのが結構しんどい. こういうのは思考停止で写経したいタイプなので, 前回までの自分で書いたコードと配布されているコードを見比べながら書き足している. 毎度忘れてしまうので, その時のシェルコマンドをメモ.
- 配布されているファイルをリネーム
find ./ -type f | grep '\(\.c\|\.h\|\.nas\)' | xargs -n1 -Ifname mv fname fname.old - 前回のディレクトリからファイルをコピー
find 前回のディレクトリ -type f | grep '\(\.c\|\.h\|\.nas\)' | xargs -n1 -Ifname cp fname ./ -
今いるディレクトリからリネームしていたファイルを削除
find ./ -type f | grep '\.old' | xargs -n1 rm
find, grep, xargsだけでファイルに対して一括で操作ができるのでとても便利. 特にxargsの-Iは覚えておくと表現できるもの増えるのでオススメ.
ちなみに本編の進捗自体はまだ7日目なのでアレ. 慣れない単語が多すぎるので少しづつメモをとっている. 自分で整理しながら勉強するなんてかなり久しぶり.
AOJ-ICPC
- みさわさんの根付き木 | Aizu Online Judge
構文解析してツリーを取り出して、取り出したツリーを合成して、それをまた文字列表現に直すのが少し面倒. -
You Are the Judge | Aizu Online Judge
正答数の降順, ペナルティの昇順, チームIDの昇順でソート. std::pairは便利だなぁ. -
夏合宿の朝は早い | Aizu Online Judge
強連結成分分解して, 各人が他の人からモーニグコールされるかどうかを調べる. 連結成分毎に,
(1) 参照されていない人がある場合はその人たちが全員起きればOKなので, それらすべてが起きられる確率をかけ合わせる.
(2) 全要素が参照されている時は閉路になっている(?)ので誰か一人が起きていればOK, つまり(1 - 全員が寝坊する確率)をかけ合わせる.
ちなみに, 強連結成分分解にUnion Findを使うのって一般的なんでしょうか?
あと、DBスペ受かりました.
ガッキー結婚してくれ〜(DBスペシャリスト受かりました) pic.twitter.com/vkBOyLIBMk
— 加藤真也 (@0x19f) 2017年6月21日
OSAの中間、解答と書いたこと全然違ったわ. ウケる(真顔).