二阶魔方旋转 魔方可以对它的6个面自由旋转。 我们来操作一个2阶魔方(如图1所示):
Posted 中国风2012
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二阶魔方旋转 魔方可以对它的6个面自由旋转。 我们来操作一个2阶魔方(如图1所示):相关的知识,希望对你有一定的参考价值。
/* 二阶魔方旋转
魔方可以对它的6个面自由旋转。
我们来操作一个2阶魔方(如图1所示):
为了描述方便,我们为它建立了坐标系。
各个面的初始状态如下:
x轴正向:绿
x轴反向:蓝
y轴正向:红
y轴反向:橙
z轴正向:白
z轴反向:黄
假设我们规定,只能对该魔方进行3种操作。分别标记为:
x 表示在x轴正向做顺时针旋转
y 表示在y轴正向做顺时针旋转
z 表示在z轴正向做顺时针旋转
xyz 则表示顺序执行x,y,z 3个操作
题目的要求是:
从标准输入获得一个串,表示操作序列。
程序输出:距离我们最近的那个小方块的3个面的颜色。
顺序是:x面,y面,z面。
例如:在初始状态,应该输出:
绿红白
初始状态下,如果用户输入:
x
则应该输出:
绿白橙
初始状态下,如果用户输入:
zyx
则应该输出:
红白绿
请编程实现所述功能。
*/
import java.util.Scanner;
public class Demo06
// x旋转操作
public static void xSpin(char[] xf, char[] yf, char[] ya, char[] zf,
char[] za)
char yf0 = yf[0];
char yf2 = yf[2];
char ya0 = ya[0];
char ya2 = ya[2];
// 修改y的前后面
yf[0] = zf[0];
yf[2] = zf[2];
ya[0] = za[0];
ya[2] = za[2];
// 修改z的前后面
zf[0] = ya0;
zf[2] = ya2;
za[0] = yf0;
za[2] = yf2;
// 修改x前面
char xf0 = xf[0];
xf[0] = xf[2];
xf[2] = xf[3];
xf[3] = xf[1];
xf[1] = xf0;
// y旋转操作
public static void ySpin(char[] xf, char[] xa, char[] yf, char[] zf,
char[] za)
char zf2 = zf[2];
char zf3 = zf[3];
char za0 = za[0];
char za1 = za[1];
// 修改z的前后面
zf[2] = xf[3];
zf[3] = xf[1];
za[1] = xa[2];
za[0] = xa[3];
// 修改x的前后面
xa[2] = zf2;
xa[3] = zf3;
xf[1] = za0;
xf[3] = za1;
// 修改y前面
char yf0 = yf[0];
yf[0] = yf[2];
yf[2] = yf[3];
yf[3] = yf[1];
yf[1] = yf0;
// z旋转操作
public static void zSpin(char[] xf, char[] xa, char[] yf, char[] ya,
char[] zf)
char xf0 = xf[0];
char xf1 = xf[1];
char xa2 = xa[2];
char xa0 = xa[0];
// 修改x的前后面
xf[0] = yf[0];
xf[1] = yf[1];
xa[0] = ya[2];
xa[2] = ya[3];
// 修改y的前后面
yf[0] = xa2;
yf[1] = xa0;
ya[3] = xf0;
ya[2] = xf1;
// 修改z前面
char zf0 = zf[0];
zf[0] = zf[2];
zf[2] = zf[3];
zf[3] = zf[1];
zf[1] = zf0;
public static void main(String[] args)
char[] xf = '绿','绿','绿','绿'; // x前
char[] xa = '蓝','蓝','蓝','蓝'; // x后
char[] yf = '红','红','红','红'; // y前
char[] ya = '橙','橙','橙','橙'; // y后
char[] zf = '白','白','白','白'; // z前
char[] za = '黄','黄','黄','黄'; // z后
Scanner scan = new Scanner(System.in);
System.out.println("输入关于xyz的字符串");
String s = scan.nextLine();
char[] c = s.toCharArray(); // 输入的数据以每个字符来操作
for(int i=0;i<c.length;i++)
switch(c[i])
case 'x': // x旋转操作
xSpin(xf, yf, ya, zf, za);
break;
case 'y': // y旋转操作
ySpin(xf, xa, yf, zf, za);
break;
case 'z': // z旋转操作
zSpin(xf, xa, yf, ya, zf);
break;
System.out.println(xf[1]+""+yf[0]+""+zf[2]);
运行结果:
输入关于xyz的字符串
zyx
红白绿
以上是关于二阶魔方旋转 魔方可以对它的6个面自由旋转。 我们来操作一个2阶魔方(如图1所示):的主要内容,如果未能解决你的问题,请参考以下文章