/ 最近 .rdf 追記 設定 本棚

脳log[2023-06-20~]



2023年06月20日 (火) [AtCoder] 先週の ARC162-C「Mex Game on Tree」(ぎりぎり青 diff)。当日は 40 分くらい時間が残っていたけど解けなかった。MEX が K 未満でも K より大きくてもダメなんだよなー、部分木での攻防がより大きな部分木での勝敗に影響したりするかなーとか考えていた。■提出 #42772931 (AC / 345 Byte / 196 ms)。ネタバレをね、読みました。「CはAliceが高々1手操作して勝てないならBobが勝つ。Aliceが操作した場所に応じてBobが適切な頂点にKを置くと、せっかく操作した分が台無しになって、1手操作しても勝てない状態が延々続くからだ。」 これがすべて「Bob が…… K を置くと」。でもそれが見えなかったのだし、実装も 13 行目の k-sk<=v を最初は k-sk==v と間違えていたので何も言えない。難しい問題だった。


2023年06月19日 (月) [AtCoder] 精進。ABC236-G「Good Vertices」(ぎりぎり橙 diff。この色は前2問の EF ががっつり青 diff だった影響が大いにあると思う)。5日前(20230614)に解いた問題の類題だとのツイートを読んだ>「サーバル「実は「行列の掛け算っぽい計算」さえできれば行列累乗できるから、数え上げ以外の問題でも行列累乗を使うことはあるけど、こっちはかなり難しいね。ABC236Gが例題だよ」 https://t.co/8OvqVZpuLz」。100×100 の行列を 10^9 乗するので3千万の計算量。これを辺を1本1本追加しながら N^2(≦1万)回繰り返すともちろん TLE になる。どうしよう(※)。今回は場合の数を数えるのが目的ではないから、行列の中身に使用した辺が追加された時刻 t の最大値を記録すればいいと思った。(※「どうしよう」この一語にはコンテストが終了してしまうくらいの時間が詰まっている。ときどき思い出しては頭の中で転がしていた)■提出 #42752849 (TLE×52/AC×58)。今回も行列の掛け算を書き間違えたのでこの前の提出を見ながらまねして書いた。そして TLE。ローカルではほぼ9秒以内に完了しているので、ジャッジサーバーでは約半分の 4.5 秒かかる見込み。制限時間は特に長めではない2秒。Ruby でうん千万のオーダーは厳しいよう。■提出 #42753403 (AC / 1995 ms)。.zip().filter_map{}.min.zip(){} での逐次処理に書き換えたらローカルで5秒になったので提出したら AC だった。案外いけるもんだ。


