トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.82 市松模様
■■■問題■■■
幅Wと高さHと左上の色が指定されるので市松模様を描け。
市松模様は、黒と白が交互に現れる模様である。
模様は黒を'B'、白を'W'を使って描くものとする。
■■■入力■■■
W H C
幅Wと高さHと左上の色Cの3つの情報が与えられる。
W,Hは1以上50以下の整数。(1 <= W,H <= 50)
Cは'B'か'W'のどちらかである。
■■■出力■■■
市松模様を描け。最後の行にも改行を忘れずに。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input4";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("4 3 B");
//BWBW
//WBWB
//BWBW
//左上が黒'B'で幅が4、高さが3の市松模様が描けた
}
else if (InputPattern == "Input2") {
WillReturn.Add("3 4 W");
//WBW
//BWB
//WBW
//BWB
//左上が白'W'で幅が3、高さが4の市松模様が描けた
}
else if (InputPattern == "Input3") {
WillReturn.Add("1 1 W");
//W
//見た目として市松模様では無いが答えとしては正しいとする
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
string[] wkArr = InputList[0].Split(' ');
int W = int.Parse(wkArr[0]);
int H = int.Parse(wkArr[1]);
char C = char.Parse(wkArr[2]);
for (int Y = 0; Y <= H - 1; Y++) {
for (int X = 0; X <= W - 1; X++) {
bool IsEven = ((X + Y) % 2 == 0);
if (C == 'B') Console.Write(IsEven ? 'B' : 'W');
else Console.Write(IsEven ? 'W' : 'B');
}
Console.WriteLine();
}
}
}
解説
(0,0)からのマンハッタン距離で、
白色か黒色かを分岐させてます。