技術書典7で「アッカーマン関数の計算過程を表示する (その↑) / DDRの足運び最適化問題を解く」を頒布します
9/22に開催される技術書典7にて、
「アッカーマン関数の計算過程を表示する (その↑) / DDRの足運び最適化問題を解く」
というタイトルの本を頒布します。
物理本(+電子版)1,000円、電子版のみのカードを500円で頒布予定です。
どんな内容?
二部構成で、第一部は私、第二部はmaton(@automatonix)さんによる投稿です。
第一部「アッカーマン関数の計算過程を表示する (その↑) 」
アッカーマン関数を題材として巨大数や巨大なデータ処理に触れ、Rustによる"アッカーマン関数の計算過程プリンター"を作ります。
その過程で、再帰関数やメモリに乗らない出力と戦う方法(メモ化やスタック使用量の削減、データ構造の工夫)、Test Driven ApproachをRustで実践しつつ進める方法を見てゆきます。
今回は都合上1.5GB程度の出力となりますが、続編では様々な工夫によりTBクラスの出力を捌く予定です。
本書中にアイデアのいくつかを記載していますので、興味のある方はTBクラスに対応したプリンターを作ることも可能です。
第二部「DDRの足運び最適化問題を解く」
DDRの譜面に対して、最小コストの足運びを生成するという問題を解きます。
単純な全探索では候補が多すぎるため、コストの定式化とDPを使って現実的な時間での生成を可能にしています。
足運びに要するコストの算出には多くの要素が絡むため、今回のモデルでは考慮していない事項が存在します。
続編では、より複雑な要素やプレースタイルの違いを考慮したモデルを定式化し、足運びの自動生成を行う予定です。
嬉しいポイント
- 巨大なデータとの戦い方を学べる
- 再帰関数との戦い方を学べる
- Rustプロジェクトの進行、Test Driven Approachが実践できる
- アッカーマン関数の計算過程が(数GBなら)表示できるようになる
- 巨大数に詳しくなれる
- 実プロジェクトに対するDPの適用事例を知ることができる
- DDRの(機械的な)足運びを出力できるようになる
- DDRに詳しくなれる
- 小林銅蟲先生による表紙がキュート
先頭の画像
作者による自演感想
随分ニッチなジャンルに思えますが、蓋を開けてみるとソフトウェア開発を広範に扱った入門書です。
まずナイーブな実装から始め、出てきた課題を解決するために工夫をしてゆく流れに乗ることで、スムーズに再帰関数・メモリ溢れやDPとの戦い方を学べます。
また、Rustプロジェクトの進め方、Test Driven Approach、課題設定や定式化が示されており、実際のソフトウェア開発を進める上で必要となる要素が散りばめられています。
これらのトピックの題材となっている巨大数やDDRも解説が含まれ、興味が湧くこと請け合いです。
(東京都、直方体)
チェックのお願い
興味を持った方は、ぜひ「サークルをチェックリストに追加する」を押してください。
「当日行って買えばいいやー」と思うかもしれませんが、各サークルはこれ以外に当日の頒布数を予測する術が無いため、用意する数が少なすぎたり多すぎたりして悲しみが生まれます。
……とは言っても、今回は既にマスターアップしているため枚数は変えられませんが……。
次回に活かすため、ぜひご協力をお願いします。
当日は
3F い35C でお待ちしております。会場限定のおまけ本があるかも?
立ち読みエリアにも提出予定ですので、そちらで内容を確認することも可能です。
なんとか寝坊しないで辿り着きたいと思います!