public class T42 {
//用一位数组存储棋盘状态,棋盘左边界LEFT,右边界RIGHT,棋盘中间 位置MID
//棋盘中各有黑子和白字 COUNT个
static final int LEFT=0,RIGHT=6,MID=(LEFT+RIGHT)/2;
static final int COUNT=3;
static int[] s={1,1,1,2,0,0,0};
static String[] name={"白","黑"," "};
//输出棋盘状态
public static void out(int[] s)
{
for(int i=0;i<s.length ;i++)
System.out.print(name[s[i]]);
System.out.println();
}
public static void main(String[] args)
{
int temp;
out(s);
for(int i=MID-1;i>=0;i--)
{
int position=i;
//i位置黑子移动到所有白子右边
for(int j=0;j<COUNT;j++)
{
//position位置黑子与position+1位置空格换位
temp=s[position];s[position]=s[position+1];s[position+1]=temp;
out(s);
//position位置空格与position+2位置白字换位
temp=s[position];s[position]=s[position+2];s[position+2]=temp;
out(s);
position++;
}
//i位置黑子移动到其目标位置
temp=s[position];s[position]=s[position+1];s[position+1]=temp;
out(s);
//如果是最后一个黑子,白子不需要回退
if(i==0) break;
//count个白子退回到右端
for(int j=0;j<COUNT;j++)
{
temp=s[position];s[position]=s[position-1];s[position-1]=temp;
out(s);
position--;
}
}
}
}