ソースコード
import java.awt.Point;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.IntStream;
public class Main{
static Scanner s=new Scanner(System.in);
static IntStream REPS(int v){return IntStream.range(0,v);}
static IntStream REPS(int l,int r){return IntStream.rangeClosed(l,r);}
static IntStream INS(int n) {return REPS(n).map(i->getInt());}
static int getInt(){return Integer.parseInt(s.next());}
public static void main(String[]$){
char[][]b=REPS(8).mapToObj(i->s.next().toCharArray()).toArray(char[][]::new);
char me=getInt()==0?'b':'w';
char op=me =='w'?'b':'w';
int x=0,y=0;
{
char[]p=s.next().toCharArray();
x=p[0]-'A';
y=p[1]-'1';
}
b[y][x]=me;
ArrayList<Point> p=new ArrayList<>(),buf=new ArrayList<>();
{
boolean f=false;
buf.clear();
int xx=x,yy=y;
while(true) {
++xx;++yy;
if(!izryt(yy,xx)||b[yy][xx]=='-')
break;
if(b[yy][xx]==me) {
f=true;
break;
}
buf.add(new Point(xx,yy));
}
if(f)
p.addAll(buf);
}
{
boolean f=false;
buf.clear();
int xx=x,yy=y;
while(true) {
++xx;--yy;
if(!izryt(yy,xx)||b[yy][xx]=='-')
break;
if(b[yy][xx]==me) {
f=true;
break;
}
buf.add(new Point(xx,yy));
}
if(f)
p.addAll(buf);
}
{
boolean f=false;
buf.clear();
int xx=x,yy=y;
while(true) {
--xx;++yy;
if(!izryt(yy,xx)||b[yy][xx]=='-')
break;
if(b[yy][xx]==me) {
f=true;
break;
}
buf.add(new Point(xx,yy));
}
if(f)
p.addAll(buf);
}
{
boolean f=false;
buf.clear();
int xx=x,yy=y;
while(true) {
--xx;--yy;
if(!izryt(yy,xx)||b[yy][xx]=='-')
break;
if(b[yy][xx]==me) {
f=true;
break;
}
buf.add(new Point(xx,yy));
}
if(f)
p.addAll(buf);
}
{
boolean f=false;
buf.clear();
int xx=x,yy=y;
while(true) {
++xx;
if(!izryt(yy,xx)||b[yy][xx]=='-')
break;
if(b[yy][xx]==me) {
f=true;
break;
}
buf.add(new Point(xx,yy));
}
if(f)
p.addAll(buf);
}
{
boolean f=false;
buf.clear();
int xx=x,yy=y;
while(true) {
--xx;
if(!izryt(yy,xx)||b[yy][xx]=='-')
break;
if(b[yy][xx]==me) {
f=true;
break;
}
buf.add(new Point(xx,yy));
}
if(f)
p.addAll(buf);
}
{
boolean f=false;
buf.clear();
int xx=x,yy=y;
while(true) {
++yy;
if(!izryt(yy,xx)||b[yy][xx]=='-')
break;
if(b[yy][xx]==me) {
f=true;
break;
}
buf.add(new Point(xx,yy));
}
if(f)
p.addAll(buf);
}
{
boolean f=false;
buf.clear();
int xx=x,yy=y;
while(true) {
--yy;
if(!izryt(yy,xx)||b[yy][xx]=='-')
break;
if(b[yy][xx]==me) {
f=true;
break;
}
buf.add(new Point(xx,yy));
}
if(f)
p.addAll(buf);
}
p.forEach(o->b[o.y][o.x]=me);
Arrays.stream(b).map(String::valueOf).forEach(System.out::println);
}
static boolean izryt(int y,int x) {
return 0<=y&&y<8&&0<=x&&x<8;
}
}