この課題は、次のパズルに基づいています。セルにマークが付いn
たn
グリッドごとに与えられn
ます。あなたの仕事はn
、各部分n
が正確に1つのマークされたセルを含む正確なセルで構成される部分にグリッドを分割することです。
例
左側にパズルを、右側にその(ユニークな)ソリューションを示します。
チャレンジ
n
妥当な形式のゼロインデックス座標のセットが提供されます。
[(0,0), (0,3), (1,0), (1,1), (2,2)]
そして、あなたの仕事は、有効なパーティションを返すプログラムを作成することです(これも妥当な形式で)。
[
[(0,0), (0,1), (0,2), (1,2), (1,3)],
[(0,3), (0,4), (1,4), (2,4), (3,4)],
[(1,0), (2,0), (3,0), (4,0), (4,1)],
[(1,1), (2,1), (3,1), (3,2), (4,2)],
[(2,2), (2,3), (3,3), (4,3), (4,4)]
]
パズルに解決策がない場合、プログラムはエラーをスローするか空の解決策を返すことでそれを示す必要があります。
入出力の例
[(0,0)] => [[(0,0)]]
[(0,0), (1,1)] => [
[(0,0), (1,0)],
[(0,1), (1,1)]
]
[(0,0), (0,1), (1,0)] => [] (no solution)
[(0,0), (0,1), (0,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (1,1), (2,1)],
[(0,2), (1,2), (2,2)],
]
[(0,0), (0,2), (1,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (0,2), (1,1)],
[(1,2), (2,1), (2,2)],
]
得点
これはcode-golfなので、最短のコードが優先されます。
これは、Math Stack Exchangeの質問に触発されました。
—
ピーターカゲィ
@Arnauld、四角パズルのように見えます、「目的はグリッドを長方形と正方形のピースに分割することです」。この場合、そのような制約はありません。
—
ピーターカゲィ
混乱させて申し訳ありません。砂場のどこかに四角の挑戦があるかもしれないと思うか、多分私はある時点で自分で挑戦することを計画していた-確かに覚えていない。どちらにしても、一見同じことだと思いました。
—
アーナウルド
結果が2次元の座標配列であるのはなぜですか?そこで何が表現されているのか理解できません...配列のインデックスの2D配列にならないのですか?たとえば、行3、列2には、インデックス4の座標を持つパーティションが含まれていますか?
—
オリビエグレゴワール
例が示すように、参照座標から開始して各領域を描画できると仮定できますか?私は無意識のうちにこれを当たり前だと思っていることに気付いた。
—
アーナウルド