2023年06月17日 (土) [AtCoder] 今日はトヨタ自動車プログラミングコンテスト2023#3(AtCoder Beginner Contest 306)があったけどジャッジが詰まりまくっていて Unrated になった。「このコンテストは full-feedback 形式のコンテストです」が嘘だったからかな。終了後 20 分経つ現在でも時間内に提出した F 問題が WJ のまま止まっていて生殺しの状態なのだ。今日は既視感のある問題ばかりで 36 分で E 問題まで通ったのだけど、そこから1時間ちかく誤読した F 問題を考え続けていた。■F 問題「Merge Sets」。方針はすぐに立った(この方針が正しいかどうかはまだ不明)。集合を全部まぜまぜしてソートして、ある要素の後ろに何個の要素があるかを二分探索で調べる。つまり、ある要素が他のいくつの要素の添字を押し上げる効果を持っているかを計る方針。ところでね、f(A,B) の計算において A と B は可換ではない。そして求める総和というのは i<j であるすべての f(Si,Sj)。だけどずーーーーっと i<j を区別しない f(Si,Sj) について考えていた。最後に割る2すればいいんじゃないのって考えていた。■制約について1つ気になって確認したことがある。A∩B が空集合だとは書いてあるけど、つまり A と B に共通する要素がないとは書いてあるけど、A の中、B の中に限ったときに共通する要素がないとは書いていなかったと思う(※)。だから添字を使って同値の要素に便宜的に大小関係を導入したんだけど、誤読が明らかになったときにソート列の二分探索から BIT を使う解法に変わったのでそんな面倒な手順は必要なくなっていた。提出 #42363020 (AC) に残ってるのは虫垂みたいなもの。この日記を書いてるうちに AC の結果が出ていた。もう終了から 40 分経ってるよ。ちなみに誤読なしでストレートに実装するとこれだけシンプルになる>提出 #42370906 (AC)。■コンテスト成績証。へなちょこに Unrated を嘆いたりやる気を削がれたりしている暇はないのだ。順位表の1ページ目にいる人たちなんて最初から Unrated なんだから。各色相当の実力があればなるべくしてその色になる。Unrated ばかりならその機会がないけど現状はそこまでひどくない。がっかりするのは上振れに期待しているから。毎回青パフォ以上を出せばいいだけ。建前はそう。でもそれができないのだから、調子がいいときに Unrated なのはつらい。■※「A と B に共通する要素がないとは書いてあるけど、A の中、B の中に限ったときに共通する要素がないとは書いていなかったと思う」 やっぱり書いてあったのかなあ。部分文字列の定義は連続するかどうか曖昧だけど、集合の定義は多重かどうか曖昧ではなかったりする? 反則的だとは思うけど「A={Ck1​​,Ck2​​,…,Ck∣A∣​​} となるような k1​,k2​,…,k∣A∣​ をとる」ことが曖昧でなくできることから逆説的に重複する要素がないと判断できる? ……あった! 「i1​!=i2​ または j1!=j2​ ならば Ai1​,j1​​!=Ai2​,j2​​」って書いてある! とことん読み違える問題だったなあ。


2023年06月14日 (水) [AtCoder] 精進。先週の ABC305-G「Banned Substrings」(青 diff)。終了後に4か所で行列累乗というキーワードを見ていた。でも難しい。何×何の行列を用意するのか。その中身は。■提出 #42254964 (AC / 639 Byte / 1622 ms)。まずダメ文字列を表すビット列を1文字から6文字まで DP みたいにして用意した。N が6以下ならこの時点で答えが出せる。次に6文字のダメ文字列を元にして1文字延長を表す 64×64 の行列を作った。ここまでは一歩一歩手探りしながら順調に来たけれど、サンプルの答えが全然合わなくて袋小路に入り込んでしまった。どの部分か。主として 28 行目と 29 行目にあたる部分を延々書き換えながら、なんで掛け算を繰り返すとダメ文字列が答えに現れてくるのか理解に苦しんでいた。私は、行列の掛け算を正しく書くことができません。そこは考えるとことちゃうやん? ただ定義通りに書くだけよ。■計算量。行列の掛け算は3乗なのかな。64^3≒26万。それに累乗部分が logN≒60。行列の列あたりの非ゼロの数が0か2個なので、ゼロだけの行と列がそれなりにありそうだし、疎らなのをいかした効率化もありそう。でも定数倍の改善なら競プロでは評価されないね。■対角化と Jordan 標準形のキーワードを得た! 名前だけでもうおなかいっぱいです。ネタもとは『プログラミングのための線形代数』なんだけど、今まさに読んでいる「【第5回】「型」はウェブシステム開発に「エンドゲーム」をもたらすか | GeeklyMedia(ギークリーメディア)」にタイトルが出てきてびっくりしたよ。■最大ケースが 1000000000000000000 0 なのかな。64×64 のうちダメ文字列に対応する行と列を省いたとしても M=0 のケースでは良くならない。それよりも行列のサイズを 32×32 に抑える方が良くなるだろう。32×32 で十分みたいなんだけどわかんない>#42246448。■提出 #42262239 (AC / 769 Byte / 257 ms)。32×32 で足りるというのでとりあえず 32×32 を基本にしてみてダメ文字列の行と列を省いたりもしてみたら1桁早くなった。なんで 64×64 だったり 32×32 だったり行列のサイズがまちまちになるんだろう。1文字分の冗長さはどこから生じてて、なんでお構いなしで答えが合うんだろう。参照する必要のない6文字前を使って入出力を無駄に細かく分類してもそれが理由で間違えるわけではない。なんなら7文字前8文字前まで利用してさらに細分化しても手間が増えるだけで答えが違ってくるわけではない。ということ?


