bouzuya.hatenablog.com

ぼうずやのにっき

AGC043 A / bouzuya/rust-memo / 『 FACTFULNESS 』

AGC043 A 考察

AGC043 A - Range Flip Find Route

解説 AC 。もうすこし考えれば解けそうだったけど考えるのが面倒になってしまったよ……。

縦か横に連続している場合は反転が 1 回で済むので連続する # は 1 回の反転になることは分かった。適当に書いたら間違えて 2^100 にしてしまい TLE 。 . -> # のときだけ数を数えるようにしていたので WA 。向きを考慮してみたけど WA 。ここで諦めた。

解説によると . -> ## -> . の回数を 2 で割れば良い。縦横についても経路上に存在する入れ替わりの個数を数えれば良いだけとのこと。

https://atcoder.jp/contests/agc043/submissions/15756378


bouzuya/rust-memo をつくっている。これはメモ書き用の Wiki っぽい何かだ。作業中。 new / edit / server のサブコマンドを途中までつくっている。

大きな目的は Rust で何かをつくる練習がしたい。このアプリケーションの目的は複数の Markdown ファイルをつなげる方法とその Viewer を提供すること。

利用状況としては本を読むときなどのちょっとした単位のメモを取るとき。 1 つのディレクトリを作ってそこに複数の断片的かつ繋がりのあるメモファイルを置くようなことをする状況。それらのメモの繋がりを見るための Viewer がほしい。

いまのところの方針は ↓。不都合が出てくれば変わるかもしれない。

  • RDBMS を使わずにファイルシステムをデータベースとして扱う
  • 直接それらのデータファイルを編集されることを許容する
  • 1 ディレクトリ 1 階層のみを対象として扱う
  • 可能な限りメタデータを持たず・データファイルから再構築できるようにする
  • Viewer ( HTTP サーバー / CLI ) を提供する
  • Editor を提供しない
  • ファイルの操作を補助する CLI を提供する
  • 基本は作成のみ・更新なしにする 更新時は複製して以前のバージョンを obsoleted として指し示す
  • ファイル名を timestamp にする
  • ファイル形式を Markdown にする
  • 1 行目の # ... をタイトルとして扱う
  • 末尾の ## Obsoletes\n - ... を obsoleted 対象のマーカーとして扱う
  • ページの permalink/pages/{timestamp} にする
  • タイトル別のページを /titles/{title} にする
  • タイトルの一覧や obsoleted を除外したものを検索できるようにする

『 FACTFULNESS 』を読んだ。想像とはすこし違っていた。データ・数値を重視すべきということを訴えるようなものかと思っていた。その側面はあるけれどどちらかというと『ファスト & スロー』 (2019-04-10, 2019-04-12) や『お金と感情と意思決定の白熱教室』 (2019-02-25) などで見たような認知の歪みやこう行動してしまいがちという例を挙げている面が強かったように感じた。ぼくがきちんと読めていないだけかもしれないけどときどき矛盾していることが書いてあるような気がした。