風邪で調子でない。がんばりすぎないようにする。
コンパイラの本を借りた。風邪気味で調子でないけど、ちょっとでいいので。でも、体調管理も精進のうち。
- step1はすでに今まで学んできたことだったのでサクサク進んだ。とりあえず最後まで走りきってみる。https://github.com/tMasaaa/compiler-book-learn
昨日は前半良くて後半失速した。今日は失速しないように頑張る
- Cでプログラムを書く必要があるので、優先的にやっておいて悪くないなと思った。
- mallocとCコンパイラ自作して、あとは適当なインタプリタでも作るかと思うけど、無理そう。
- https://gist.github.com/pn11/c973af16d91f92f9874f これを参考にtmuxでcopy pasteできるようにする→無理だった。xselはXServerを必要とするので、Xが起動していないとダメ。prefix+zで拡大、縮小ができるのでそれで選択する。
ssh -T git@github.com
が通った。ヨシ。- 次は3章から。結構がんばったほうだ。やったことは https://github.com/tMasaaa/linux-c-learn にあげてある
毎日、朝にこのメモを開くことにしてみる
- dfsの参考になるもの https://atcoder.jp/contests/abc126/submissions/5801152
- たぶん、dfsは内部バリエーションが激しいのでその場に応じて書き直すようになると思う
- field https://github.com/tMasaaa/ant-book-rust/blob/master/c2-1/p7/main.rs#L53-L86
- これまで解いた問題のファイルの内容から、特定の文字列を抜き出す
find . -type f -print | xargs grep ""
広義今日が多いな
- 共通範囲をとればよい。切り上げに注意。
- ライブラリ整備した。二分探索は配列に対し行うことが多いが、
start..end
がでかいと配列をとってしまうとMLEする。素直にlow, highに対し素朴に二分探索を行えばよい。このとき、 closureの参照を渡すとうまく行った。 lowとhighを指定する実装 - クロージャを引数に取るが参考になった。
広義今日なので
- dpとかで、vig内グローバルに配列を置いてそれを参照することは可能か?→難しい。よく分からない状態で初期化するのは
static mut
になってunsafeへの道。解決策としては、structでpubにしておいて外部からアクセスできるようにする。その状態でstruct初期化を行い、それに応じた関数をself
で呼び出す。もっといいやり方がありそう。 - あと、配列はプリミティブで所有権とかあまり気にしなくてよいので、Vecより配列を積極的に使っていく。(一度にとるときに向いてそう、要素が動的に追加される場合はVecがいいかも)
mod vig {
pub struct A {
- p25 くじ引きHard
-
$$N^2 logN$$ の解法を理解した(未実装) - binary_searchの実装 https://github.com/tMasaaa/ant-book-rust/blob/master/library/binary_search/main.rs
抽象的なので書いてから文献読んでまた書き直したい
目的: C++を使う競プロで競技中になるべくコマンドラインを触らないようにして楽をするためのMake入門
makeとは
- makeはコンパイル自動化ツールである。(依存関係を含む複雑なコンパイルや、別々の環境用にコンパイル方法を指定したいときに使う)
- makeはUNIX標準ツールとして用意されている。今回はGNU Makeを扱う。
- 困ったときは、 https://www.gnu.org/software/make/manual/ を見ればOK。