トラック
/
Scala
Scala
/
演習
/
キラー数独ヘルパー
キラー数独ヘルパー

キラー数独ヘルパー

中級

説明

友人がキラー数独(ルールは後述)の解き方を学んでいるのですが、どの数字をケージに入れられるかの判断に苦戦しています。そこで、あるケージに対して有効な組み合わせをすべて挙げ、そのケージに影響する制約も示す小さなプログラムを書いて手伝ってほしいと頼まれました。

プログラムの出力を読みやすくするために、返される組み合わせは並べ替えておく必要があります。

キラー数独のルール

  • 標準的な数独のルールが適用されます。
  • ケージの中の数字は、ふつう点線で示されますが、その合計がケージの角に書かれた小さな数になります。
  • 数字は、1つのケージの中で1回しか使えません。

詳しい説明は、こちらのガイドで確認できます。

例1:組み合わせが1つしかないケージ

合計が7になる3桁のケージでは、有効な組み合わせは1つだけです。124。

  • 1 + 2 + 4 = 7
  • 合計が7になるほかの組み合わせ、たとえば232は、ケージの中で数字を繰り返さないというルールに反します。

数独のグリッドで、3つのキラーケージがグループとしてまとめられて示されています。
1つ目のキラーケージは、グリッドの左上隅にある3×3のボックスの中にあります。
そのボックスの中央の列がケージをなし、上から順に次のマスで構成されています。1つ目のマスには1と、ケージの合計が7であることを示す7のメモがあります。2つ目のマスには2、3つ目のマスには5が入っています。
数字は誤りを示すために赤く強調されています。
2つ目のキラーケージは、グリッド中央の3×3のボックスの中にあります。
そのボックスの中央の列がケージをなし、上から順に次のマスで構成されています。1つ目のマスには1と、ケージの合計が7であることを示す7のメモがあります。2つ目のマスには2、3つ目のマスには4が入っています。
このケージの数字はどれも強調されておらず、誤りはありません。
3つ目のキラーケージは、グリッド中央の3×3のボックスの外側の角に沿っています。
これは次の3つのマスで構成されています。ケージの左上のマスには、赤く強調された2と、ケージの合計7があります。
ケージの右上のマスには3が入っています。
ケージの右下のマスには、赤く強調された2が入っています。ほかのマスはすべて空です。

例2:組み合わせがいくつかあるケージ

合計が10になる2桁のケージでは、可能な組み合わせは4つあります。

  • 19
  • 28
  • 37
  • 46

数独のグリッドで、中央の列である5列目に8行分が埋まっているほかは、どのマスも空です。
隣り合う2行ずつがそれぞれキラーケージをなし、グループとしてまとめられて示されています。
上から順に、1つ目のグループは値が1のマスと、ケージの合計が10であることを示すメモがあるマス、値が9のマスです。
2つ目のグループは値が2のマスと10のメモがあるマス、値が8のマスです。
3つ目のグループは値が3のマスと10のメモがあるマス、値が7のマスです。
4つ目のグループは値が4のマスと10のメモがあるマス、値が6のマスです。
列の最後のマスは空です。

例3:制約のある、組み合わせがいくつかあるケージ

合計が10になる2桁のケージで、その列にすでに1と4が入っている場合、可能な組み合わせは2つあります。

  • 28
  • 37

標準的な数独のルールでは、列に1と4があるため、19と46は成り立ちません。

数独のグリッドで、中央の列である5列目に8行分が埋まっているほかは、どのマスも空です。
1行目には4が入り、2行目は空で、3行目には1が入っています。
1は誤りを示すために赤く強調されています。
列の最後の6行が、それぞれ2マスのキラーケージをなしています。
上から順に、1つ目のグループは値が2のマスと、ケージの合計が10であることを示すメモがあるマス、値が8のマスです。
2つ目のグループは値が3のマスと10のメモがあるマス、値が7のマスです。
3つ目のグループは赤く強調された値が1のマスと10のメモがあるマス、値が9のマスです。

自分で解いてみる

取り組みやすいキラー数独に挑戦してみたいなら、Cloverによるこちらのパズルを試してみてください。2021年6月21日にMark GoodliffeがCracking The Crypticで取り上げたものです。

キラー数独は、さまざまな難易度のものが多くの新聞のほか、数独アプリ、書籍、ウェブサイトでも見つかります。

クレジット

上のスクリーンショットは、Eric Foxによるパズル作成ツールであるF-Puzzles.comを使って作成しました。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Scala Exercism

キラー数独ヘルパーを始める準備はできましたか?

Exercismに登録すれば、95個の演習、そして本物の人間によるメンタリングとともに、Scalaを学んでマスターできます。すべて無料です。