読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.82 市松模様

問題はこちら
No.82 市松模様 - yukicoder

i行j列目について順番に見れば良い
'B'+'W'=153なので153から引くことでもう一方の文字に切り替えることができる

int main(){
	int a,b,c,i,j;
	scanf("%d%d ",&a,&b);c=getchar();
	for(j=0;j<b;j++){
		for(i=0;i<a;i++)putchar((j+i)%2?153-c:c);
		printf("\n");
	}
return 0;
}

2次元的ではなく1次元的に座標を見ることにする
更に'B' bitxor 21='W'を利用して1B短縮

b,c,i;main(a){for(scanf("%d%d %c",&a,&b,&c),a++;i++<b*a;)putchar(i%a?i/a+i%a&1?c:c^21:10);}

REにはならない。やっぱり基準がわからない
91B

16/06/16追記
現在地でBかWかを判定するのではなく、毎回入れ替えていって、行が変わるときには1行の長さによって戻したり戻さなかったりすれば良い
aの登場回数が減るので、a++せずに~aでやったほうが短くなる

b,c,i;main(a){for(scanf("%d%d %c",&a,&b,&c);b*~a+i++;c^=i%~a<1&a?0:21)putchar(i%~a?c:10);}

90B