2023年06月10日 (土) [AtCoder] 今日は京セラプログラミングコンテスト2023(AtCoder Beginner Contest 305)があった。A-F のふりかえり。■A 問題「Water Station」。5の倍数に切り捨て切り上げした値のうち近い方。この日記を書きながら思いついたけど (N+2)/5*5 一発で二捨三入できた。切り捨て切り上げを定型で覚えているだけで考えることをしないから無駄なことをする。……というのもちょっと違う。(A+B-1)/B(A-1)/B+1 がどうして切り上げになるのか過去に考えたことがあるから (A+2)/5 もわかる。ボーダーは動かせる。■B 問題「ABCDEFG」。もっともあほな書き方をしても 42 通りなので好きに書く。累積和を用意するときに要素数が少ないからうっかり暗算しそうになったけど、間違えるから機械にやらせた方がいい。■C 問題「Snuke the Cookie Picker」。人間はなんとなく答えが出せるけどコンピュータに出す具体的な指示は案外難しい。すべての行と列で上端下端左端右端を検出して数が多いものを採用する解答を提出してランタイムエラーを出した。最小ケースを作ってみて気が付いたんだけど、1対1で同数になるので答えが出せない。たとえば上端には最小値、下端には最大値を採用するのが正解。■D 問題「Sleep Log」。方法はいくつかあるのかな。睡眠時間の累積和に適切な座標を割り当てて二分探索ができればいいように思った。でも実装方法(座標圧縮?)が見えなかったのでもうひとつの案。累積睡眠時間を数えながら各クエリの入りと出のときに値を記録した。同時に扱う時刻が睡眠時間とクエリを合わせて3つあって、組み合わせて正しい式を得るのが難しかった。クエリの入りと出の2か所に書いて揃って間違えた。それは提出前に修正できたけどデバッグ出力の消し忘れで All WA をくらった。人間は都合良くデバッグ出力を無視してサンプルの答え合わせができるんよね……。■E 問題「Art Gallery on Graph」。これは簡単。BFS で頂点を訪問するだけ。罠があるとすれば、グラフを勝手に木だと仮定してはいけないということと、何も考えずに BFS を繰り返して値の更新が続くと O(KN) で TLE になる可能性があるということ。プライオリティキューで提出して2秒ぎりぎりで AC だったけど、BFS を(1回だけ)やりながら適時キューに警備員が立っている頂点を追加するようにするともっと余裕があった。ここでは出力形式を間違えてまた All WA をくらった。■F 問題「Dungeon Explore」。制約からもこちらに許された操作からもグラフをしらみつぶしに訪問するような探索が書ければいいとわかる。隣の頂点にしか移動できないから探索は BFS ではなく DFS。あとは E 問題と似た文面が見えることからわかるように、勝手にグラフが木だと想定しないようにだけ注意。なんでこういう注意が必要かというと、「木ではない木ではない」と唱えていないと勝手に木を想定したコードを手が書いてしまうからだ。E と F が似たようなグラフの問題でどちらも軽い問題だったから、F 問題を提出した後で F 問題を開いて解こうとして混乱したよね。■最近また落ち目だったからか解けるものを(序盤でそれなりに苦戦しながら)解いただけでレートが上がったのは微妙な気持ち。コンテスト成績証。■■■@2023-06-15 F 問題。自分の提出 #42157034 は 10 行目と 11 行目がやばく見える。10 行目は隣接頂点リスト全体を走査しているし、11 行目は隣接頂点リストがソート済みだということを無視して、頂点 N を目指しているというのに最も小さい頂点番号から順に訪れようとしている。10 行目は「DFSを非再帰に書き換えるとTLEするようになったという心霊現象」について 20221125 に書いたまずい書き換えの例と同種のミスだ。たとえば入力が頂点1を中心とするスターグラフで、頂点 N だけが頂点1から距離2の位置にあるとしよう。長さが N に近い頂点1の隣接頂点リストを N 回近くスキャンするのは O(N^2) でいかにもまずい。だけど実際には問題にならないだろうということも予想できて、当日は解答を作成しながら制約を再確認したりしていた。つまり、提出コードがどういう形で書いてあるにせよ、頂点1の隣接頂点リストを N 回近く標準入力から読み込むことは最悪の場合に避けられないのであり、それでも TLE にならないような制約が書かれていないかを確認していた。なかった。でも実際にはまずい解答でも問題が起こらないような入力だったので AC だった。まずい書き方をしたけど実際にはまずくなかったのだという話。■……でもないのかな? 日記に「(そんな制約は)なかった」と書くに際してまた問題文を読んだけど、これまで見たことがない「この問題のジャッジはアダプティブです。つまり、制約および以前の出力に矛盾しない範囲でグラフの形が変わる場合があります。」という注意点に気が付いたよ(今です!)。入力が頂点1を中心とする完全なスターグラフだったときに自分のまずい提出は(アダプティブに)救済されようもなく TLE していただろう(一番最初の入力で頂点 N への辺が示されているから)。あまりにも間抜けすぎるのでそんなうっかり提出を弾くためのケースを用意しようとは考えなかったのかな。あぶなかったね!


