私は10X10のボードを作成しなければなりません。また、5本の船はそれぞれ2,3,3,4,5の長さを持っています。船は互いに重ならないようにする必要があり、それらはグリッド(10x10)内になければならず、垂直または水平のいずれかにする必要があります。戦艦にはどのように船を置くことができますか?
私はこれまで2日間作業してきましたが、私がこれまでにできることは、10x10のボード上に水平に4本、オーバーラップする船の長さを2,3,4,5にしています。
私が執着している部分は以下の通りです: 1)私は船をグリッド内に置いていましたが、重なっています。 2)私は2,3,4,5の長さごとに4本の船を作ることができますが、3回を2回行うことはできません。 3)私は縦置きではなく横置きしかできません。私は船を垂直にするか、水平にするかをランダムにしたい。
だから私が書いたコードは以下の通りです:
{
matrix = zeros(10,10);
row = randi(size(matrix, 1),1,1); %row number
col = randi(size(matrix, 2),1,1); %column number
for i=2:5
while col(1,1)+i-1>10 % Checking if it is within grid
row = randi(size(matrix, 1),1,1); %row number
col = randi(size(matrix, 2),1,1); %column number
end
matrix(row,col:col+i-1)=i;
row = randi(size(matrix, 1),1,1); %row number
col = randi(size(matrix, 2),1,1); %column number
end
matrix
}
私はどんな解決策を考え出すことができませんでした。事前に助けていただきありがとうございます。
私の考えは次のとおりです:船がグリッド内にあるかどうかをチェック - >船が重なっているかどうかをチェック - >重複している場合は、新しい列と行を作る - >船がグリッド内にあるかチェック)。私はそれらの文をループに入れる方法を知らなかった – Matmaster