現在、N-Queensの問題を解決しようとしています。具体的には、8x8
ボードの8人の女王を対象としています。R:N-Queensに問題がある
最初の部分が問題です。最初は、クイーンが既に行列にあらかじめ割り当てられている場合に、その要素が安全かどうかを決定する関数"safe"
です。だから、:その後、
>chess.board <- matrix(data=0,8,8)
>chess.board[r,c] <- 1 #the r,c can be any row,column I choose
>chess.piece <- c(x,x) #the x,x could be for example two numbers that also represent a row and column
これは、次のようにセーフ機能を介して実行する必要があります。
>safe(chess.piece,chess.board)
私はこれにはいくつかの問題を抱えています。私は、チェスのピースから行列の行、列と対角線の合計は< 1
を返してTRUE
を返すか、> 0
より大きい場合はFALSE
を返さなければならないことを理解しています。
これまでのところ、私が持っている:
>safe <- function(a,b){
if((sum(b[a,])<1) & (sum(b[,a])<1))
{return(TRUE)
}else{
return(FALSE)
}
}
は、これは単に、行/列のためですが、それはTRUE
あるべきとき、これは時々FALSE
を返します。これは、チェスのピースがc(3,6)に設定され、マトリックス1が1,3に位置する場合などに発生します。それはチェスのピースから3を取り出し、それを誤った値のコラムに盛り込んでいるようです。なぜこれをやっているのですか?
次の部分は、チェスのピースの位置に基づいて、行列の対角線の合計をどのように合計したかです。これは本当に私を混乱させています。
私はかなり新しく、あなたの頭脳を選ぶことができるかどうか疑問に思っています。私は必ずしも直接的な解決策を望んでいませんが、正しい方向のいくつかのポインタが本当に私を助けてくれるでしょう。事前に
おかげで、Jim.S
ありがとうございました!本当に助けて!割り当てられたチェスピースから対角の和を見つける問題の解決法はありますか?本当にそれでも苦労して:) –