2023年06月09日 (金) [BOOX Max2] 6月5日の日付が入ったアップデートバージョン 3.3.2 が公開されていた。中国語(?)のリリースノートは全然読めないんだけど、気が付いた変更点が2つ。ひとつ目は前回のアップデートの問題点「Neo Reader のリフレッシュ設定はアプリを開き直すたびに無視され、(Neo Reader が定義する)スピードモードで描画がされる。しかしアプリの「設定」画面(「画面リフレッシュ」の1つ下の項目)を一度でも開くことで画面リフレッシュの設定を反映させることができる」という現象が解消して面倒な対処手順が必要なくなったこと。もうひとつは PDF の右綴じ左綴じを反映してスワイプの意味が入れ替わるようになったこと。書かなかったけど前回のアップデートでは見開き表示の時に仮想的なトップページを差し込む処理が追加されていて(すると Adobe Reader がするように表紙が単独で表示される)、もはや PDF 閲覧に関しておよそすべてのことができるのではないか。そうだ、Neo Reader の機能アイコンにテキストが添えられるようになっていた。すごく使いやすい。文字を再発明できて偉い!■■■6月8日の日付が入ったバージョンにアップデートした。簡体字のリリースノートが読めないので3日でどういう違いがあるのか知らないけど、使っていて新しい発見が2つあった。いつからそうだったのかは不明。■1つ目。ステータスバー右端のページ番号をタップすると、当たり判定が厳しくて1タップでは難しいんだけど、ページを指定してジャンプする機能へのショートカットになっている。目次を見てすぐに戻るというときにページジャンプを使うので嬉しい。■2つ目。PDF のページ送りモードが左から「単ページ」「Continuous Page」「LTR」「RTL」なんだけど、自分が使うのは専ら右端の RTL なんだけど、これが LTR になってしまう間違いが頻繁に起こる。なぜなのか当たり判定を調べた。アイコンとアイコンのあいだの空白部分には判定がない。タップしても無反応。文字と絵の幅にだけ判定がある。ところで RTL だけ特殊なところがあって、RTL ボタンの左右に狭く LTR ボタンとして働く領域が存在している。つまり RTL ボタンへの狙いが微妙に左右に逸れたときに LTR ボタンを押したことになる。大きく外して空白部分を触っても無反応なのはさっき書いた通り。わずかなミスだけを許さない罠がある。


