週記 2023/07/17~2023/07/23

2023/07/17

17時ごろに起きる。

妖怪PCいじいじ。多倍長整数を作りたいぜ!とりあえず足し算と引き算が書けた。AOJに多倍長整数の問題があるらしい?ので、出入力を実装して明日投げてみよう…と思ったけど、もしかして掛け算と割り算の余りを実装しないと無理?きちい

2023/07/18

眠れず。

リビングを管轄するエアコンの調子が悪い!試しに冷房22℃に設定してみても扇風機よりちょっといい位の風しか出ない。この季節にこれはまずい

フィルターの掃除をしたら若干マシになったが、それでも冷却能力はかなり低い。

外出マン。こんな気温で正直出たくないのだが、予定があるのでしょうがない...。

おやつとしてトッポを持って行った。チョコが溶けてただの筒になっていたらどうしようと思ったけど、中が少し溶けた程度で済んでいた。すげ~

JOIの過去問を解く。とりあえず比較的簡単な問題から解こうという事で、二次予選の簡単そうな問題を解いていた。外でスマホコーディングをしていると若干気分が悪くなってきたため、途中で切り上げてそそくさと帰った。

家に帰って昼寝をする。3時間くらい寝ようかしら~と思って寝たら完全な深夜になってしまいたまげた。

2023/07/19

10時ごろに起きる。

登校マン…になれなかった。ギリギリで電車に乗り遅れてしまい、授業の出席に失敗した。これを埋め合わせるためにかなり強めの午前登校が発生してしまった。ひ〜〜〜

駅まで走ったので疲れた。

2023/07/20

14時ごろに起きる。

登校マン。昨日の登校失敗とは関係ない用事。

妖怪PCいじいじ。多倍長整数を書く。10進法の文字列をパースする時、10掛けて1桁足す…という当たり前っちゃ当たり前の処理をしていたが、これでは掛け算が多くて遅い。AOJの多倍長整数の問題では最大10万桁の整数が二つ与えられるのだが、手元で試してみると2秒近くかかり制限時間に間に合わない。

Rust JPのZulipで競プロの異常高速化の一環として、10進法の文字列をビット演算でパースする方法についての資料が流れてきたので、これを実装してみた。128bit整数を使って、16桁足して、10000000000000000掛ける…という処理に改められた。これで大体1.7秒になった。遅い!

実行ファイルをプロファイラーに突っ込んでみると、掛け算がめっちゃ遅いぞ!と分かった。筆算をそのまま実装したようなアルゴリズムなので、改善の余地があるとは認識しているけど、いかんせんコードが散らかっていてつらい。まずはカラツバ法を実装したら良いのかしら?

2023/07/21

10時ごろに起きる。

外出マン。血液検査の結果を受け取りに行く。ほぼ正常値だったけど、謎に中性脂肪が若干多かった。なんでだろう

妖怪PCいじいじ。多倍長整数を書く。今の筆算ベースの掛け算が遅すぎることが分かったので、カラツバ法を書いてみることにした。とりあえず動くものは書けて、筆算ベースより早くなってご満悦。ただ、桁が多い数と桁が少ない数との掛け算はそんなに早くならなかった。

文字列から変換する過程で掛け算を何回も行うので、ここが早くなれば...という感じだったけど、劇的に早くなるとかそういう事は無かった。うーむ...。

ところでカラツバ法面白いわね。思わずその正当性を疑いそうになるけど、ちゃんと考えてみると正しい。魔法みたい。60年前(!)と数学の歴史ではかなり最近に発明されて、考案者の肖像が絵とか白黒じゃなくてちゃんとしたカラー写真で残っている。考案者は2008年に死去したらしい。

データの持ち方もちゃんと考えないといけないかもなあ。今は8bit整数を使った256進法で整数を表現しているけど、32bit整数を使った4294967296進法で表現することも原理上はできるはず。そもそも、基数を2の累乗にしていることでAOJの入力受け取りがキツくなっているんだし、いっそ基数を10の累乗にしても良い気がする。実装が大変めんどうくさそうではあるが。助けてくれ

2023/07/22

17時ごろに起きる。

ABCに出る。今回はABCDEの5完で、水パフォでRatingをhighestの1021に更新した。Python特有の事情(再帰の上限が厳しい)や、実行速度が厳しかったりして3ペナだった。ぐぬぬ

これは捕らぬ狸の皮算用だけど、JOIの本選ではC++しか使えないらしいので、もしC++が書けないといけないな~という気持ち。

2023/07/23

寝ずに、朝からそのまま琵琶湖博物館へ向かう。校外学習的なものがあり、本当は水曜日の午後に行く予定だったが、電車に乗り遅れてしまい参加できなかったため、日曜に振り替えた。こんな朝早くから活動したのは久しぶり...。

朝七時、外を歩いていると老夫婦が犬の散歩をしているのが目に入った。向かいからは虫取り網とかごを持った親子が来ている。老人がそれを見つけ、「何かとれてますか?」と聞くと、少年が「クワガタとれた!」と返した。すると老人が「クワガタ!すごいやん、おっちゃんにくれるか?」と言い、少年が「あげな~い!」両人「ガハハハ!」という会話があった。朝七時の会話まぶしすぎる。

琵琶湖博物館へは、草津駅から出ているバスに乗ることで行くことができる。大体10分くらい。到着したのが8時半くらい。まだ開館前という事もあって、そんなに人は居ない。

開館時間になり博物館の入り口に向かうと、結構な人数が入り繰りの前で待機していた。日曜日なのもあり、家族で来ているのが多かったように見えた。

常設展を見るのだけど、これが結構な分量があり一日では見切れなかった。しっかり見ようとしたら3日以上はかかると思う。特別展もやっていたが、バスの時間が迫っていたのでちょっと眺める程度でしか見れなかった。ちゃんと見たい...

博物館から草津駅に戻って腹ごしらえ。何かよさげなものが食べられる場所はないか~~???と、街の中をうろうろしようと思っていたけど、あまりにも暑かったので駅最寄りのマクドナルドに行った。照り焼きチキンフィレオを食べたかったのに、うっかり普通のチキンフィレオを注文してしまった。まあうまかったのでヨシ

帰る帰る帰る。草津駅にはいろいろな列車がひっきりなしにやってくる。貨物列車が意外と多い。自分が乗っている電車が同じ方向に向かう列車を追い抜いたり追い抜かれたりするのは複々線の醍醐味ね。しかも便利なんだからお得。

流石に眠い。家に帰ってすぐ就寝。起きると午前4時になっていた。なかなか...