有问题欢迎指正
思路:
问题描述
魔方可以对它的6个面自由旋转。
我们来操作一个2阶魔方,如图:
为了描述方便,我们为它建立了坐标系。
各个面的初始状态如下:
x轴正向:绿
x轴反向:蓝
y轴正向:红
y轴反向:橙
z轴正向:白
z轴反向:黄
假设我们规定,只能对该魔方进行3种操作。分别标记为:
x 表示在x轴正向做顺时针旋转
y 表示在y轴正向做顺时针旋转
z 表示在z轴正向做顺时针旋转
xyz 则表示顺序执行x,y,z 3个操作
题目的要求是:
用户从键盘输入一个串,表示操作序列。
程序输出:距离我们最近的那个小方块的3个面的颜色。
顺序是:x面,y面,z面。
输入输出用例
例如:在初始状态,应该输出:
绿红白
初始状态下,如果用户输入:
x
则应该输出:
绿白橙
初始状态下,如果用户输入:
zyx
则应该输出:
红白绿
package 蓝桥杯练习;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String a=in.nextLine();
int[] []mm= {
{1,1,1,1},//x正方向 绿色
{2,2,2,2},//y轴正方向 红色
{3,3,3,3},//y轴负方向 橙色
{4,4,4,4},//z轴正方向 白色
{5,5,5,5},//z轴负方向 黄色
{6,6,6,6}//x轴负方向 蓝色
};
char[] b=a.toCharArray();
for(int i=0;i<a.length();i++) {
int s1,s2;
if(b[i]=='x') {
s1=mm[1][0];
s2=mm[1][2];
mm[1][0]=mm[3][2];
mm[1][2]=mm[3][3];
mm[3][2]=mm[2][3];
mm[3][3]=mm[2][1];
mm[3][2]=mm[2][3];
mm[2][1]=mm[4][0];
mm[2][3]=mm[4][1];
mm[4][0]=s1;
mm[4][1]=s2;
}
else if(b[i]=='y'){
s1=mm[3][1];
s2=mm[3][3];
mm[3][1]=mm[0][1];
mm[3][3]=mm[0][3];
mm[0][1]=mm[4][1];
mm[0][3]=mm[4][3];
mm[4][1]=mm[5][1];
mm[4][3]=mm[5][3];
mm[5][1]=s1;
mm[5][3]=s2;
}
else {
s1=mm[0][0];
s2=mm[0][1];
mm[0][0]=mm[1][0];
mm[0][1]=mm[1][1];
mm[1][0]=mm[5][2];
mm[1][1]=mm[5][3];
mm[5][2]=mm[2][0];
mm[5][3]=mm[2][1];
mm[2][0]=s1;
mm[2][1]=s2;
}
}
shuchu(mm[0][1]);
shuchu(mm[1][0]);
shuchu(mm[3][3]);
//System.out.println();
}
static void shuchu(int t) {
switch(t) {
case 1:System.out.print("绿");break;
case 2:System.out.print("红");break;
case 3:System.out.print("橙");break;
case 4:System.out.print("白");break;
case 5:System.out.print("黄");break;
case 6:System.out.print("蓝");break;
}
}
}