博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二阶魔方旋转
阅读量:2073 次
发布时间:2019-04-29

本文共 2072 字,大约阅读时间需要 6 分钟。

魔方可以对它的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

则应该输出:

红白绿

请编程实现所述功能。

每次旋转有12个面发生变化

#include
#include
char map[27];void init(){ map[1]='a'; map[2]='a'; map[9]='a'; map[10]='a'; //绿  map[3]='b'; map[4]='b'; map[11]='b'; map[12]='b'; // 红  map[17]='c'; map[18]='c'; map[19]='c'; map[20]='c'; //白  map[21]='d';map[22]='d';map[23]='d';map[24]='d';//黄  map[7]='e';map[8]='e';map[15]='e';map[16]='e';//橙  map[13]='f';map[14]='f';map[5]='f';map[6]='f';//蓝 }void x(){ char s[12]; s[0]=map[16];s[1]=map[8];s[2]=map[19];s[3]=map[20];s[4]=map[3];s[5]=map[11];s[6]=map[24];s[7]=map[23]; s[8]=map[9];s[9]=map[1];s[10]=map[10];s[11]=map[2]; map[19]=s[0];map[20]=s[1];map[3]=s[2];map[11]=s[3];map[24]=s[4];map[23]=s[5];map[16]=s[6];map[8]=s[7]; map[1]=s[8];map[2]=s[9];map[9]=s[10];map[10]=s[11];}void y(){ char s[12]; s[0]=map[22];s[1]=map[24];s[2]=map[10];s[3]=map[2];s[4]=map[20];s[5]=map[18];s[6]=map[5];s[7]=map[13]; s[8]=map[11];s[9]=map[3];s[10]=map[4];s[11]=map[12]; map[10]=s[0];map[2]=s[1];map[20]=s[2];map[18]=s[3];map[5]=s[4];map[13]=s[5];map[22]=s[6];map[24]=s[7]; map[3]=s[8];map[4]=s[9];map[11]=s[10];map[12]=s[11];} void z(){ char s[12]; s[0]=map[6];s[1]=map[5];s[2]=map[4];s[3]=map[3];s[4]=map[2];s[5]=map[1];s[6]=map[8];s[7]=map[7]; s[8]=map[19];s[9]=map[17];s[10]=map[20];s[11]=map[18]; map[4]=s[0];map[3]=s[1];map[2]=s[2];map[1]=s[3];map[8]=s[4];map[7]=s[5];map[6]=s[6];map[5]=s[7]; map[17]=s[8];map[18]=s[9];map[19]=s[10];map[20]=s[11];}void show(char s){ switch (s){ case 'a': printf("绿"); break; case 'b': printf("红"); break; case 'c': printf("白"); break; case 'd': printf("黄"); break; case 'e': printf("橙"); break; case 'f': printf("蓝"); break; } }int main(){ init(); char s[1000]; int n; scanf("%s",s); n=strlen(s); for(int i=0;i

转载地址:http://fmtmf.baihongyu.com/

你可能感兴趣的文章
Linux Mysql 8.0.1
查看>>
Python pymqi 连接 IBM MQ
查看>>
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof 详解
查看>>
Java - JVM TLAB、对象在内存中安置顺序、垃圾收集、回收算法
查看>>
转: 关于Linux与JVM的内存关系分析
查看>>
(转)Java 程序员必备的高效 Intellij IDEA 插件
查看>>
局域网(内网)docker安装及代理访问
查看>>
软考 英语学习
查看>>
maven 文件上传到远程服务器目录
查看>>
shell 脚本免密远程访问
查看>>
Linux平台Oracle多个实例启动说明
查看>>
在LINUX平台上手动创建数据库(oracle 10g)(在一个oracle服务器上启动两个实例)
查看>>
Oracle 10g 下载地址
查看>>
Linux 下 新增Oracle10g 实例
查看>>
LRM-00123 ORA-01078
查看>>
ORA-01102: cannot mount database in EXCLUSIVE mode
查看>>
专栏结语
查看>>
BERT 实战
查看>>
BERT 基础
查看>>
什么是 Transformer
查看>>