/ 最近 .rdf 追記 設定 本棚

脳log[2023-02-07~]



2023年02月07日 (火) [AtCoder] 精進。ABC008-D「金塊ゲーム」(黄 diff)。以前順番に埋めていっていたときに埋めきれなかった古い ABC の問題。今となっては何がわからなかったのかわからない。だって今日は以前に立てた方針をそのまま実装しただけなのだから。■提出 #38698822 (AC / 469 Byte / 155 ms)。最初四角の枠があって、機械を動かすごとに枠が4分割される。枠の中にあるどの機械を一番に動かすかのがいいかは総当たりで決める。枠を定める4つの値のバリエーションは N+1 個から2個と N+1 個から2個を選ぶ組み合わせの掛け合わせだから高々 N の4乗程度。N≦30 だから N^4≦81万。枠の中にある機械の数は N 以下だから全体で N^5≦約2400万を見込んでおけば足りる。定数倍が軽ければ Ruby でも通る。

最終更新: 2023-02-08T02:07+0900

[Ruby] Ruby クイズ (複合代入編)

a = b = 0 # 初期化
a += b += a += 1 # 本題
p a #=> 1? 2?

右から順番に a に 1 を足して(a=1)、b に a を足して(b=1)、a に b を足して(a=2)、と考えると間違える。「自己代入」を読むと「この形式の代入は 式1 = 式1 op 式2 と評価されます。ただし、op が &&, || の場合には(略)」と書かれている。一番右の a += 1 が評価される前に一番左の a +=a = a + と分解されていて古い a の値が評価中の式の値として一時的に記憶されているのだと考えられる。a の値は 1 になる。ちなみに C++ では 2 になった。

この前の ABC288-D が解けなかった理由のひとつにはこの罠に気がつかなくて合わせるべき数字がそもそも間違っていたということがある。それがなくても解けなかったのもたしかだけど。


2023年02月06日 (月) [AtCoder] 精進。先週末あった Toyota Programming Contest 2023 Spring Qual A(AtCoder Beginner Contest 288)-F「Integer Division」(ぎりぎり黄 diff)。当日は D と E をひとしきり考えて諦めた後は F に狙いを定めていた。狙いはまちがっていなくて、3問のうちまず F が解けた。■提出 #38678223 (AC / 143 Byte / 91 ms)。前からの DP で解ける。何を覚えておいて何が計算したいか。1桁目が A、2桁目が B だったとして、(AB+A*B) に当たるものを覚えているとする。3桁目が C だとして求めたいものは問題の定義から (ABC+A*BC+AB*C+A*B*C) なんだけど、AB*C+A*B*C は覚えておいた (AB+A*B) に C を掛けて求まるとして ABC+A*BC はどう求まるか。覚えておいたものを 10 倍すると (AB0+A*B0) となって惜しい。不足は (1+A)*C であるが 1+A とは何か。2つ前までに覚えていた値の和だということがサンプルを丁寧にデバッグしていてやっとわかった。わかったというか見つかった。がちゃがちゃデバッグ、良くないね。■D 問題「Range Add Query」はまず操作の累積和を記録して、区間の末尾 K 要素が0になるかどうかを見たいと思った。しかし数列全体を通した累積和から区間の前 K-1(?)要素の影響を引き算する方法がわからなかった。■E 問題「Wish List」は前から順番に何個の商品を選んだ場合に最小コストがいくらかを記録していく DP をやりたいと思った。前に最初何個の商品があって最後何個まで減るかが決まっていれば最適な順序コスト(C)の選び方がわかる。そしてその選び方は前にある商品の選び方に影響を与えない。M 個の商品については必ず選ぶこととし、それ以外の商品は選ぶ場合と選ばない場合を両方考える。時間に追われてふわふわしてる頭で書ける DP ではないのだ。■E 問題。F の AC から2時間弱、ここまでの日記を書いてからじっくり集中して AC です。提出 #38679476 (AC / 465 Byte / 2166 ms)。■残った D 問題は「あ、一応。典型の考え方も含めて。「この問題そのものが有名」という話ではない。 ・区間に足し引きする問題は、imos法の逆の考え方で、始点・終点に足し引きする問題に変換できる ・足す区間が一定(長さK)の場合は、modKが同じ場所しか互いに影響を与えないので独立で考えられる の2つが典型」とか「X_i, X_{i+1}, \cdots , X_{i+K-1}にcを加算するとはどういうことでしょう。Aを多項式、すなわち A_1 + A_2x + \cdots + A_Nx^{N-1}と考えると、 c(x^{i-1}+ \cdots x^{i+K-2})を足すことです。つまり、この問題は、 1 + x+ \cdots + x^{K-1}の倍数を足して0になるか、言い換えると多項式を 1 + x + \cdots + x^{K-1}で割って余りが0か否かということです」とかのネタバレをすでに読んでしまったのだけど、だからといって自分で書ける目途は立たないんだな。咀嚼が足りない。


