using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static void Main()
{
var grid = CreateGrid(9, 15, 'o', 'x');
PrintGrid(grid);
}
private static void PrintGrid(char[,] grid)
{
for (var row = 0; row < grid.GetLength(0); row++)
{
for (var col = 0; col < grid.GetLength(1); col++)
{
Console.Write(grid[row, col]);
}
Console.WriteLine();
}
}
private static char[,] CreateGrid(int rows, int cols, char light, char dark)
{
var xo = Alternate(dark, light).Take(cols);
var ox = Alternate(light, dark).Take(cols);
var e = Alternate(xo, ox).SelectMany(c => c).GetEnumerator();
var grid = new char[rows, cols];
for (var row = 0; row < rows; row++)
{
for (var col = 0; col < cols; col++)
{
e.MoveNext();
grid[row, col] = e.Current;
}
}
return grid;
}
private static IEnumerable<T> Alternate<T>(T first, T second)
{
while (true)
{
yield return first;
yield return second;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkgICAgdmFyIGdyaWQgPSBDcmVhdGVHcmlkKDksIDE1LCAnbycsICd4Jyk7CgkgICAgUHJpbnRHcmlkKGdyaWQpOwoJfQoJCglwcml2YXRlIHN0YXRpYyB2b2lkIFByaW50R3JpZChjaGFyWyxdIGdyaWQpCgl7CgkgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgZ3JpZC5HZXRMZW5ndGgoMCk7IHJvdysrKQoJICAgIHsKCSAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgZ3JpZC5HZXRMZW5ndGgoMSk7IGNvbCsrKQoJICAgICAgICB7CgkgICAgICAgICAgICBDb25zb2xlLldyaXRlKGdyaWRbcm93LCBjb2xdKTsKCSAgICAgICAgfQoJICAgICAgICBDb25zb2xlLldyaXRlTGluZSgpOwoJICAgIH0KCX0KCQoJcHJpdmF0ZSBzdGF0aWMgY2hhclssXSBDcmVhdGVHcmlkKGludCByb3dzLCBpbnQgY29scywgY2hhciBsaWdodCwgY2hhciBkYXJrKQoJewoJICAgIHZhciB4byA9IEFsdGVybmF0ZShkYXJrLCBsaWdodCkuVGFrZShjb2xzKTsKCSAgICB2YXIgb3ggPSBBbHRlcm5hdGUobGlnaHQsIGRhcmspLlRha2UoY29scyk7CgkgICAgdmFyIGUgPSBBbHRlcm5hdGUoeG8sIG94KS5TZWxlY3RNYW55KGMgPT4gYykuR2V0RW51bWVyYXRvcigpOwoJICAgIAoJICAgIHZhciBncmlkID0gbmV3IGNoYXJbcm93cywgY29sc107CgkgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgcm93czsgcm93KyspCgkgICAgewoJICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBjb2xzOyBjb2wrKykKCSAgICAgICAgewoJICAgICAgICAgICAgZS5Nb3ZlTmV4dCgpOwoJICAgICAgICAgICAgZ3JpZFtyb3csIGNvbF0gPSBlLkN1cnJlbnQ7CgkgICAgICAgIH0KCSAgICB9CgkKCSAgICByZXR1cm4gZ3JpZDsKCX0KCQoJcHJpdmF0ZSBzdGF0aWMgSUVudW1lcmFibGU8VD4gQWx0ZXJuYXRlPFQ+KFQgZmlyc3QsIFQgc2Vjb25kKQoJewoJICAgIHdoaWxlICh0cnVlKQoJICAgIHsKCSAgICAgICAgeWllbGQgcmV0dXJuIGZpcnN0OwoJICAgICAgICB5aWVsZCByZXR1cm4gc2Vjb25kOwoJICAgIH0KCX0KfQ==