問題
非負整数の3 x 3の正方形グリッドを考えてください。各行i
の整数の合計はに設定されますr_i
。同様に、各列j
の整数の合計はに設定されますc_j
。
タスクは、行と列の合計の制約が与えられた場合の、グリッドへの可能なすべての整数の割り当てを列挙するコードを記述することです。コードは一度に1つの割り当てを出力する必要があります。
入力
コードは、行制約を指定する3つの非負整数と、列制約を指定する3つの非負整数を取る必要があります。これらは有効であると仮定できます。つまり、合計または行の制約が列の制約の合計に等しいと仮定できます。コードはこれを便利な方法で実行できます。
出力
コードは、計算したさまざまな2Dグリッドを、人間が読める形式で選択して出力する必要があります。もちろん、きれいなほうがいい。出力に重複したグリッドを含めることはできません。
例
すべての行と列の制約が正確で1
ある場合、6
異なる可能性のみがあります。最初の行について1
は、最初の3つの列のいずれかに入力できます。2番目の行については2
選択肢があり、最後の行は前の2つによって完全に決定されます。グリッド内の他のすべてはに設定する必要があります0
。
入力が2 1 0
行および列1 1 1
用であるとします。APLの美しい出力形式を使用すると、可能な整数グリッドは次のとおりです。
┌─────┬─────┬─────┐
│0 1 1│1 0 1│1 1 0│
│1 0 0│0 1 0│0 0 1│
│0 0 0│0 0 0│0 0 0│
└─────┴─────┴─────┘
ここで、入力1 2 3
は行と列3 2 1
に対するものであるとします。可能な整数グリッドは次のとおりです。
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│0 0 1│0 0 1│0 0 1│0 1 0│0 1 0│0 1 0│0 1 0│1 0 0│1 0 0│1 0 0│1 0 0│1 0 0│
│0 2 0│1 1 0│2 0 0│0 1 1│1 0 1│1 1 0│2 0 0│0 1 1│0 2 0│1 0 1│1 1 0│2 0 0│
│3 0 0│2 1 0│1 2 0│3 0 0│2 1 0│2 0 1│1 1 1│2 1 0│2 0 1│1 2 0│1 1 1│0 2 1│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