2023年06月08日 (木) 新聞にレッツ・スタディーというコーナーがあって、要約するとこういうお題が出ていた。「あなたにとってスマホで一番重要な機能やアプリはなんですか? (200 字以内)」。国語のテストを思い出す懐かしい文面だけど、すれた大人としては問いが雑ではないのかなと、だから子供の頃に困ってたんじゃないかなと思う。どういうことか。紙面にはアイドルの模範解答も載っていて、それは字数をほぼ使い切って理由や背景となる自身の状況まで説明している申し分のないものだった。でもね、それを読んでもう一度問いを読み直したんですよ。そしたら「なんですか?」「200 字以内」と書いてある。理由の説明いりますか? どうせ字数を大きく余らせたら減点するんでしょ? これはすれた大人だからではなく素直な子供だからそうするんだけど、アプリや機能の名前を1つだけ挙げて答えにするんですよ、自分は。国語の授業ってテストのための暗黙のルールを学ぶ時間なのだろうか。そうではないことを知っている。学校の授業ではルールは暗黙のまま伏せられていた。塾に通い出して初めて点を取るためのテクニックのひとつとしてこうしたルールが明示された。ルールが明かされないゲームはクソゲーなんよ。こちとら暗黙のルールなんてものはこれっぽっちも認識できないの。というか、ルールであることを理由にしてルールに従わされることに抵抗があるから、明示されないルールに自ら進んで縛られに行くつもりがないんだ。だから気がつきにくいし、察しても不確定ならしらんぷり。


2023年06月07日 (水) 「Excel」で数値先頭のゼロが勝手に消される仕様、ようやく改善へ? Twitterで歓喜の声/「Microsoft 365 Insider」でテスト中【やじうまの杜】 https://t.co/HI35QCsS4d https://t.co/xiVNNi09em」■タイトルからははっきりしないけど、記事を読むと従来数値として読み込んでいたゼロ始まりの数字の列に対して文字列として解釈するオプションが用意されたってことらしい。■これ Twitter の声には賛同できなくて、たとえば消されて困るゼロが電話番号のものならそれは文字列として扱うべきだし、CSV/TSV のインポートでは列ごとに型が指定できるので文字列として読み込めばいい。これまでも困ってない。で、そのときにあれっと思うのが文字列型は指定できても数値型を指定できないこと。数字に対しては標準を選ぶしかない。標準っていうのはたぶん日付っぽいものは日付に対応した数値に、数字っぽいものはそのままの数に、その他のものは文字列として解釈するものだと思う。Excel に数字としての解釈を強制する(その結果先頭のゼロが削除される)方が実は難しい。■ゼロを消させないために文字列として貼り付けたあとで書式設定を標準に戻すの面倒くさかったーってコメントが見えるけど、何がしたいのか不明。記事にはゼロ埋めで桁揃えされたコード番号の例が挙がってるけど、Excel を使う人間の少なくない割合が、値としての数字と書式化されて文字列になった元数値を区別せずごっちゃにしてると思う。数値として扱いたいならゼロ埋めは画面や紙に印字するまで考える必要のない単なるお化粧なので書式設定で行う(でも専用のフォームが用意されてないみたい「「ユーザー定義」で桁数を設定しておく!」)。だけどコードなら演算に意味がない場合も多いだろうから最初から文字列でいいと思う。数字で構成された文字列なら数値に違いないっていう誤った思い込みがあるのは Excel ユーザーの方ではないかと疑っている。標準にしたい理由ってなんだ。■もし書式を文字列に設定してるにもかかわらずことあるごとに Excel が標準に変更して数字として再解釈してデータをダメにするってんなら、ご愁傷様としか言えませんが……。■■■こんなんあった。「私「CSV開こうかな」Excel「俺俺俺!!!」私「じゃあお願い」Excel「先頭の0は消しといたし、日付っぽいのも直しといた」 - Togetter」 これはわかる。関連付けで開くと型指定はできないし文字化けもしやすい。空のブックを開いてから、インポートするかデータソースとして接続するのだ。


