イントロ
長いテーブルの端にある会議室に座っています。周りを見てみると、ティムクック、アップルの取締役会、スティーブジョブズの幽霊、ジャックドナギーが見えます。Appleがこの会議を呼び出したのは、Androidのロック画面がどれほどクールであるかを認識しており、それらを1アップにしたいからです。ゴーストスティーブが叫ぶように、部屋の誰もがあなたを見つめます。「助けてくれ、CodeGolf Man!あなたは私の唯一の希望です!」
問題
Androidのロック画面は3 x 3のドットグリッドで、1つのドットから次のドットに指をスワイプしてパスを作成することで接続できます。パスワードは、任意の数のドットを含む可能性のあるパスと見なされ、任意の数のドットを除外します。(実際の電話では、パスは少なくとも4ドットである必要があります。このチャレンジでは、その制限を無視してください。)Appleは、3 x 3グリッドを(M * N)/ 9であるM x Nグリッドに置き換える予定です倍良い!
ルール:
たとえば、1〜9の番号が付けられた3x3グリッドの場合:
1 2 3
4 5 6
7 8 9
有効なパスは次のとおりです。
1
3
7,2,3
1,5,9,2
1,8,6,5,4
4,2,3,5,6,7,8,9
5,9,6,4
そして、いくつかの無効なパスは次のとおりです。
1,3
1,9,5
7,5,4,7
4,6
入力は3つの数字になります。
(M,N,d)
ここで、グリッドはM x N、dはパスの長さです
1 <= M <= 16
1 <= N <= 16
1 <= d <= M * N
プログラムまたは関数には、コンマ区切りの文字列として入力が与えられ、その長さの可能なパスワードの数を返す必要があります。例えば:
Input: 2,2,1
Output: 4
Input: 2,2,2
Output: 12
Input: 7,4,1
Output: 28
標準コードのゴルフ規則が適用され、最短コードが勝ちます!
//If I've made a mistake or the rules are unclear, please correct me!
256!
、16 x 16グリッド上のドットのすべての順列のどれが有効なロック解除パターンを表すかを検証するプログラムを作成するのは簡単です。実際には、そのようなプログラムは決して終了しません。