package main
import "fmt";
func main(){
var chess Chess;
chess.solve(0);
chess.print();
}
type Chess struct {
queenPos [8]int;
}
func (chess * Chess) check(x int, y int) bool {
for i := 0; i < x; i++ {
//verticle
if chess.queenPos[i] == y{
return false;
}
diff := x - i;
if chess.queenPos[i] == y - diff {
return false;
}
if chess.queenPos[i] == y + diff {
return false;
}
}
return true;
}
func (chess * Chess) putQueen(x int, y int) {
chess.queenPos[x] = y;
}
func (chess * Chess) print(){
for i := 0; i < 8; i++ {
for j := 0; j < 8; j++ {
if chess.queenPos[i] == j{
fmt.Printf("Q");
} else {
fmt.Printf("-");
}
}
fmt.Printf("\n");
}
}
func (chess * Chess) solve(row int) bool{
if row >= 8 {
return true;
}
for i := 0; i < 8; i++ {
if chess.check(row, i) {
chess.putQueen(row, i);
if chess.solve(row + 1) {
return true;
}
}
}
return false;
}