2023年05月31日 (水) 畳み込みの視点から見たforall(every)とexists(some): 空集合に対するforallは常にtrueになる - Lambdaカクテル」■Ruby もうまく定義されている言語のひとつ。自分の日記から「ところで空配列に関して、[].all? は true を返し、[].any? は false を返す。この違いによってメソッドの選択が制限されることがあるかなと一応警戒するんだけど、特にそういう違いは生まれないみたい。むしろそうならないようにデフォルト値が選ばれている。」■読んでたらモノイドと単位元の話になった。単位元だから true になったり false になったりするのだ(知らんかった)。それはこの前やらかしたやつ。「ST クラスの内部配列のサイズを2べきに揃えるときに埋める値がよろしくなかった。ACL などまともなライブラリのセグメント木を使ったことがあれば単位元がパラメータ(の1つ)だということがわかったはずだ。」■最後に chokudai さん出てきた。「・論理的にはtrue一択。false派は論理を勉強してほしい ・論理で判断できる項目でドキュメントを参照する手間を増やすのは良くないので、状況に拠らないで欲しい ・多くの環境では「全員が論理的に考えられる」と思わない方が良いので、ドキュメントやコメントは気を使うべき https://t.co/fovw2w1bIC」「「要件による」って言ってるたくさん人いるけど、要件は、「配列のすべての要素が条件を満たすならtrueを返す」であり、ここに「空配列はfalseにする」を入れるなら「配列の全ての要素が条件を満たし、空でないならtrueを返す」という要件にするべき。空配列がtrueはこの文章なら要件に入っている。」■これが一連の発端らしい。「「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ」 このお題で「要件による」と言ってしまう、要件を定義する立場であってほしくない良くないプログラマがいっぱい炙り出されているのだ。とはいえ、もっともやべーのは「false に決まってる」と考えてしまう人間だし、実は「true に決まってる」という態度も現実では危うい。PHP みたいにときどき常識が通用しない言語があるわけなので。Ruby だってドキュメントを読むまでは理解できない罠があったりする>「Ruby クイズ (複合代入編)」。■chokudai さん「「全ての要素が条件を満たすならtrue」って要件の関数は場合はtrue一択だけど、実務上の要件はそれに合致しているとは限らないので、違うのであれば、 ・関数名を変えて要件が違うことを明確にする ・配列の外で判定する とかの処理は当然やるのよ。」っていう、元になったツイートのスコープ外までフォロー入れてるのにクソリプついてるぽくてかわいそう。有名税か。読めてないからこそクソなのであってどうしようもないね。あるいは読んだ上で語調から馬鹿にしてるとお感じになったのかしら。馬鹿だからどうしようもないね。読めない人に言葉を費やしても、煙に巻こうとしてるとかなんかめっちゃ焦ってるとかって「印象」を与えることしかできなさそうで、不毛だと思う。無視すれば無視したで「効いてる効いてる」なんて勘違いをされそうなので、「ここに書いてある。これを読め。わかるまで読め」が正解か。


2023年05月29日 (月)

最終更新: 2023-06-10T00:19+0900

[WR250R] 事故の顛末

 先月 28 日

横断歩道わきに人を見つけて止まったら後ろを走っていた車に追突されたよ。

 けが

車は軽自動車で、双方ゆっくりペースで走っていたみたいなので、わけがわからんまま地面を転がったけど骨折などはなし。さすがに無傷ではなく肩と腰にぶつけたような筋肉痛のような痛みがあったのと、右のすねに4点の血の穴があった。位置と配列からステップのギザギザ(※オフ車のステップにはラバーがない)にガツンとぶつけたのかなという感じ。普通に歩けはする。

肩は最も簡素なものではあってもプロテクターが初めて役に立った結果といえる。ニーシンガードは……足首の方からすきまにもぐり込まれたのかなあ。

 バイク

押し倒されて後輪に乗り上げられて冷却液をドボドボとかけ流しにされていた。

ナンバープレートやナンバーステーがぐんにょりひしゃげてるのが一番のダメージ。スイングアームの表面やアクスルナットも削られてギザギザしてた。

 場所

目の前が消防署であって、隊員の人が一番にかけつけてくれて怪我の確認やら事故車の退避やら道路上の液体に砂を撒いて掃き清めるやら大いにお世話になってしまった。ありがとうございます。

 レッカー

乗って帰るのは怖かったので購入した店まで運んでもらった。到着は営業時間をちょっとオーバーしてしまったけど、その時間ならまだ作業をしているということで対応していただきました。

使えるロードサービスが2種類あった。新車購入時に付随していてまだ更新しているものと、任意保険付帯のもの。事故で忙しいときにまどろっこしい自動音声を聞かされるのは苦痛だし、屋外で「~は何番、~は何番」みたいなのを聞き漏らさないのも難しいことなので、最初から人が応答してくれた方はポイントが高い。営業時間外やら定休日やらで販売店に運び込めなくて一時的に預かってもらう場合に、別日のレッカーが自己負担になるかどうかも対応が分かれた。つまり、任意保険付帯のレッカーはおまけなりのものだった。今月に任意保険の更新をしたときに二次レッカー費用が無料になります、という変更点が書いてあった気がするので、改善はしているらしい。

 保険

