いつものチームで出た。会話しながら作業していた。昨年に引き続き同じ6人チーム。確保したけど周辺施設がなにもない上にインターネットが貧弱*1で、温泉以外はいまいちだった。この経験を踏まえ、今年は利便性が高いところがいいという話をしていた。社会性を発揮してオフィスマネージャーと交渉し、コンテスト期間中に勤務先の一番大きい会議室が独占的に使用できることとなった。勤務先でハッカソンが行われたので睡眠調整を兼ねて徹夜。ハッカソンに飽きたチームメンバーと一緒にクソなぞなぞを解いていた。www.nazomap.com72問目を解いているときに、誰かが答えを思い浮かばず「マナリモって藻、存在しそうじゃない?」と苦し紛れに言ったのを聞いたぼくが即興ででたらめな設定*2を付け加えたところ結構ウケて、あとでチーム名として採用することとなった。そのまま提出してテストしようとするも、コンテスト開始3時間までは提出できずに怒られたりした。アプリを立てることにした。メイドインアビスからツール名を取ることにし、管理アプリをナナチと命名。2015年に書いた響のコードをコピペして必要な改修を加えていった*3。分業してこれを実装した。ナナチに登録したデータがすぐに反映されないという問題が発生。強引に解決するなどした。終了したので一旦帰って寝た。後処理で改善するというアイデアを得たのでこれをやることにした。ファイルで保存していたので、後処理器に食わせるためにチーム内で使用しているアセンブラフォーマットに戻すツールを書いた。ファイルを生成した他のソルバーのデバッグに役立った。終わった頃からナナチが頻繁に死ぬようになる。使ってすべての問題に対してソルバーをぶん回してナナチに提出する機能を作ったのだが、これを使うと何問か提出したところでナナチが止まってしまう。一応再起動すると治るので、死ぬたびに再起動で生き返らせていた。こっちの名前をミーティにしておけばよかったと少し後悔する。ファイルをバイナリブロブとして突っ込んでいることやらが怪しいのではないかとなり、治してもらった。することになったのでちょっと面白かった。使うインフラは意外と負荷がかかるので、動けばいいという気持ちでやるのはあんまりよくないっぽい。ボンドルド後処理器その1にボンドルドと命名。命令を1つ前のwaitと交換するのを貪欲に繰り返し、すべてがwaitだけになったターンをスキップすることで圧縮を図る。シヴァと組み合わせてハロワボンドルド・スシコラボンドルド・シヴァ神ボンドルドというソルバーにするなどしてチームの成果物に組み込まれた。プルシュカボンドルドは一定の成功を収めたものの、生成された出力を見ると順番を入れ替えられないばかりに長々と待たされている状況があることに気がついた。っぽい手法を考案した。チェックをサボるために入れた雑な条件。これを実装してボンドルドを過去にするぜ、と息巻くも実行すると途中でエリア外に出る命令を実行しようとしたり、実行できる命令がなくなったりしていまう不具合に遭遇した。エリア外に入れるやつはどうも移動命令の順番を入れ替えるのが悪いっぽく、同じボット内での移動命令どうしに順序制約を入れると治ったが、最初の目論見である移動の大胆な最適化が予想以上に難しいことを示しており動揺した。実行できる命令がなくなってしまうのは、よく調べてみるとどうもデッドロックらしいことが明らかになった。命令を構えている場合、どちらかを先に実行することはできない。らしさと絶望を感じた。どちらかを邪魔にならない場所にどかすよう命令を追加するという雑な方法で回避するアルゴリズムを実装したが、これのバグは取り切れず、バグを踏まなくてもこれによって最適化の結果ターン数がかえって長くなってしまう現象などが発生し、この時点で完全に心が折れてプルシュカの方針は諦めることにした*4。コンテストの残り時間はボンドルドの改良に費やしたり唯一神の訃報に驚いたりしていた。苦労をかけたし、プルシュカは投入した時間に見合う成果ではなかったのが残念。ライブラリが作れるのではないかとちょっと思ったりした。宿題プルシュカの方針は実現可能なのか。デッドロックを依存グラフから検出できるか。現れないのでどうなんだという感じ。コネクションの動作やブロブの扱い方を学ぶ。manarimo月別アーカイブはてなブログをはじめよう!pepsin-amylaseさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。