このチャレンジはされて完全に食い物に大きく触発され た全ての光 Soulgitゲームによって開発されました、。
チャレンジ
あなたは電気技師であり、すべてのライトをバッテリーに接続するのはあなたの仕事です。
- ライトとバッテリーは格子状に配置されています。
- ライトまたはバッテリーを、その北、南、東、および西の最も近いライトまたはバッテリーに接続できます。
- バッテリーにはいくつでも接続できます。
- 各ライトは、必要な接続数を指定します。そのライトと正確に同じ数の接続を行う必要があります。
- 2つのライト(またはライトとバッテリー)間の単一接続または二重接続を作成できます。
- ワイヤーは交差できません。
- 各ライトからバッテリーへのパスが必要です。
- 少なくとも1つの有効なソリューションが存在することが保証されています。
バッテリーと各ライトの位置、および各ライトに必要な接続の数が与えられたら、これらのプロパティを認めるそれらの間の接続を出力します。
勝利条件
これはcode-golfであるため、各言語で最も短いコードが優先されます。
テストケース
I / Oは通常どおり柔軟です。
入力には、ライト用の正の整数、空白用のゼロ、およびバッテリー用の-1を格納するグリッドのサイズの2D配列を使用します。別の良い選択としては、ライトのリストがあります。ライトは、ライトの位置と必要な接続の数を含むタプルです。
出力には、接続のリストを使用します。接続は、開始位置と終了位置を含むタプルです。接続が2倍になった場合、リストに2つあります(別のオプションは、このパラメーターをタプルに含めることです)。別の良いオプションは、ある種のグリッドレイアウトです。
座標系を使用している場合は、開始インデックスとインデックス元を指定できます。私の例は0からインデックス付けされ、左上隅(行、列)として(0、0)を使用します。(私は{}を単に別のタイプの区切り文字を導入するために使用しているので、セットであるためではなく、読みやすくなっています。)
テストケースのグラフィカルビューを次に示します。テスト1〜12
テスト1:
[-1 | 0 | 1 ] => [{(0, 0), (0, 2)}]
テスト2:
[-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 0), (0, 2)}]
テスト3:
[-1 ]
[ 0 ] => [{(0, 0), (2, 0)), ((0, 0), (2, 0)}]
[ 2 ]
テスト4:
[ 1 | 0 |-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 2), (0, 4)}, {(0, 2), (0, 4)}]
テスト5:
[ 2 ]
[ 0 ]
[-1 ] => [{(0, 0), (2, 0)}, {(0, 0), (2, 0)}, {(2, 0), (4, 0)}]
[ 0 ]
[ 1 ]
テスト6:
[ 1 | 0 | 0 ]
[ 0 | 0 | 0 ] => [{(0, 0), (2, 0)}, {(2, 0), (2, 2)}]
[ 2 | 0 |-1 ]
テスト7:
[ 4 | 0 | 0 |-1 ]
[ 0 | 0 | 0 | 0 ] => [{(0, 0), (0, 3)}, {(0, 0), (0, 3)},
[ 2 | 0 | 0 | 0 ] {(0, 0), (3, 0)}, {(0, 0), (3, 0)}]
テスト8:
[ 2 | 0 |-1 | 0 | 2 ] [{(0, 0), (0, 2)}, {(0, 0), (0, 2)},
[ 0 | 0 | 0 | 0 | 0 ] => {(0, 2), (0, 4)}, {(0, 2), (0, 4)},
[ 0 | 0 | 1 | 0 | 0 ] {(0, 2), (2, 2)}]
テスト9:
[ 0 | 0 | 2 | 0 | 0 ]
[ 0 | 0 | 0 | 0 | 0 ]
[ 1 | 0 |-1 | 0 | 1 ] => [{(0, 2), (2, 2)}, {(0, 2), (2, 2)}, {(2, 0), (2, 2)},
[ 0 | 0 | 0 | 0 | 0 ] {(4, 2), (2, 2)}, {(2, 4), (2, 2)}, {(2, 4), (2, 2)}]
[ 0 | 0 | 2 | 0 | 0 ]
テスト10:
[-1 | 2 | 3 | 2 ] => [{(0, 0), (0, 3)}, {(0, 0), (0, 3)},
{(0, 0), (0, 3)}, {(0, 0), (0, 3)}]
テスト11:
[-1 | 0 | 0 | 0 ]
[ 3 | 0 | 0 | 0 ]
[ 3 | 0 | 0 | 3 ] => [{(0, 0), (1, 0)}, {(1, 0), (2, 0)}, {(1, 0), (2, 0)},
[ 0 | 0 | 0 | 0 ] {(2, 0), (2, 3)}, {(2, 3), (4, 3)}, {(2, 3), (4, 3)}]
[ 0 | 0 | 0 | 2 ]
テスト12:
[ 2 | 0 | 0 ] [{(0, 0), (1, 0)}, {(0, 0), (1, 0)}, {(1, 0), (1, 1)},
[ 3 |-1 | 0 ] => {(1, 1), (2, 1)}, {(1, 1), (2, 1)}, {(2, 0), (2, 1)},
[ 2 | 5 | 1 ] {(2, 0), (2, 1)}, {(2, 1), (2, 2)}]
[1 | -1] [1 1]。