相手方の保険会社から最初の電話で 100:0 でと伝えられた。こういう(こちらに過失がない)場合に自分の保険会社は代理人になれないというのを風の噂で知っている。そういうときのために弁護士費用特約を付けている。使わなかったけど。

2回目の電話でバイクが全損扱いだということと、時価を上限にして補償するということを伝えられた。全損というのが意外なワードだったけど、要するに修理費用の見積総額(70 万円くらい)が中古車の購入費用より高くなったということなんだろう。スイングアームとリヤフレームがそれぞれ 10 万とちょっと、マフラーが 15 万円くらいするらしい。

 時価

向こうはグーバイクで走行 30000 km 以上の WR250R を検索して4件の車両価格の平均から 58 万といくらという金額を出した。自分のバイクの走行距離が 32000 km 台だから。

でも4件の平均というのはどうなのか。誰かサクラで 200 万円のバイクを出品してくれたりしないだろうか。簡単につり上げられるでしょう。また、30000 km 以上という条件もどうなのか。じゃあこちらは 40000 km 以下で平均を出しますよ。0 km の新車も 100 km の新古車も 1000 km も含めちゃいますよ。

Excel に直線を引いてもらって時価は3万円だけ上がった。

 バイク以外

肩の部分がすり減ったプロテクター入りジャケットは購入費用2万円のおよそ1割、すねに穴の空いた靴下は購入費用2千5百円のおよそ5割が補償された。購入年月日で減価償却した結果らしいけど減価償却という概念を持っていないので何も言えることがない。

スマホはベルトに通して腰のポケットに入れていたのが完全に無傷だった。やったね。

ドライブレコーダーだとか後付けのリアキャリアだとか、車体にネジで固定しているようなものはバイクの時価の中に含めてしまって個別に補償はしないらしい。あっそ。納得はしていない。

 収支

ゴールデンウィークを含むひと月くらいバイクに乗れなくて、スイングアームにはギザギザが残って(気にしない)、リアフェンダーは純正の黒く垂れ下がったものに戻ってしまった(プラスチックだからアルミパーツに比べて軽くはある)。修理費用がパーツ代と工賃がそれぞれ 15 万円ずつくらいの計 29 万円で、およそ 30 万円が残った。


2023年05月28日 (日) [AtCoder] 精進。昨日あった ABC303-F「Damage over Time」(黄 diff)。昨日は DP とか二分探索とかを考えるも、問題の輪郭、要素同士の関係が十分に掴めなくて解けなかった。一晩(よく寝て)考えた方針はこう。最後のターンから考える。呪文が効果を発揮するターンは1ターン限りなので d が最大の呪文を唱えるのが最善。1ターンで倒せないなら最後から2ターン目を考える。以降3ターン4ターン……。効果ターンが決まっているのでそのターン数で最も効果を発揮する呪文は d でソートして順番に選んでいける。■提出 #41817554 (AC / 539 Byte / 616 ms)。端折った説明は、呪文の効果はターン数に比例して増加した後で一定になるということ。一定になった後の呪文はひとまとめにして最大のものだけを記憶しておけばいい。もうひとつ。ターン数を1ずつ数えることが許されない制約なので、呪文の効果が一定になるタイミングと、比例状態にある呪文の効果とすでに一定になった呪文の効果が逆転するタイミングを捕まえて、飛び飛びに判定をした。ターン数による呪文ダメージの累積と、ターン数の範囲による呪文ダメージの累積の累積をごっちゃにしそうでややこしい。


