/ 最近 .rdf 追記 設定 本棚

脳log[2019-12-09~]



2019年12月09日 (月) 今日(8日のこと。今日とは? 日記とは?)の天気を指して「時雨れてる」と言い表す人(おばあちゃん)がいて、そういえば俺は時雨を漢字の問題としてしか知らないなと ATOK で辞典を引いた。「①晩秋から初冬にかけて断続的に降る小雨。(明鏡国語辞典)」 おお、まさしく時雨だった。■時雨をトキウ・Timefall と読んでしまうのはデス・ストランディングをプレイしている真っ最中の人。


2019年12月08日 (日) Android のメッセージアプリ。会話の起点から終わりまでの間に何分経過していたのか知りたかった。最初から見えているのは起点の日時だけ。何が起こるのか予測できないものを触りたくはないけど、あるメッセージをタップしたら「19分」と表示された。「は?」起点と現在の時刻の間にそのメッセージを位置づけると同日同時の19分という意味ではないと推定されたので、たぶん「19分(前に着信)」という意味。それで起点の日時から現在時刻の19分前までの時間は……。現在時刻は……。■時刻の相対表示っていうのが現在時刻とセットで初めて意味を成すペアの片割れに過ぎない。一方の「19分」だけを記憶していても1分後にはもう価値のない情報になっている。情報の形が特定の用途に最適化されて削られているせいで、俺の役には立たなかった。■賢しらなことをしようとして失敗する機械を俺は憎む。やるなら完璧にこちらの望みを叶えるしかない。できないなら命じられたことだけをこなす素直な道具であることだ。隠して役に立つ情報なんてないのに、余計な気を回すな。■■■タイムゾーンについて読んだことがある。横に長い国が複数のタイムゾーンを持っていることから始まる話。でも俺には関係がなく、スマホは俺の道具なんだよな。役に立たないメッセージアプリ。


2019年12月07日 (土) [SakuraEditor] すごくコードの読めるレビュアさんぽい>CNativeWに等価比較演算子を追加する by berryzplus · Pull Request #1114 · sakura-editor/sakura20191030で触れた人徳のある人も同じ人。働きが理解され報われんことを。理解されんことを……。


2019年12月06日 (金) ゴッドオブウォーをプレイ中。■ムスペルヘイムの暑さに参り気味のアトレウスが道中でこぼした言葉「ムスペルヘイム(炎の世界)とヘルヘイム(氷の世界)が一緒になったらちょうどいいのにな(※だいたいこういう内容)」に対して賢者ミーミルの答え「オーディンが翼を持っておったらそれはドラゴンじゃ」■オーディンは悪の元凶のような存在で何かと悪事が話題になるので名前が出てくるのは唐突ではない。アトレウスは子供なので「え?」と置いてかれていた。楽しい会話だな、と。


2019年12月02日 (月) ヒアリって英語で Fire Ant って言うのね。そっちの方はよく知ってる。子供くらいの大きさで火炎放射してくるやつだ。「Fire ant | Fallout Wiki | FANDOM powered by Wikia


2019年11月28日 (木) [C++] ドキュメントを読む機会があったので演算子ではない方の noexcept に対する現在の理解を。■コンパイラへのおねだりキーワードではなく、プログラマが自らを縛り、その保証をコンパイラに宣言するためのキーワード。Java の Checked Exception の面倒臭さをコンパイラの助けなしでプログラマが引き受けるキーワード。■合ってるかは知らない。識者のざっくばらんな意見が読みたい。


