蓝桥杯之二阶魔方旋转

2024-03-02 01:38
文章标签 蓝桥 旋转 二阶 魔方

本文主要是介绍蓝桥杯之二阶魔方旋转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/* 二阶魔方旋转
魔方可以对它的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
则应该输出:
红白绿


package 魔方;import java.util.Scanner;  public class Exe1 {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]);  }  // 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];  //bug:za[1] = xa[1];za[0] = xa[3];  // 修改x的前后面   xa[2] = zf2;  //bug  :xa[1] = 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];  //bug:  xa[1] = ya[3];// 修改y的前后面   yf[0] = xa2;  //bug:yf[0] = xa1;  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;  }  
} 

这篇关于蓝桥杯之二阶魔方旋转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/764525

相关文章

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

KLayout ------ 旋转物体90度并做平移

KLayout ------ 旋转创建的物体 正文 正文 前段时间,有个小伙伴留言问我,KLayout 中如何旋转自己创建的物体,这里特来说明一下。 import pyapoly = pya.DPolygon([pya.DPoint(0, 0), pya.DPoint(0, 5), pya

剑指offer(C++)--左旋转字符串

题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! class Solution {public:string LeftRotateStri

洛谷 P10584 [蓝桥杯 2024 国 A] 数学题(整除分块+杜教筛)

题目 思路来源 登录 - Luogu Spilopelia 题解 参考了两篇洛谷题解,第一篇能得出这个式子,第二篇有比较严格的复杂度分析 结合去年蓝桥杯洛谷P9238,基本就能得出这题的正确做法 代码 #include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<map>#include<uno

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

初始化数据 */ private void initData(Bundle savedInstanceState) { if (savedInstanceState != null) mDatas = savedInstanceState.getStringArrayList(“mDatas”); if (mDatas == null) { mLoadingDialog = new

微策略面试题:在旋转后的数组中查找元素(二分查找)

版权所有。所有权利保留。 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123303 一个无重复元素的有序数组,经过若干次旋转后,得到一个新数组。比如[1,4,5,8,10,12,56,78]变成[12,56,78,1,4,5,8,10]。 现在要在这个数组中寻找元素。 其实算法很简单,就是用二分

YIA主题侧边栏如何添加3D旋转标签云?

WordPress站点侧边栏默认的标签云排版很一般,而3D旋转标签云就比较酷炫了。下面boke112百科就以YIA主题为例,跟大家说一说如何将默认的标签云修改成3D旋转标签云,具体步骤如下: 1、点此下载3d标签云文件(密码:2917),解压后将3d.js文件上传到/wp-content/themes/yia/assets/js/文件夹内。 2、编辑YIA主题的footer.php文件,在</

QGraphicsItem 的函数 itemChange 缩放和旋转无信号发出

如果在使用 QGraphicsItem 的 itemChange 函数时,发现缩放和旋转没有信号发出,可能是因为以下几个原因: 未设置正确的标志:确保你已经设置了 QGraphicsItem::ItemSendsGeometryChanges 标志。这个标志告诉 QGraphicsItem 在几何形状发生变化时发送通知。如果没有设置这个标志,即使发生了缩放或旋转,也不会有相应的信号发出。未正确重

掌握数据魔方:Xinstall引领ASA全链路数据归因新纪元

一、引言 在数字化时代,数据是App推广和运营的核心驱动力。然而,如何准确获取、分析并应用这些数据,却成为了许多开发者和营销人员面临的痛点。Xinstall作为一款专业的App全渠道统计服务商,致力于提供精准、高效的数据解决方案,助力广大开发者和营销人员打破数据壁垒,实现业务增长。 二、ASA全链路数据归因:洞察广告效果,优化运营策略 在App推广过程中,广告效果的评估至关重要。Xinst

2013年蓝桥杯试题解析(一)

1.猜年龄       美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。   一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:  “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”  请你推算一下,他当时到底有多年轻。