2023年05月27日 (土) [AtCoder] 今日は日鉄ソリューションズプログラミングコンテスト2023(AtCoder Beginner Contest 303)があった。コンテスト成績証自分のすべての提出。遅めの A-E 5完で微減。以下ふりかえり。■A 問題「Similar String」。あいまい一致判定。目で見ても同一視する2つの文字がよくわからないのでコピペでスクリプトに埋め込んだ。たぶんイチと小文字のエル、ゼロと小文字のオーを同一視してるんだと思う。■B 問題「Discord」。制約が小さいので具体的に x yy x を検索すればいいと思う。横着して単一の文字列を対象にして検索するようにしたら 10 や 20 を 1 や 2 と見間違えるバグを仕込んで頭を悩ませていた。あほ。■C 問題「Dash」。書いてある通りに実装するだけなんだけど最初の提出は WA×1 だった。問題文の最後がこうなんだけど、「高橋君が一度も倒れることなく N 回の移動を行えるか判定してください」、N 回目(最後)の移動の1ステップ目を終えた時点で体力が尽きた場合の判定がそれほど明らかではない。「最後の移動で体力が-1になった場合答えはYesとなりますか?」という質問と答えが全体公開されているくらいなので。自分はコーナーケースをうまく回避したつもりで N 回目の処理を特別扱いして WA×1 になっていた。ところで、WA×4 になる提出をいくつか見かけたけど、これは「移動した点に置かれたアイテムを消費し」というのを読み落としていたものと思う。この点はちゃんと疑問を持って確かめていたので間違えなかった。■D 問題「Shift vs. CapsLock」。D は DP の D! CapsLock が ON/OFF の状態それぞれの最小タイムを記録していく。たぶんないとは思ったけど制約上は許されていたので、Shift+A と CapsLock+A+CapsLock みたいな、結果が決まってそうなケースも一応比較した。■E 問題「A Gift From the Stars」。難しくはないと思う。迷って手が止まってえらく時間がかかったけど。まず次数1の葉っぱを見つける。その相手は星の中心に決まっている。星の中心の相手は葉っぱに決まっている。すでに見た葉っぱは無視して新しい葉っぱの相手を見る。それが自分(星の中心)なら無視して、そうでないものがあるならそれは別の星の葉っぱに決まっている。という感じで次々に判定していくだけのことに 40 分ちょっとかけてしまった。最終形は、星の中心をキューに入れるようにして星のレベルを記録していくものになった。■こちらの提出 #41744985 を見ると次数だけで答えが出せるみたい。次数1は葉っぱに決まってる。次数3以上は星の中心に決まってる。次数2は星の中心でも葉っぱでもありうるけど、全体を見ると星の中心と次数2の葉っぱの数の比率は n 対 2*(n-1) に決まってるので、って感じだろうか。ヒントなしでは気がつけないよ。■面白いことを書いている人がいる。「ABC303-D この問題の正解者は実は間違っていた」。形式だけ見て気が付いたことを。「別のとらえ方」として書かれている4ステップの処理について。1ステップ目は dp[0][j] と dp[1][j] に基づいて dp[0][j+1] に一時的な値を保存している。2ステップ目は同じようにして dp[1][j+1] に一時的な値を保存している。3ステップ目は dp[0][j+1] と dp[1][j+1] に保存した一時的な値に基づいて dp[0][j+1] に本式の値を記録している。4ステップ目は dp[0][j+1] に記録した本式の値と dp[1][j+1] に保存した一時的な値に基づいて dp[1][j+1] に、おそらく誤った値を記録している。これは自分が提出 #41747349 で5行目と7行目がどれだけ長くても1行の多重代入によって値の更新をしている理由だし、ときどきは見た目を整理したい邪悪な欲求に負けて代入を複数行に分けてバグらせてしまうのと同じことである。たぶんね。


2023年05月26日 (金) キッチンシンクを皿用スポンジで洗うのが汚いという感情の成立と国鉄型特急の不便な手洗い場の関係について」■全然知らんかった! でもたしかに洗面台にはゴム栓があるし、風呂桶は洗面器って呼ぶ。熱すぎるお湯も手を離すとすぐ止まる水も、直面すると困ってしまう様子がありありと想像できる。水をためる発想はまったくなかったけど、言われてみればそうとしか思えない。中性洗剤の用途に野菜って書いてあるのを知ったときと同じくらいの驚き。一昔前のことでも全然知らないね。