2019年11月21日 (木) 今『<自閉症学>のすすめ』という本を読んでいて、それの心理学の章で心の理論に関するジョンとメアリーの課題が紹介されている。それは……■1.メアリーとジョンは、公園でアイスクリームを売る自動車を見た。2.メアリーはお金をとりに行くために家に帰り、その間にジョンはアイスクリームを売る自動車が公園から離れた教会に移動していくのを見た。3.メアリーは家から公園に戻る途中に偶然教会でアイスクリームの自動車を見た。4.公園と教会の中間地点にいたジョンは、アイスクリームを買いに行ったメアリーを探し始めた。5.ジョンはメアリーがどこに行ったと思っている?■これとっても難しくて色々余計なことを考えた。「ジョンはなんで公園でメアリーを待たずにふらふら中間地点に移動したのか?」「公園と教会は同時に見渡せる位置関係にあるのかないのか? (それにより起こりうる事態が変わる)」「お金を持ったメアリーの目的地は本当に自動車か? 「アイスクリームを買いに行った」というのは真実か? 誰にとっての真実か? ジョンがいるはずの公園に戻ろうとしているとは考えないのか?」「メアリーは自動車が移動したことは知らないはずだが(※ジョン視点)、事実として自動車は移動している。メアリーが自動車がどこにあると考えてどこに行くかは不明瞭である」「ジョンがメアリーについてどう考えるかも、前提知識から変わってしまった現実を前にして、不明瞭である」という風に考えるのだよね。結果として答えられない。■一貫して変化しない信念というものの存在が信じられないのだと思う。変化する現実を前に信念が変化しないはずがなく、ジョンがメアリーについて「こう考えているはずだ」ということを決めつけることができない。だから答えられない。■ジョンは変化した現実を知っているし、実はジョンの知らないところでメアリーもその変化を知っている。ジョンがメアリーについて「(事実とは異なるが)こう信じているはずだ」と考えていると決めつけることが、誤りであるおそれがある。だから望む答えが返せない。■1から5まで番号をふった文章は本からそのまま抜き出したものなんだけど、ちょっと問いが雑なんじゃないだろうか(以前にも……「問いが雑」)。思い込みがはげしくないと答えなんて出せないんじゃないだろうか。それはこういう、「メアリーは自動車が移動したことを知らないはずだ、という風にジョンは決めつけて疑っていないだろう」という思い込み。■実際、回答者にはメアリーがジョンの知らないところで自動車が移動していたのを目撃しているという事実が提示されているのだから、ジョンがその事実を予想しうるというのも否定できない現実であるべきで、ジョンはこう考えているに違いない、とひとつに決めつけることは短絡思考だろう。何か間違ったこと言ってる?(←これ)■■■自分で書いた「ジョンがいるはずの公園に戻ろうとしているとは考えないのか?」という指摘について考えたい。これに合うように4番をちょっと変更して、4.′公園と教会の中間地点にいたジョンは、お金を持ってジョンと合流しようとしているメアリーを探し始めた、としてもパラレル構造が成立するんじゃないだろうか。移動した自動車↔移動したジョン、自動車を目指すメアリー↔ジョンを目指すメアリー。■パラレルが成立するなら、一方に限って自分が「そんなん公園に向かったに決まってるやん」と答えられるのはなぜか。「事実として」ジョンは公園から移動しているのに、メアリーがそのことを知っているはずがないと「決めつけられる」のはなぜか。何が違うのか。「3.メアリーは家から公園に戻る途中に偶然教会でアイスクリームの自動車を見た。」という事実を回答者である自分自身が知らされていた、という違いにより、結論が誘導されていたのではないか。■一度書いてから気がついたんだけど、「そんなん公園に向かったに決まってるやん」「メアリーがそのことを知っているはずがないと「決めつけられる」のはなぜか」という文からは、自分とジョンの視点を同一視している(混同している)ことが見てとれる。正確に書くなら「そんなん公園に向かった(とジョンは考える)に決まってるやん」「メアリーがそのことを知っているはずがないと(ジョンに)「決めつけ(させ)られる」のはなぜか」でなければいけない。前半ではそれができていた。■「3.メアリーは家から公園に戻る途中に偶然教会でアイスクリームの自動車を見た。」という一文の存在が、ジョンと回答者である自分の持つ情報に差を生み、視点の同一化を妨げ、そのことが回答を難しくするのではないか。4番の文を改変した後半では、3番の文が効果を持たないために回答への支え(つかえ)にならなかったと見える。■このことを以て自分の心の理論について何か言えることがあるだろうか。結局俺は前半でも後半でもひとつの視点しか持てていなくて、前提知識の異なる視点を使い分けることができていないんだな。でも世間の多くの人がこの難しいシミュレーションを簡単にやってのけているとも思わないな。だってそれじゃあ人狼ゲームが簡単になりすぎて知的遊戯として成立しなくなりそうじゃない? とはいえ「自分にはこのゲームの素養が一片たりともない」のは間違いのないところではある。それは心の理論に弱点があるからなのか?■■■@2019-12-20 今日は文学のパート(第7章)を読んだ。心の理論に関連して、「知識の呪縛(Curse of Knowledge)」「心の読みすぎ(=知らず知らずのうちに自分の心の状態を極端なほど相手に投影してしまい、『あなたの心は分かりきっている』と思い込んでいる、実はまったく相手の心が読めていない状態)」


