週記 2022/06/27~2022/07/03

2022/06/27

16時ごろに起きる。

茄子を焼いて焼肉のたれにぶち込んだものを食べる。うまい

冷蔵庫に放置しているさけるチーズを食べようかと思い、冷蔵庫から出したけど結局食べなかった...。賞味期限が思ったより長くて、9月の中盤までいけるらしい。

昨日美術館で買ったポンペイ展のグッズを開封する。炭化したパンと猛犬がお気に入り。

妖怪PCいじいじ。最近PCを使っていると、タスクマネージャーに出ない何かが残り5%位になるまでメモリを食い潰している事がある。ストレージも食い潰していて、「ストレージがヤバい!」という通知がどんどん出てくる…。

原因不明なのが気持ち悪くて、ウイルス的なアレにしては派手だし、メモリリークとかだとしたらタスクマネージャーに出るだろうし(ほんと?)…。

2022/06/28

12時ごろに起きる。

某所に出かけるための準備をする。いつもより余裕もって準備を終わらせることができたので、調子に乗ってソファでゴロゴロしながらYouTubeを観ていたら遅れそうな時間に...。YouTubeを観ていたiPadのカレンダーアプリも「今すぐ出ろ!」と怒っているので、急いで出発した。

遅刻すれすれのペースなので、気持ち早歩き(走れ!)で駅に向かったものの、列車は目の前で出発してしまった...。駅に列車が入ってくると、駅への道にかかっている踏切が閉まってしまうので、駅自体に入れず乗り遅れる...というのを何回もしている。つらい

用事を済ませて電車で帰る時も、ホームに上がった瞬間にドアが閉まって発車してしまった。歩く速度を速くしたらいいのかしら...。

家に帰って妖怪PCいじいじ。AtCoderProblemsにPRが来ていたので読む。「正規表現を何回もコンパイルしているのを一回だけにしたぜ!」という内容で、いい感じ。ただ、lazy_staticを使っているのが気になったのでonce_cellを使ってみない?と提案してみた。

2022/06/29

10時ごろに起きる。

登校マン。昨日と同じく準備が早めに済んで調子に乗っていたら、電車が目の前で出発するのを2日連続でやってしまった。どうして…。

気晴らしにファミチキを買おうと思ったけど、どうせ明日も出かけるし明日でいいやという気持ちに。健康的な生活

しばらく放置していたBrainfuckの処理系をいじる。ノリで書いた変な最適化コードを消して、まずはシンプルな構成にダイエットさせたい気持ち。一旦はBrainfuck→ゴニョゴニョ→WebAssemblyという感じを目標にしたいわね。

Wasmer(WebAssemblyのランタイム)にLLVMを使うフラグがあるのだけど、llvm-sysのゴタゴタでビルドができない(それはそう)。実行速度の面ではLLVMが一番優秀らしいけど、そんなに変わるものなのかね。

2022/06/30

10時ごろに起きる。

登校マン2日目。昨日とは違い、比較的余裕をもって行くことができた。普通に授業を受けて、さて次の授業は…と教室に行ってみるものの、鍵がかかっていて誰もいない。なんなら担当教員が呑気に廊下をうろうろしている。

不審に思い、時間割を確認してみると自分が授業の日付けを間違えていたことが判明、出ようとしていた授業が今期最後の授業で、これに出席しないと最低出席回数を達成できないぞ!!!!!つまり単位を落としたのだが、授業の日付けを間違えるという何ともしょうもない理由で...。

ICOCAにチャージしようと思ったけど、千円札が無い…。ちょっと前にゲームを買いに行ってから入れっぱなしの一万円札があったので、一万円をチャージした。大富豪〜

帰り際に昨日我慢したファミリーマートに寄る。今回はファミチキと、"トルティーヤ ハム&とろ~り3種チーズ"を購入。以前に同じシリーズのマルゲリータを購入して、それが良かったのでまた別のものを買ってみた。ハムとチーズを合わせるとうまいという事は古事記にも書いてある(うまかった)。

2022/07/01

10時ごろに起きる。

寝た時間や起きた時間は昨日と大きく変わらないけど、寝起きが非常に悪かった。ぬぬぬ

今日も外出。忙しい…

