魔方六面十字八个十字一直向一个面转

2832人阅读
java算法(133)
/* 二阶魔方旋转
魔方可以对它的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面。
例如:在初始状态,应该输出:
初始状态下,如果用户输入:
则应该输出:
初始状态下,如果用户输入:
则应该输出:
请编程实现所述功能。
import java.util.S
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.i++){
switch(c[i]){
case 'x': { // x旋转操作
xSpin(xf, yf, ya, zf, za);
case 'y': { // y旋转操作
ySpin(xf, xa, yf, zf, za);
case 'z': { // z旋转操作
zSpin(xf, xa, yf, ya, zf);
System.out.println(xf[1]+&&+yf[0]+&&+zf[2]);
}运行结果:输入关于xyz的字符串
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:770193次
积分:11248
积分:11248
排名:第810名
原创:354篇
转载:97篇
译文:14篇
评论:189条
(2)(1)(4)(3)(1)(6)(4)(2)(5)(7)(5)(17)(15)(14)(1)(5)(9)(8)(10)(10)(10)(3)(29)(7)(6)(5)(1)(3)(2)(13)(11)(1)(13)(16)(84)(19)(16)(4)(1)(20)(75)魔方转好了一个面 怎么转成6个面
魔方转好了一个面 怎么转成6个面 15
不区分大小写匿名
或许你到该网站就会找到答案: 这个网站不仅是视频教你CFOP法怎么玩,而且还是声音加视频的。讲解得很详细。F = front face 前面 B = back face 后面 R = right face 右面L = left face 左面 U = up face 上面 D = down face 下面以上面的表里的标记为例,F就代表前面顺时针转90°,F'代表前面逆时针转90°,R2代表右面转180°,就这么
简单,大家明白了吧。魔方不是一面面玩的,而是一层层的来完成的那么怎么玩六面呢,过程其实就是第一层,第二层,第三层!说起来简单,但是每一层都要经过一番旋转之后才能成形的,而且有点意思也可以说象魔术一样,当你完成一个过程的时候,扭其它地方会不影响你的前面所完成的那一层的,当然,这是有一定的公式或是叫口决的,有点兴奋了吧?来看看这每一层是怎么扭成的。第一层 (你要是这一层本来就懂的,请直接跳到第二层) 这第一层是非常重要的!可以这么说,你有能力完成一面,也就有能力完成六面了!只是方法问题,不会伤你太多脑细胞的。当然罗,你可能会说,完成一面我六岁的侄子也行呀。我说的一面稍稍有一点点伤你的脑细胞,我要求你完成的一面,周围的颜色要统一的。可能你以前也玩过没注意过这个问题,但今天你要做"高手"就必须要按这种方式来玩了,是不是难很多了?这样吧,先假设你现在拼的一面是黄色,先随便找一个颜色拼好,比如黄色还有一个中间色,然后找一个又有黄色又有蓝色还有一个其它色的角块(找到一个红色哦)拼好它,接着再找一个黄色又有红色的中心块再拼,然后同理一圈就完成啦。如果有一块黄色本来就在上面但颜色不对,换走它,找到对的那块直到拼成一圈。 怎么样了?练成一面的一行没有?好了就看 第二层 玩法:第二层为了看图方便,这里必须先讲一些英语符号,国际上别人的站也是用这种方式来标的,所以你学会这几个符号要是见到人家外国人的网页也可以看得懂怎么来扭了。我们现在假设魔方是定住的那么相对我们来说就分成了:前(F),后(B),左(L),右(R),上(U),下(D) 六个面Front = 前面Back = 后面Left = 左面Right = 右面Up =上面Down = 下面其中以上全是以顺时针 转一下,即转动90度角 如果是加了个单引号', 即表示反时针转动90度 如果加了个2,表示转动 两下 ,即转动180度, 其实在转动180度后, 无论是顺时针转动180或 反时针转动180度的结果 都是一样的。所以有时看 你顺手的方向自己选择正 还是反时针来转180度。 如果你在完成一行后,把魔方翻过来,让那一面在底,并把颜色扭到对准中心位置。你就会发现大概有两种这样的情况:解法一: U R U' R' U' F' U F解法二:(其实跟上面一样,只是方向相反) U' L' U L U F U' F'原理口决:远离目的一步,拆底下一粒,再装回底下一粒。 但是要是遇到了象这种情况你就随便用上面的一个方法把它换出来然后再转成上面的形状再来一次就可以了当然如果你是一个很有心学习的人,可以背下面这个比较长的公式直接把这个掉反来解法:F2 U2 R' F2 R U2 F U' FOK了吧? 那我们就进入第三层 第三层 一般会有如下三大种情况:我们现在的目标是: 十字!我们简称为, 点, 线, 折 解法你只要背熟一个公式!R' U' F' U F R 如果十字已经出现,我们现在先把它调到对齐中心色,当然,不一定一次就可以成功的,可能还需要换一下位置,换位置的公式很容易,这个公式是将左和前的棱相互交换RUR'U R U' U' R'很好,你的十字已经四面对齐了中心,接下来就是换角就可以了,换角这个时候用另一个公式L'RUR'U'LURU'R' L'RU'LUR'U'L'UL好了,现在到了最激动人心的时刻,最后完成时刻!请保持你脑子的冷静!先 L'RUR'U'LURU'R' 整个魔方转个U ,然后来个 L'RU'LUR'U'L'UL如果还没完成?别动,先把魔方转个U',继续刚才的步骤!L'RUR'U'LURU'R' 整个魔方转个U ,然后来个 L'RU'LUR'U'L'UL这次一定行!
谢谢采纳哦
建议你去魔方吧瞧瞧!
可以下载玩魔方的公式、图文、视频教程都有!还有很多高手的视频!
中央10频道的探索节目还介绍过!有各种各样的玩法!
还有4阶、12面体、蛇行等魔方呢!
第一步:我们先确定一下这个立体几何体各个面的叫法:把魔方放在桌面上,面向你的叫做前面;贴着桌子的叫底面;向天的叫顶面;在顶面或底面上作一个同颜色的十字,叫做顶面或底面十字。在运作过程中,底面永远是底面,不能更改。每一个面都有一个中心粒(四周不靠边),四个中粒(只有两个沔),四个角粒。先做底面十字:比如说,绿色为底,先把位于中心的绿色中心粒找到,再把四个绿色中粒找到,把这五个色块都旋到一个面上;整成一个绿色的十字,使绿色 红色的色块刚好位于红色中心粒和绿色中心粒之间。底面的十字就完成了,恭喜你!第二步,做腰带。也就是做中间的一层。这时候地面的角粒还没有搞好。在顶层和中层寻找相应的中粒,然后:将适当的中粒放在腰带正确的位置。听起来有点悬,做起来并不难,比如说,蓝和绿两个中心粒夹着一个不适当的中粒A,把A旋到顶层,旋转顶层把蓝绿中粒转到A的位置(程序叫replace),还原底面十字:一个中粒就搞定了。如此类推,把整个中层都搞定。第三步,做底层四角。还原魔方,就是把正确的粒子换到正确的位置而又不损坏已经正确的粒子。在电脑程序中,替换也是非常重要的概念,为什么要在管理专业网页之中插入玩具专题,除了放松一下神经以外,触类旁通是目的。可以说,完成魔方是智能化程序的课前餐。做好底层四角,要做好两个定位:第一,底层角位的需要:例如:黄蓝白;第二,定位符合要求的粒子在哪里?最后,把占地儿的角粒推向顶层,换之,再把换好了的角粒转回底层。这一步比较难,往往会发现已经搞好的腰带又被破坏了:你自己想一下,如何保持腰带的完整?第五步,你已经发现了,腰带必然被破坏,但是,每一次只会破坏一个腰带。因此,你可以在整腰带时,留一个缺口。就是说,反复破坏特定的一个位置,就可以保持其它三个腰带位置的完整。现在,请你检查一下,现在的情况是:底面完整、底边完整、腰带剩一个缺口。上面已经完成了基础步骤,是比较发挥你自己的想象力和灵活思维的阶段,下面的,就是严格按口诀来办的了。第六步,腰带补缺口诀我们来检查一下,现在的情况是,最下面的一层,无论是整个朝下的一面,边上的一圈,颜色都对齐了.很漂亮.中间的一层,除了一个角以外,也都整好了.首先,我们要确定应该放在这个缺口那块材料在哪里?有几种状态,要么在上层,要么就在哪里可是颜色反了,还有一个可能是已经都对好了.我们现在的任务是在整好这个缺口的同时,为顶层的角位调整做好准备.上述的三种情况,其实都可以转归为一种状态,就是在上层的状态.其他两种,你按下面的口诀做一次,就变成在上层的状态.我们先确定一下,位于顶层的填充粒有两个面,一面向上,一面向侧.好,我们旋转顶层,把填充粒的侧面颜色对准相同颜色的侧面中心粒.我们来决定填充粒左右两边的角粒的亲疏.只有一种颜色相同叫做疏,两种颜色相同叫做亲.例如, 白红绿和白红黄是亲,白红绿和白黄蓝是疏.我们看见缺口在左或在右边.无论缺口在那一边都一样,我们会发现和缺口有关的两面:有腰带中粒的一面B(正面) 和没有中粒的一面C.判定为亲:旋转顶层90度使对应中粒远离缺口;旋转C把缺口下面的角粒A推至顶层;旋转顶层把角粒A横移(左向右;右向左);旋转C还原底层;旋转上层把角粒A转回腰带缺口上方;旋转B把底层的角粒缺口移至顶层;旋转顶层对齐底面颜色;还原底层.判定为疏:旋转顶层90度使对应中粒远离缺口;旋转C把缺口下面的角粒A推至顶层;旋转顶层把角粒A推至远离自己;旋转C还原底层;旋转上层把角粒A推至远离自己;旋转B把底层的角粒缺口移至顶层;旋转顶层对齐底面颜色;还原底层. 第七步,面十字口诀先确定,面向你自己的面为B,向右的一面为C.C转逆90度;顶转逆90度,B转逆90度;顶转顺90度,B转顺90度,C转顺90度. 有时候需反复多次.必须确定顶层的各个顶粒都在相应的位置上,就是说,红蓝黄角粒对应着红蓝黄的中心粒.反复进行可达. 第八步,顶角原地旋转如果已经搞好顶层十字,而且角粒位置已经对好,就可以开始这一步了.注意,每一次四个角粒只有三个原地旋转,自己摸摸规律.C转顺90度,顶转顺90度,C转逆90度,顶转顺90度,C转顺90度,顶转180度还原底层.C转逆90度,顶转逆90度,C转顺90度,顶转逆90度,C转逆90度,顶转180度还原底层.这两套口诀各有适应症. 第九步,顶面中粒调整 完成啦!!!!现在,粗略看一下,好像已经完成了.但是,顶层的中粒往往还没有搞好.把第八步的两套口诀结合起来,可以影响顶层中粒的摆放位置,自己试一下就行了.

相关知识等待您来回答
模型玩具领域专家
& &SOGOU - 京ICP证050897号转魔方有没有八个角一起换的公式?即是首先转好六个面的十字,然后一起换八个角_百度知道
转魔方有没有八个角一起换的公式?即是首先转好六个面的十字,然后一起换八个角
我有更好的答案
你说的是角先吧有啊,是一种方法去魔方吧看看吧百度搜一下是个论坛很好很好的就是服务器太坑爹了
其他类似问题
为您推荐:
魔方的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁魔方顶层拼十字架,哪个面是F?我知道公式,就是不知道从哪面转.我只想知道是什么时候从哪面转,( 我知道F,L,R.
那朵花13467
任意也个面拿好 前面是F(也就是你面前的那个面)右边是R 左边是L 上边是U 下边是D 后边是B (F是顺时针,F'是逆时针) 然后就按公式转就行了
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 三阶魔方首面十字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信