Codeforcesに初参加してみた。解法はわかってみれば簡単なのだけど、思いつくのは難しい。筋道を読むと読みやすいコードを書けるのだけど、試行錯誤では自分にもわかりにくいコードになってしまう。書き始める前によく分析するのが大事なんだろうな。

業務で偏微分方程式を解く必要があり、土日と勉強していた。「科学技術計算のためのPython入門」は前から持っていたが、読み返してみるとやはり良い本らしい。前提知識が薄くよく読めていなかったが、今読むと2章は参考になる。先の利便を考えると今のうちにより良いコードの書き方を身に付けたいな。

あまり食材を使ったスープを作った。好評だったのでメモ。

  1. 生もずくを水洗いし食べやすく切る。ネギと白菜を刻む。ブナシメジを割く。
  2. 卵を溶き、片栗粉小さじ1.5を水に溶いておく。
  3. ごま油を鍋に熱し、もずく以外の野菜・キノコを炒める。油が馴染んで具がくったりしたら水を加える。今回は700 mL。
  4. 水溶き片栗粉、醤油小さじ1、丸鷄がらスープの素大さじ1.5投入。
  5. 適当なところで火を止め、溶き卵を投入

コショウやラー油をかけて食べると美味。丸鷄がらスープの素を使って失敗したことがない。便利すぎ。

Jupyter Notebookからドキュメント作成を試みた話

業務で得られたデータや測定について、定期的に第三者が見てある程度わかる形で提出する必要があり、これまでは主にMS Officeを使ってpdf化することが多かった。しかしこれでは、一旦解析により得られたデータを画像化し、それを貼り付けるような作業が発生するため多少手間が増える。また解析に用いたコードや操作の履歴などは別ファイルに残すか、それなりに面倒な手間をかけてWordなどに貼り付ける必要があり不便だった。解析からドキュメントの作成までを全てJupyter Notebookで完結しようとしてみたところ、素晴らしく作業が簡略化された。

解析コードに加えMarkdown形式のノートを追加し、そのままドキュメントとした。Notebookをpdf化するために、LaTeX形式で一旦出力した。PandocはMarkdownTeXやHTMLをはじめとする様々な形式のファイルを相互に変換してくれる。
github.com
僕の環境ではAnacondaが勝手に最初からPandocを入れてくれていたようだが、実際の作業においては、こちらのページが大変参考になった。
jupyter notebookをTex,PDFへと変換 - 粗大メモ置き場

環境によってはpdfの出力がうまくいかず、1/3日ほどはまった。dviドライバの都合のようであり、一旦.texを書き出してコードをいじる必要がある。dviドライバとしてdvipdfmxを使用する必要があり、¥usepackageコマンドのオプションにこれを含める必要がある。しかしpandocが吐き出す.texは人間が読むようにはできておらず、どのパッケージにオプションをつけたら良いかわからないのだ。これには解決法と言えるほどのものではないが、¥documentclassのところに角カッコで[dvipdfmx]などとつけておけば勝手に判断してくれるようだ。
一旦.texを経由するのには利点があり、例えばMarkdownで指定した画像ファイルなどはなぜか出力された.texファイルには含まれていない。これを手動で加えるついでにやればそれほどの手間ではない。

結果的にこの試みは非常にうまくいき、提出ドキュメント作成の省力化、作業コードの記録化、包括化などいいことづくめだった。

再勉強の必要性を感じて、LaTeXの本を買った。

[改訂第7版]LaTeX2ε美文書作成入門

[改訂第7版]LaTeX2ε美文書作成入門

読むたびに感動がある。良い買い物だ。

atcoder.jp
土日のコンテスト×2のおかげで、ようやく緑になれました。ここのところ開始時間にご飯を食べていたり外出したりしていたおかげで、時間通り開始すること自体、珍しかったのですが今週はどちらも定刻にスタートできました。
難しい問題を解けているわけではない弱さがあるので、もう少し鍛錬してみたいですね。

atcoder.jp

Cまでできた。dfsするとき訪問済みをブール配列で管理すりゃいいものを、ペアつくってvectorに放り込みfindで判定とかいうわけのわからんことをしたために3回TLEを出し、正答を見つけるまでに時間を無駄にした。でも結果には満足。

テレビで風の谷のナウシカを見かけた。懐かしい思いがしたので、思わずコミック版を引っ張り出して眺めていた。前読んだときはそれほど強く感じられたが、いまではこの話は虚無主義への反対表明なのかと感じられてきた。ナウシカは古代人から与えられた運命を受け入れなかった。生命がそれ自体として尊敬の対象であるというのは、宮崎駿の大前提であるように読めた。以前テレビ番組で、遺伝的アルゴリズムを使って生成した移動体にたいして宮崎駿が激怒したのが話題になったことがあったけれど、それもうなづける。

今日は周期表を眺めていて、メダルでお馴染みの金・銀・銅はいずれも原子番号素数であることに気づいてしまった(それぞれ原子番号79, 47, 29)。偶々なのだろうけど、気づくと少し嬉しくなる事実。あとはV, Nb, Taのラインも素数が続いている。残念ながら、現在見つかっている元素を並べた周期表において族の全てが素数になるような列は存在しない。
金銀銅の原子番号が必要って時に限ってすぐに思い出せないみなさんは、是非試してください!