最近一気に暑くなったと感じているけど、これはさすがに...。急な暑さからか、近頃腹具合が悪い。今日はより悪くて、出先にて40分ほどの滞在の間2回腹痛に襲われてトイレにこもる事に…。今思えば、普通に体調を崩していたような気がするな

この時点では体調が怪しい事に気付いておらず、調子に乗って昼食にラーメン屋へ行く。「学生なら無料で大盛りにしますよ!」と言われたけど、普通盛りの量をまだ知らない店だし、食べ切れる自信も無いので断った(大盛りを頼んでおいて残したらめっちゃダサいからな!)。

8割くらい食べたところで、なんか胃の調子が妙な事に気がつく。急に胃もたれのような感覚に襲われて、箸が止まってしまった。しばらく水を飲んだりしてなんとか食べきったけど、店員の提案を受け入れて大盛りにしていたら大変だった…。

ラーメン屋では胃の調子だけがが怪しいと思っていたけど、家に帰ってみるとなんだか全体的に不調な感じがする。やね

Brainfuckの処理系をいじる。BrainfuckをWebAssembly(wat)に直訳するコードがあるのだけど、このコードがうんこ💩すぎたので書き直したりした。今後WebAssembly(binary)で出力するのも実装したいので、新しい中間表現2を生やして、それを通してから変換するようにした。

2022/07/02

17時ごろに起きる。急に遅くなる

この時間にしっかりとした食事をとるのもアレなので、フルグラをちょっと食べる。最近牛乳の摂取量が少ないので、増やしていきたいわね。

AtCoder Beginner Contest 258に出る。結果はABCDの4完(2ペナ)で、順位は10153人中2032位。パフォーマンスは1144で、レーティングが811から849になった。

茶に落ちそうな感じだったけど、なんとか緑を維持できている(慢心)。

A問題

60で余りをとってゼロ埋め。Pythonだとstr.zfill()が便利。

B問題

全探索をする。ちょっといかつい見た目しているけど、実装はそんなに複雑ではない。

C問題

「先頭を取って、後ろに突っ込む」という操作はQueueを使うのが素直だけど、今回は制約上それはできない。そういう事をしないで、いい感じに処理する賢い解法があるんだろうな~と思い、文字列の操作を観察してみる。

当然っちゃ当然だけど、操作をすると反転した状態で後ろに文字が溜まっていく...。しばらく考えていると、インデックスをいい感じに計算して実際の文字列は変更しないというのを思いついた。

なんとなく実験で

offset = 0

for query in queries:
    type_, x = query

    if type_ == 1:
        offset += x
        offset %= n
    else:
        print(s[x - offset - 1])

というコードを書いてみると、サンプルが通ったので思い切って提出してみたらAC。マイナスのインデックス便利ね

atcoder.jp

D問題

一瞬DPか?と思ったけど、よく考えたら貪欲でよかった(前に似たような問題があったような気がするけど、思い出せない)。

ステージiまでクリアして、その後はステージiをひたすらやる...というのを各iごとにやって、かかる時間の最小値を出力する。

atcoder.jp

2022/07/03

12時ごろに起きる。

授業を受けに行くぞ行くぞ。この前大富豪(ICOCAに1万円をチャージ)をしたので、交通費の心配はいらないぜ!

帰る途中、選挙掲示板を発見したので候補者のポスターを眺めてみる。現職の知事のポスターを発見したけど、なんかすげえ汗かいてる写真だな…と思っていたら、ただ雨で濡れているだけだった。汗かいてそうな写真と天気が絶妙に合致してしまい…

Brainfuckの処理系をいじる。効率的なWebAssemblyのコードを出力しようという事で、今日は命令の合体を実装した。「複雑な最適化はWasmのランタイムがやってくれるやろ!w」という気持ちで、ちょっとしたループを消すくらいの最適化はしたいけど、それ以上はしないつもり。

これだけで若干速くなったけど、まあ無視できるくらいかな…(WebAssemblyランタイム側の最適化を無効にすると体感できるくらいの差が出る)

WasmerのLLVMバックエンドを使いたいけど、Windowsだとビルドが面倒くさそうで手をつけられないでいる。llvm-sysやらなんやら(二回目)

Rust 1.62.0が安定化されたそうな。bool.then_some()と、enumへの#[derive(default)]の安定化が主な感じかしら。ほかにもいろいろな更新があるけど、自分がいじっている範囲ではそんなに変わらない感じね。どんどん便利になる~