2023年02月05日 (日) [BOOX Max2] 1月のアップデートで 3.3.1 になったのだけどこのバージョンには注意が必要なように思う。自分は自炊したスキャン画像を束ねた PDF をプリインストールの Neo Reader で閲覧している。アップデートで 35044 になったバージョンでは全体の反応がきびきびしていることに気付く。ハードウェアが同じならからくりはどこにあるのか。レンダリング品質が劣化している。システム上で4種類から選べるリフレッシュモードでは最も高品質なモードを選んでいるにも関わらずだ。正直ひどい。文字の線に穴が空いたり棘が生えたり、全体につぶつぶしている。コントラスト設定にある画像のディザリングという項目を ON にしたり OFF にしたりするとそのときだけは以前のなめらかな線で描画されるけど、その状態は維持されない。Neo Reader の画像のレンダリングに問題があって、関係しそうな設定も無視されて役に立っていないように見える。■Neo Reader を起動した状態でシステムステータスバーを表示するとリフレッシュモードがスピードモードに変更されていることがわかる。しかし設定変更のための場所には「アプリの更新設定をご利用ください」と表示されるのみで変更ができない。■Neo Reader の画面リフレッシュというメニューでより細かくリフレッシュモードが設定できるみたい。おおまかにノーマル/リーガル/スピードから選べるように見えるけど、ここで選ぶノーマルモードがスピードモード品質なところが問題になっている。高品質なモードを捨てる意図はないだろうから、設定が反映されない不具合だと思いたい。はよ戻せ。■Neo Reader のメニューで画面リフレッシュの1つ下にある設定という項目を選んで設定の一覧を表示して特に何もせずに閉じるだけで描画がなめらかになった。ちなみにシステムステータスバーの表示は一時的に変更されたスピードモードのまま。■まとめるとこう。Neo Reader はシステムの設定とは別に独自の画面リフレッシュ設定(ノーマル/リーガル/スピード)を持っている。Neo Reader を使用しているときはシステムのリフレッシュモードがスピードモードに固定されて変更できなくなる。Neo Reader のリフレッシュ設定はアプリを開き直すたびに無視され、(Neo Reader が定義する)スピードモードで描画がされる。しかしアプリの「設定」画面(「画面リフレッシュ」の1つ下の項目)を一度でも開くことで画面リフレッシュの設定を反映させることができる。なお、リーガルモードとノーマルモードの違いは確認できなかったので、実質的に Neo Reader の画面リフレッシュの大枠はノーマル/スピードの2択になる。操作を繰り返してるとリフレッシュに失敗して画面が重なる現象が何度も起こってるので、諸々質の低いバージョンなのだろう。とりあえず面倒でも手順を踏むことでまともな表示にできたのは助かった。


