42 SILICON VALLEY Piscine 2017にはRushと呼ばれるグループ・プロジェクトが含まれている。3つの課題のうちの一つが、数独(ナンプレ)を解くプログラムの作成だった。
分からなければインターネット検索し、それでも分からなければ人に聞け、というのが42の学習スタンスだ。数独の解析プログラムの実装は、私にとってはそれを追体験するための格好の題材だった。予定のない正月三が日に集中して取り組んでみた。
1月1日の朝6時に着手し、「簡単な」数独を解けるまでの実装に、2日の午後までを要した。「難しい」数独を解けるまでの実装が完了したのが、3日の14時ごろだった。
今回はいつもとは異なり、プログラムを紹介することを目的とした投稿ではない。サンプル・コードを掲載しているとはいえ、主に紹介するのは、数独が解けるまでの実装についての記録だ。海外Piscine受講者が日々の活動をブログへを投稿している。それと同じような雰囲気を意識している。
前回、「簡単な」数独が解けるまでの記録を投稿した。今回は「難しい」数独が解けるまでの記録だ。前回の投稿を前提として記述しており、必要とされる説明の一部には、前回の投稿でだけ言及しているものがある。読み進める前に、前回の投稿に目を通してほしい。
今回は、一から自分で考えた結果ではなく、とあるサイトの情報を参考に、自分なりに実装した結果をまとめている。サンプル・コードは私が書いたもので、参照サイトのものとは大きく異なるのだが、基本的なロジックは一緒だ。
いつも通り、サンプル・コードはPythonで記述した。Piscine受講生に配慮して、C言語的な記述になるよう配慮しているが、いつも以上に読みにくいのではないかと思う。理由は前回説明した。
- 準備
- 適切なロジックを理解する。
- 写経-ロジックを理解し、書き直す。繰り返して理解を深める。
- ハマり処
- 実行結果
- 参照
- テスト結果
- Piscine掲載の問題
- grid1指定の問題
- 難問
- サンプル・コード