SHIGORBIRDMAN: Tak puristi by hlavně takovýhle věci nereprezentovali řetězcem, žeáno. Navíc on očividně nechce střídání barev na pozadí (ty se ostatně dají zjistit přes (x+y)%2), ale počáteční pozice kamenů. ;-)
Nějakým cyklem se to dá zařídit třeba zcela obecně takto:
const int INITIAL_PIECE_ROWS = 3;
const int ROWS = 8;
const int COLUMNS = 8;
for (int player = 0; player < 2; ++player)
{
for (int row = 0; row < INITIAL_PIECE_ROWS; ++row)
{
int realRow = player == 0 ? row : ROWS - row - 1;
for (int col = realRow % 2; col < COLUMNS; col += 2)
{
Console.WriteLine("Kámen hráče {0} na {1};{2}", player + 1, col, realRow);
}
}
}
Anebo by to mohlo fungovat i nějak takhle ;-)
var pieces = Enumerable.Range(0, ROWS)
.Where(row => row < INITIAL_PIECE_ROWS || row >= ROWS - INITIAL_PIECE_ROWS)
.Join(Enumerable.Range(0, COLS), _ => 0, _ => 0, (row, col) => new { Row = row, Col = col, Player = row >= INITIAL_PIECE_ROWS ? 2 : 1 } )
.Where(x => (x.Row + x.Col) % 2 == 0);