2023年02月03日 (金) こういうの好き。やってみた。「簡易版職業適性テスト(Gテスト) | job tag(職業情報提供サイト(日本版O-NET))」■もっともプリミティブな、脳みその形とでもいうようなものを知るためのテストかな。Result.png / plot.png / plot2.png / plot3.png■展開図から立体を選ぶ検査 A (空間判断) の成績が一番悪い。半分も解けていない。この成績が上がるだけで赤丸(自分の位置)が EG (エンジニア) の水色球に近づいていく。最も近いのが MS (マルチスキル) の桃色球。検査 C (数理)がちょっと浮いてる以外はほぼ桃色中心と一致している。■検査 A では1、2問を除いていいペースで進めていたつもりだったので、適性がある人とは基本となるペースが全然異なってるんだろうなと思う。検査 B (言語) は拙速気味にだいぶ飛ばして進めていたけどそれでも4分の3しか到達できなかった。こうなると何も読まずにクリックしていくだけでも完答は難しいんじゃないかと思うけど、きっかけとなったツイート(「厚労省のIQテストっぽい奴で職業診断できるやつ、やってみたが、うーん… どうなんだろうこれ? https://t.co/32xsKAkZIa https://t.co/NvEWICJZN6」)の下に満点の人が現れている。無理ゲーではないのか……(困惑)。


2023年01月29日 (日) 靴を買った(配送遅延で1日遅れの今日届いた)。「ランウォーク メンズ | ラギッドソール | レースアップブーツ | コーヒー | 26.0 【ASICSウォーキング公式】」。セールで約 25000 円だった。三日(みっか)前雪の残った歩道を歩いてるときに靴底がはがれたんよね。穴が空くという状態ではなかったけど、靴底のパターンが失われてまったいらになってしまった。これまでにボンドで間に合わせていたのだけど、ぴろぴろとはがれてきていたのがとうとう限界を迎えたというわけ。それが 11 年前の1月2日に買ったこの靴「Amazon.co.jp: [アシックス] asics サルティス ウォーキングシューズ WSR644 29 (コーヒーブラウン/25.5) : ファッション」。これは雨の日ではなくバイクの日でもないとき用の靴。同じものが手に入れば一番面倒がないんだけどそれは無理なので、同じアシックスから。自分は靴はひもでぎゅうぎゅうに締めつけたいタイプ。スケート靴やスキーブーツや登山靴のように。


2023年01月28日 (土) さくらインターネット、社員全員の『ITパスポート』取得へ。社長もちゃんと合格 | スラド」■IT パスポートぐらいとか、TOEIC で高得点でもとか言われるけど、どちらも取れたからすごい高得点だからすごいではなくて、IT パスポートも取れない人間とは共通語彙がなくて話が通じない、TOEIC でそれなりの点が取れない人間とは英語で意思の疎通ができないみたいな位置づけだと思う。足切りだよ。腐しかたが間違っている。受けさせられて合格した人間がこんな低レベルなものでは何も証明できないと時間の無駄を愚痴るのは結構ですけども。社員全員が、というのはだから、すごく適切な施策だと思う。(結果を見れば)全然必要がなさそうな社長がまずは、というのもだから、すごく適切な進め方だと思う。■過去の日記から。IT パスポート>「25年度秋期の過去問をやってみたら……ストラテジ系とマネジメント系の小問は聞きかじった単語を頼りに8割当てずっぽうで5割的中期待。テクノロジ系は8、9割わかる(1、2割わからない)というレベル。解答時間は1時間以上余りそう。現在の知識では難しかったけど、定義を書いた単語帳だけで攻略できる類の問題。「こういう言葉を知っていますか?」」。TOEIC>「耳: 310 (62%)、読: 375 (75%) でした。括弧内は各500点満点とした時の得点率。順位は上から 25.7%。会場で 4人捕まえたらその内 1人は自分より上だったってこと」。自分はどちらもバカにできるレベルにない。


2023年01月27日 (金) 隻狼(SEKIRO)。3年前にプレイしていて(20200113)、先月初めてクリアして(20221205)、今は3つ目のエンディングを見た。3周目の梟戦 (249 MiB!)3周目の弦一郎・一心戦 (313 MiB!)。ボス戦をやってると冬なのに手汗と腋汗がすごい。玉になって伝ってくる。デモンズもダクソもブラボも何周もしなかったから、やっぱり隻狼が一番好きだな。■4周目の修羅ルートで(それと最後のスキル修得(9ポイント)で)トロコンの予定。攻め力は3周目までに上げた 40 を上限にして上げない予定で、初めて九郎の御守りを返して苦難厄憑きで始めている。どこにもイージーな戦いなんてないんよ。どのボスも中ボスも何回か殺してくる。いや、鬼庭形部雅孝だけは1周目で梟・義父を抑えて「一番死んだボス」なだけあって今では梟と同じくらい余裕だけども。もはや阿吽の呼吸なんだ。どの瞬間どの攻撃でも死んだ記憶があって体が覚えてるからそのタイミングで L1 ボタン(弾き)を押すだけ。■見て対応しているのではない。重ね合わされた未来から死の予感を感じ取って反射で押している。だから梟戦で顕著だけど、禁薬玉に対して弾きの構えを取るし、何もないときにも弾こうとしている。だいたいは手裏剣を弾こうとしていて、でもそのときはたまたま飛んで来なかった。弾きが空振りでもペナルティはないしね。■@2023-02-05 最後のスキルを取って、初見の2ボス、エマと一心を倒してトロフィーコンプリート。30 分も集中が続かないから何日もかかった。防御してもダメージを食らう苦難の何がつらかったかって、鉄砲砦で銃を防げないこと。決死のダッシュしかない。怨霊対策の紫紺傘もダメージを食らうようになってつらい(報酬がないので戦わなかったけど)。その他に関しては瓢箪を飲む頻度が増えたかもしれないくらい。防御するとか、防御で体幹を回復するとか、そういうところに脳みそのリソースを割いていなかった。だから不意に体幹を崩されてそのまま殺されたりもするんだけど、そのときはそのとき。すべて弾けばダメージは食らわないし、体幹ダメージも防御したときに比べれば少ないながら徐々にたまりはするけど、弾いたときに崩れはしない。完璧にできるわけではないけど、最初からそういうゲームをやっていた。ゲーム性は違うけどこういうシンプルに楽しいゲームはエンドオブエタニティを思い出す。リーンベルのおパンツのために PS3 を買ったのだった。それから、こちらはシンプルに楽しんだけど、義手忍具とか流派技とか、幅が用意されていないわけでもないのだよね。■基本の動きが同じで炎系の大技の対処を覚えればいいだけの老一心様よりエマの方に苦労した。弦一郎もそうだけど、自分は防御されてもがんがん攻めていく戦い方は苦手。処理が追いつかない。刺さる限りは斬りつけるけど、防御されたら様子を見たい。結局時間はかかるけどエマ戦でも様子を見た。梟のときと同じ戦い方。基本は同じでもゆらりと躱すモーションやエマと共通の投げ技は老いた一心様だけが見せる。肉体のピークを越えた一心様は女性であった巴の体捌きからも何か学んでいたのではないかなと想像する。雷ばかりでなく。強さに貪欲で銃でも槍でも何でもありの人だからね。■他人のプレイ動画を見ていて気がついた SEKIRO のそれほど明らかではない仕様。回生の力をわずかに回復する竜胤の雫の使い道。1個しか持てないのに回生の力をわずかだけ得てどうするのか。これを知るには回生直後に続けて回生できない墨塗り状態への理解が鍵になる。墨塗り状態は回生の力をわずかでも得たときに解消される。なので、回生の力が1回分以上余ってるけど墨が塗られていて回生できない、というときは竜胤の雫を使うだけで回生ができるようになる。墨が塗られている塗られていないに関係なく回生の力が1回分に足りないときは、おくるみ地蔵を使うことで回生の力がたまると同時に墨塗りが解消されて回生ができるようになる。竜胤の雫をうまく使うことでおくるみ地蔵を温存しながら回生回数が増やせる。ということを3年目に知ったのだった。


2023年01月26日 (木) 法務省人権擁護局「みんなで「いじめ」をゆるさない いじめをなくすためにできること。いじめ・じんけんについて考えよう」■非常に怖い言い回し。「みんなで「いじめ」をゆるさない」。こういう全体思想、連帯思考がいじめの背後に構造的にあると思ってる。つまり、個々人がばらばらなら諍いがあってもそれは喧嘩と呼ばれるのであり、集団対集団でも別の呼び方があるとして、いじめと呼ぶときには被害者が個人であるのに対して加害者傍観者が集団として存在していることが想定されていると思う。群れがなければいじめは存在しない道理。それなのに「みんなで」と連帯を呼びかけるとは。「ゆるさない」という強い言葉で正当化される非難や暴力の存在を示唆するとは。怖いよ。いじめは人間関係の淀みなのであり人間を集団にすればそれも未成熟な人間を集団にすれば水が低いところに集まるように必ず生じるものだと思う。プレッシャーをかけて何が解決する。理想的には対話によって被害者の人間性が回復できればいいけど、それ以外には距離を取らせる、避難場所を用意する以外に何ができる。恐怖で支配する? 全員を均質なロボットにする? 人間の密度を下げる?(人間をふくらませるという意味ではありません)。密度を下げるのは衝突を減らすのに効果がありそうではある。


2023年01月25日 (水) [AtCoder] 精進。ARC139-B「Make N」(青 diff)。以前に原型はできていた。A 増やすに際して Y もしくは A*X の低い方を費やす。B 増やすに際して Z もしくは B*X の低い方を費やす。C=LCM(A,B) 増やすに際して C/A*Y もしくは C/B*Z もしくは C*X のうち一番低いものを費やす。C に満たない半端に対しては総当たりで間に合う。基本の考え方はこう。ところがこれだけでは一部合わない。■提出 #38315434 (AC / 274 Byte / 230 ms)。最後の決め手は6行目の nc = [n/c-1,0].max*c. N を LCM(A,B) と半端に分けて考える代わりに、LCM(A,B)1回分と半端をその他として取り分けて考える。正直よくわかりません。一晩経ってひらめいて試したら AC だっただけ。■■■@kyopro_friends「1 以上 N 以下の整数のうち、2 以上 M 以下の数を約数に持たないものの個数を求めて下さい。[制約] *1≦N≦10^{16} *1≦M≦20 *入力はすべて整数」 DP と包除原理でサンプルの2までは答えが合った>解答。M≦72 のサンプル3は TLE になる。むむむ。関連するマシュマロ質問に「素数の積」とあったので素数だけを取り出してみたらサンプルの3も合ったっぽい(先頭と末尾の数桁の一致を確認)>解答2。まだまだだなあ。■@2023-01-26 今日のお風呂での話。20230124 に中国剰余定理で解いた ABC286-F「Guess The Number 2」の反芻をしているときに、kyopro_friends さんの即興問題とのあいだの共通点に考えが広がって、もてあそんでいるときに「この問題なら、最初から割り算で計算すればオーバーフローのことを気にする必要はないけどねー」の意味がひらめいた。自分の解答2でいうと最後から2行目に N/c という式があって、c というのが素数の積。C++ のように整数型のビット長が固定の言語では c がオーバーフローするおそれが現実的な範囲にある。ここで、割る数(c)を大きくする代わりに割られる数(N)を小さくしていくのも同様にありだなーと、あのツイートはこういう意味だったのかと、一日遅れで頭に血が巡ってきたという話。これがファイナルアンサー>解答3。割る数(a)は M 以下だし割られる数(n)は N 以下。入力を超える数がないからオーバーフローもない。


2023年01月24日 (火) [AtCoder] 精進。ABC286-G「Unique Walk」(黄 diff)。おめでたいことがあったらしいです。「bk_cocoaさんのウルシステムズプログラミングコンテスト2023(AtCoder Beginner Contest 286)での成績:248位 パフォーマンス:2111相当 レーティング:1140→1283 (+143) :) Highestを更新しました! #AtCoder #ウルシステムズプログラミングコンテスト2023(ABC286) https://t.co/043KXpCjAX」。A-EG の6完らしい。G 問題の AC 抜きでも「終了 30 秒前にようやっと5完を確保した」自分では勝負にならない。F も G も問題を読む時間さえ作れなかった時点で負けが確定している。素直にすごい。F がダメでもあわよくば G を狙うという姿勢がなければ望めない結果ですよ。■提出 #38290988 (AC / 456 Byte / 374 ms)。必ず1回だけ通らなければいけない辺がある。No になる条件は何か。最小の例はたぶん4頂点3辺の星型のグラフですべての辺を一度だけ通らなければいけないもの。条件付きの辺を一旦とりわけてその他の辺が作るグラフとの関係を考える。1回だけの辺が結ぶ2頂点が同じ連結成分に属するなら代替経路があるということで、その辺はあってもなくてもいい存在であり1回だけ通ることも自由にできる(通った後で元の頂点に戻ってくることで通った結果をキャンセルできるので)。異なる連結成分を結ぶならその辺は橋であり代替経路が存在しない。ただし代替となる橋が存在する可能性はある。ひと筆書きできるかどうかは頂点の次数の偶奇を見ればわかるというのは有名な話>「ケーニヒスベルクの七つの橋問題」。解けると信じて臨んだ結果解けました。負けないっ。