2019年11月20日 (水) 本日の新発見(ATOKで変換できなくて知った)。「総花(的)」は、ソウバナ(テキ)と読む。文盲(モンモウ)出色(シュッショク)縦中横(タテチュウヨコ)以来の驚き。類としては縦中横と同じなのかな。


2019年11月18日 (月)

最終更新: 2020-05-06T23:27+0900

[AtCoder] AtCoder Beginner Contest 145D問題 Knight

階乗が法外な大きさになるので余りを答える問題。割り算を含む式の余りが求められなかった。もちろん階乗を計算しきってから余りを求めるというのは実行制限に引っかかるので無理。

 #AtCoder から見つけたヒント

モジューラ逆数っていうのがあるんですね、これはすごい pow(down,mod-2,mod) 昨日のD問題逆元の計算どうやればいいのかわからなくて1時間くらい経ってしまった

AtcoderのABC145D問題しっかり理解して頭の中整理してすっきりかけた気がする。Python3です。 pic.twitter.com/Dcs3IfoZ95

mod って演習込みでイチから習った記憶がない。「割った余りですよ」以上の理解がない。キーワードすら知らなくてググりようがない。

 キーワード

Ruby には Python と違って「冪剰余 - Wikipedia」が求められる関数が用意されていないみたいなので(※補足訂正)、拡張ユークリッド互除法を使う方の求め方を Wikipedia(ja) からコピペ実装した>https://atcoder.jp/contests/abc145/submissions/8508807。明日には理解できないとしても「モジュラ逆数」というものの存在くらいは覚えておきたい。

 現在 Ruby で最速の提出(55 ms)>提出 #8501110 - AtCoder Beginner Contest 145

速いからには変わったことをしてる。derive_inverse メソッドが理解できない。法のビットを利用しているみたい。理解できないのは本質を掴んでいないから、演繹が働かないからだろう。「冪剰余#さらなる最適化 - Wikipedia」を実装してるのだろうか、雰囲気的に。

pow メソッドを使って実装された derive_inverse がコメントアウトして残されている。

 Ruby で冪乗余

試したら Ruby 2.5 には冪乗余が求められる Integer#pow メソッドが用意されていた。2.6 の「数値関連のメソッドを実際に定義しているクラス一覧」には載ってなかったんだよなあ。Ruby 1.9 時点では pow メソッドはなかった。AtCoder の 2.3 でもまだないかもしれない。

 方法色々

つらつら眺めてると、require 'matrix' して lup.solve で勝手に方程式を解いてもらえるとか、require 'openssl' すると mod_inverse が利用できるとか、知らない方法が色々あるもんだ。でも LUP 分解が解らなければ見ても使うべきときが判らないし、知っても使えない。『[単行本] 平岡 和幸, 堀 玄【プログラミングのための線形代数】 オーム社』は中座してるし、『[単行本] ロナルド・L. グレアム, オーレン パタシュニク, ドナルド・E. クヌース【コンピュータの数学】 共立出版』もちょっと眺めただけ。若いうちに学校で広く浅くでも詰め込んでおくべきなんだよ。基礎がないと何も積み上がらない。


