問題はこちら
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