2023年01月23日 (月) 某帖で知ったのだけど「パーセントポイント」という言葉があって Wikipedia にページがあるらしい。以前から新聞で使われているのを見ていて、50 % が 40 % に下がったときにその量を 10「パーセント」と表現すると意味が曖昧か不正確だからだろうとは思っていた。便宜的な表記ではなかったのか。■■■「dir って何て読みますか?(アンケート)」 罠が存在することにすら気付けない罠だ……。ディレクトリからエクトリを除いたらディル以外に考えられなかったけど、これはカタカナ思考だったか。関係ないけど char は(頭の中で)チャーって読んでる。ない a は読めない(←キャラ派の否定)。シャアって読む人いるのかな。アズナブル。


2023年01月21日 (土) [AtCoder] 今日はウルシステムズプログラミングコンテスト2023(AtCoder Beginner Contest 286)があった。終了後に読んだけど F 問題「Guess The Number 2」は中国剰余定理の香りがします。今日の精進はありません。自分のすべての提出。9時半から1時間以上 E 問題「Souvenir」(スーヴェニール? フランス語っぽい? 意味は調べなかった。そんな暇はないねん)のバグ取りに費やしていて終了 30 秒前にようやっと5完を確保した。何も難しいところはなかった。ワーシャルフロイド法をやるだけ。それなのに距離におみやげの価値をエンコードする部分で一生バグらせていた。センスないよ。■F 問題の制約を緩めて(あるいは厳しくして) N の全探索で解く方法を考えてたんだけど、えっと、ある周期で循環するグループをいくつか作りたかったんだけど、k 回目で f^k(i) = i になった瞬間に変化が止まるよね。循環させられなくない?■@2023-01-24 1回1回 A 数列を置き換えるとは書いてないのかな。うっかり者の役に立つサンプルをくれ。■N を探索する愚直解法と中国剰余定理を愚直に解く解法ができた。でも P = 2,3,5,7,11,13,17,23,29 としたとして P.sum = 110P.inject(:*) = 340510170 なんだけど、N の上限が 10^9 だから 10**9/340510170 = 2.93 ということで確率3割の当てもんになる。え、どうするの? 何回でも提出する? 法に合成数を使うことで何か変わる? なんでそんな意地悪するの?■提出 #38300369 (AC / 904 Byte / 78 ms)。29 を除いて 2 と 3 を 4 と 9 に置き換えることで P.sum = 108P.inject(:*) = 1338557220 > 10**9 にできた。今日の収穫は、中国剰余定理の答えを愚直に求めても許されるとわかったこと。小さい方の法の大きさを上限とするステップで答えが見つかる。これからは中国剰余定理わかりませんであきらめなくて良さそう。


2023年01月20日 (金) [AtCoder] 精進。ABC244-F「Shortest Good Path」(青 diff)。当日はなんか色々アドホックに短いパスを作る方法を考えるも提出に至らなかったんだけど、今日は愚直に頑張って探索をした。半分全列挙の反省から(「半分全列挙の問題が半分全列挙だと教えられる前に解けたためしがない。強いて言えば制約の数字に特徴が現れるが、手掛かりがなさすぎる」)、指数時間が通る制約だなと意識できたのが解答の方針を決めるヒントになった。提出 #38176946 (AC / 412 Byte / 3920 ms)。問題を作る方が難しそう。制約、制限時間、停止すること、最悪時間。解く方は祈って出すだけ。