2019年11月12日 (火) 「分母が大きい方が数を正確に表せるんだ(The bigger the denominator, the more exact)。分母は、その表示する目的を達成するために必要最小の数を選択するんだ(But you always use the lowest denominator that will do the job.)」。」■単位長さ(インチ)がまずあって、必要なだけ刻み目を刻んだあとで刻み目の数を数えるのか。へええ。それじゃあインチがあまり短すぎない方がいいかもね。■通分が弱みなのは間違いなさそう。全部のパーツがワンオフの特注品では工業化を妨げて戦争にも負けて、そんなのはアメリカじゃない。■空気圧が計れる空気入れがあって、その目盛りが「空気圧ゲージの表示はpsi/kPaからbar/kPaに順次変更されます」という状態なんだけど、bar と kPa はゼロの数が2つ違うだけ。bar を使うと必ず空気圧が小数で表されることになる。これがどちらも馬鹿馬鹿しいと思うんだ。小学生でもできる計算に対照表はいらないし、常用域が小数になる単位もいらない。なんで psi 表記をなくして bar に直すのかと、アメリカ人的感性で(ほんまか?)一言言いたい。


2019年11月11日 (月)

最終更新: 2020-08-27T19:59+0900

[AtCoder] 第二回全国統一プログラミング王決定戦予選 - AtCoderC 問題 - Swaps

解けなかった。まだ解けていない。考慮すべきが漏れてるのか、何か思い違いがあるのか。

とりあえず、完全に並べ替えても題意を満たせないケースに No を返してみた。該当(AC)1件>https://atcoder.jp/contests/nikkei2019-2-qual/submissions/8356932

 N-2 回の交換

N-1 回の交換だと N 要素の A 数列を完全に思い通りに並べ替えられると思った。ぎりぎり1回足りないのが N-2 回なのかな、と。

ぎりぎり1回足りない条件とは?

A 数列のすべての要素があるべき位置から外れた状態にあり、A 数列のすべての要素が数珠つなぎに位置を交換している、だと思った。

 1. A 数列のすべての要素にあるべき位置が存在する(B 数列にあって対応する要素が1つだけしか存在しない)とは

ソート済みの A 数列のどの隣接要素を入れ替えても題意を満たせなくなることだと思った。

逆の例は、B 数列に重複する値が存在する場合や、B 数列の最小要素以下の要素が A 数列に複数ある場合など。その場合は A 数列に区別が不要な要素が存在するということであり、交換回数を節約できてしまう気がした。

 2. A 数列のすべての要素が数珠つなぎに位置を交換しているとは

これもそうではない例を考えると、A 数列が k 要素と N-k 要素の2グループに分かれて位置を交換している場合が該当する。k 要素をあるべき位置に並べ替えるのに k-1 回の交換を要し、N-k 要素を並べ替えるのに N-k-1 回の交換を要するのだから、計 N-2 回の交換で A 数列のすべての要素があるべき位置に納まってしまう。

だから A 数列のすべての要素が唯一のグループを作って位置を交換していなければいけない。その場合に最大 N-1 回の交換を要する。

というのをコードにして提出したのだけど、WA が半分>https://atcoder.jp/contests/nikkei2019-2-qual/submissions/8366469。答えが二択なんだから惜しくもない。わっかんねーなー。

続く……


2019年11月09日 (土) Googleが2段階認証の仕様を変更、キャリアメールアドレスへの送信が不可に | スラド モバイル」■本題とは直接関係ないんだけど、スマホが唯一のデバイスであるなら、二段階認証になにほどの意味があるだろうかという疑問がある。自分は PC が基本だからセカンドデバイスとして携帯電話で受信する SMS に意味があるけども(とはいえ送ってくるのは GitHub だけだ)。■■■自己解決。一段階目はデバイスの関与(記憶されたパスワード)は必ずしも必要なくて、むしろ無関係な方が普通で、漏れたパスワードリストなんかを使った不正アクセスが二段階認証で防げる。


