週記 2022/08/08〜2022/08/14

2022/08/08

16時ごろに起きる。

先週分の日記を書いて公開する。最近活動が鈍くて内容が薄くなりつつあるな…生活の密度が低い…

ファミリーマートの増量キャンペーンの詳細を調べてみると、スパイシーチキンの増量は明日かららしい。先に増量が始まったクリスピーチキンは既に売り切れているという噂を聞いたけど、初日なら入手できるかも。

スプラトゥーン3 Direct楽しみ〜

2022/08/09

14時ごろに起きる。

ファミリーマートへ諸々を買いに行ったりと外をうろつく。途中でセブンイレブンに寄ってみると、瀬戸弘司が動画にしていたアイスを発見。チョコ沢ゴリ蔵を入手できないまま終わってしまったので、これは入手したいわね。ただ、外が暑い上に後にも用事があったので今回は見送り…

youtu.be

ファミリーマートで増量中のコロッケとスパイシーチキンを入手!思ったより大きくてボリュームがある。スパイシー辛れ〜〜。ついでに買った焼き鳥と家にある米で夕食になった。素晴らしい

英文型なんもわからんマン。なんだよS+V+O+Cって…文法もなんもわからん。恐ろしい言語だ

2022/08/10

9時ごろに起きる。耳の中をハエが動き回ったり、至近距離でハエの羽の音を聴く夢を見て目が覚めた。最悪すぎる。なんだか耳に何か入っていたような感覚もするし、もしかして本当に入っていた?こわいこわい

スプラトゥーン3 Dorectを観る。色々とすごくてすごい(語彙力)バトルのシステムが結構変わりそうなのと、プレイヤーがカスタマイズできる部分がかなり増えた感じ?フレンドのバトルに"乱入"できるシステムを説明している場面で、乱入!を選択した後に「乱入しています...」というメッセージが出ていて笑ってしまった。温度差

最近いじっているBrainfuckをWebAssembly(Wasm)へコンパイルするやつと、Clang(LLVM)が出力するWasmを比べてみる。一旦C言語(Wasm同様の最適化が行われている)に変換してからClangでコンパイルを行った。Brainfuckベンチマークではお馴染みのマンデルブロ集合を描画するやつを双方でコンパイルして、実行速度や出力されたWasmを見比べてみる。

結果は、自前コンパイラが出力したWasmは1080ms程度で、Clangが出力したWasmは660ms前後という結果になった。LLVMつえ〜…

LLVMを超えるつもりで作ってはいないので、遅いのは当然だと思うけど、こんなに差がつくのはすごいわね…

2022/08/11

16時頃に起きる。今日はハエの夢を見なくて気持ちがいい

適当にパンを食べて活動を開始。記事にキャラメルが練り込まれているらしい(罪)

友人氏からSplatoonの誘い。前作以来にプロモデラー(銅)を使用してみたけど、なかなか良いわね。メインの射程が短いのをクイックボムで補う感じ。+5億点

なんだかんだでSplatoon2からのスペシャルウェポンを使えていなかったので、色々と試してみたい。ナイスダマを投げるのがたのしい(もうSplatoon3が出るが?)

英語なにもわからない。sはいつ付くの...所有格やら時制やら...何がわからないのかわからない状態になっている気がする。たった26文字でやりくりするのは無理があるんだよなあ...(日本語並感)

2022/08/12

10時ごろに起きる。

アイスを買いにコンビニへ行ったものの、目当てのものは全て売り切れていて買えなかった…。代わりに増量中のスパイシーチキンを買って帰り昼食にした。

"健康"だった時の事を思い出そうとしてみる。朝6時台に起きて、0655を観て…今とはかけ離れた生活だな…そこまでは行かなくても、昼を取り戻せるように頑張りたい

Brainfuckを*をいじる。AST的な中間表現が2種類(インタプリタを作っていた時のやつと、Wasmに変換するものを作った時のやつ。後者の方が新しい)あってややこしいので、片方を削除して1つに統一した。元々雑な設計で作っていたので結構な大工事になるかと思ったけど、そんなに大変ではなかった。

今日から試験に合わせて少しずつ就寝(起床)時間を早めようと思ったり思わなかったりしてい

2022/08/13

14時ごろに起きる。

PostgreSQLでUUIDを扱うとどんな感じになるのか気になったので、AtCoderProblemsをいじる(UUIDをPostgreSQLにぶち込む処理がある)。 現時点のコードではUUIDを文字列として格納するようになっているので、データベースのスキーマを文字列からUUIDに変えて、テストが通るようにするのを一旦の目標にしてみる。

AtCoderProblemsはDockerの中でビルドやらテストやらを行えるようになっていて便利。いじる前に一旦テストを動かしてなんとなく安心しようと思ったけど、Cargoがエラー(依存関係が変だぞ!的な)を吐いてビルドが失敗してしまい不安に…。Docker内の環境でビルドに失敗したので、ローカル環境でも試してみるとちゃんとビルドが行われる…。Docker内のCargoはちょっと古いので、最新のものを使うようにしてみるとビルドが通るようになった。うーん?

どのバージョンからビルドが通るのか気になるので、最初にビルドに失敗したバージョン(1.57)から一つづつバージョンを上げて調べよう思い立つ。結構時間かかるぞ〜と思っていたけど、次のバージョン(Cargo 1.58)であっさりビルドできてしまった。CargoのCHANGELOGを確認してみると、ビルドが失敗する原因になるバグを修正したという旨の記載を発見。思ったよりすぐ調査が終わってしまった…。原因がわかったので、Docker内で使うCargoを更新するパッチを後日投げようと思う

PostgreSQLにUUIDをぶち込もう計画は、AtCoderProblemsのテストが通るまではできたけど、前述の問題に気が行って興味が失せてしまった…

freee プログラミングコンテスト2022(AtCoder Beginner Contest 264)に出る。結果はABCDEの5完(2ペナ)で、8422人中1221位だった。パフォーマンスは1369で、レーティングは843から908になった。900台は今年3月以来らしい

A問題

スライス便利~

print("atcoder"[l - 1:r])

atcoder.jp

B問題

がんばってマス目を生成するコードを書いたけど、多分ハードコードした方が早かった。

atcoder.jp

C問題

削除する行、列をBit全探索するコードを提出して2TLE。考えてみれば、削除する行列の個数は入力から簡単に求められるのでそれを実装してAC

atcoder.jp

D問題

先頭へ順番にa,t,c,…を持ってくるような操作をする。後から気がついたけど、この操作はバブルソートそのものね

atcoder.jp

E問題

送電網の状態をUnionFindで持って、クエリを逆に処理していく。発電所はあらかじめ全て繋げてしまうと楽(どの発電所に繋がっているかは関係ないので)。

コメントを書きながら実装すると書きやすいな。途中で何を書いていたかわからなくなる事があるけど、コメントがあると自分がどこに居るのかわかりやすい。

実行時間が結構ギリギリでヒヤリ

atcoder.jp

2022/08/14

14時ごろに起きる。

昨日発覚した問題が起こらないようにするPRをAtCoderProblemsに投げる。Rustを更新しただけ。

github.com

前に書いていた画像の知覚ハッシュを検索するやつをいじる。並列処理やらの処理を雑に書いてしまい、結局遅くなっていたので元のシングルスレッドな処理に書き換えた。ついでにコードの整理を行ったり、収集するデータを変えたりしてより高速にしたりといろいろ。まずはシンプルな構成に書き直したいわね。

データ構造大事だなという気持ちに。競プロでもたまにやるけど、その他プログラミングでもこんな感じで効いてくるのか〜という体験ができた