2019年11月07日 (木) [C++] ムーブセマンティクスと右辺値参照。未だによくわからないけどちょっとヒントになりそうなことに気がついた(気がする)。題材は自分も答えが欲しかったこの疑問。「誰も疑問を呈していないことに自分は疑問なのですが、push_back と emplace_back にトレードオフの関係はないのですか? emplace_back に利点しかないのだとしたら、そもそも関数が分けられずにライブラリ側の push_back 自体の実装が効率の良いものに置き換わるだけで済んだように自分は想像しましたが……。関数が分かれている以上は何かしら使い分けしてほしい意図(ライブラリ側の意図)ががあるものではないのですか?」■よくわからない理由に、右辺値というものの見え方がプログラマとコンパイラの間で180度変わることがあるんじゃないかと思った。最初にそこを区別せずに、右辺値があーだムーブがこーだという文章を読んでも、それぞれが矛盾することを書いているように感じられるのではないか。■右辺値というのはこれまで一時オブジェクト、書き込みできない値、プログラマの制御下にない値だった。ムーブセマンティクスをプログラマが表現できることになり、右辺値でないものを右辺値であるとマークできるようになった。それはプログラマにとって、値に対する制御を手放すという意思表示である。ちょうどコピーした auto_ptr が所有権を手放すがごとく。■コンパイラから見ると従来の右辺値と右辺値であるとマークされた値は、自身が破壊のタイミングを握っている(渡された)、制御下にある値である。■最初の疑問に戻る。emplace_back(push_back のムーブ版だと思ってるけど実は知らない)を使用することは、プログラマに引数となった値に対する制御を手放すことを要求するので、プログラマ自身が意図を込めて選ぶべきものになっているのだと思う。■push_back にムーブ版のオーバーロードを追加することもできたと思うんだけど、できないんだろうか、できるけどやらない方がいいという判断なのだろうか。それはどういう? オーバーロードがあれば T v; c.push_back(move(v)) みたいなコードを書いて呼び分けることになったと思う。■たぶん std::move って書いても書かなくても同じな場面が多くあると思う。ムーブしてきた値を受け取る側からしても、&& と書いたからといって特別な何かが必ず期待できるわけではないらしいし。俺は煩わしいからできるだけ書きたくないし、書いた方がちょっとだけ嬉しい場面でも書かずに済ませたいクチ。■コンストラクタと代入演算子がムーブとコピーがオーバーロードされる例か。かつての auto_ptr の所有権移転コードのようなものを書くみたい。うっかりリソースを共有した状態にすると二重解放の罠。auto_ptr と違ってちょっとわかりにくいのは、値に対して所有権を持っていないというのがどういう状態か想像しにくいこと。ポインタであれば値が NULL であるとか、値はあっても弱参照でありいつまでデリファレンスできるか不明であるとかが想定されるのだけど。■おべんきょ。「C++のムーブと完全転送を知る - Fixstars Tech Blog /proc/cpuinfo」「メイドでもよく分る右辺値参照 - TXT.TXT」■git もだいぶ時間がかかったけど(ものぐさなだけとも言う)、だいぶ煮詰まってきたんじゃないだろうか。かつての C++ In-Depth シリーズのような本が読めないのが残念でならない。そういう研究が必要ないというのなら、C++ が言語として進化したのではなく単に充実しただけであるということ。進化がないのも研究書が読めないのもどちらも不満。■ムーブってついつい一時オブジェクトの省略(※コピーや移動の終着地点に最初から一度だけオブジェクトを構築して済ませてしまう)と結び付けて効率化の手段だと考えてしまうけど、プログラマが書いたムーブコンストラクタが実行されるなら、それはコピーコンストラクタが実行されるのと変わりがないのでは? 利点があるとすればメンバとして保持する外部リソース(ヒープメモリ、ハンドルなど)の確保が省略できる、奪い取って間に合わせられるという点にしかないのでは?■俺は auto_ptr が大好きだし、その制約も喜んで受け入れるし、Rust のメモリ管理も好きだけど(「Rustは何が新しいのか(基本的な言語機能の紹介) - いもす研 (imos laboratory)」)、ムーブは面倒くさいなあ。これまで通りコンパイラの最適化に期待するだけにして、面倒は避けたい、必要に迫られるまでは。