题目链接:1835:宇航员

描述

问题描述:
  宇航员在太空中迷失了方向,在他的起始位置现在建立一个虚拟xyz坐标系,称为绝对坐标系,宇航员正面的方向为x轴正方向,头顶方向为z轴正方向,则宇航员的初始状态如下图所示:

现对六个方向分别标号,x,y,z正方向分别为0,1,2,负方向分别为3,4,5;称它们为绝对方向。宇航员在宇宙中只沿着与绝对坐标系xyz轴平行的方向行走,但是他不知道自己当前绝对坐标和自己面向的绝对方向。

任务描述:
  请根据宇航员对自己在相对方向上移动的描述确定宇航员最终的绝对坐标和面向的绝对方向。对在相对方向上移动的描述及意义如下:
forward x  向前走x米。
back x 先转向后,再走x米。
left x 先转向左,再走x米。
right x 先转向右,再走x米。
up x 先面向上,再走x米。
down x 先面向下,再走x米。
其中向上和向下如下图所示:

输入

第一行一个正整数m,表示测试数据的组数。每组测试数据第一行是一个正整数n(1<=n<=10000)表示宇航员行走的次数,下面n行每行输入一次相对行走,格式如上所述,其中( 1 <= x <= 10000 为正整数)。

输出

对于每组输入数据输出一行,x y z p, 中间用空格隔开,x y z是宇航员的位置的绝对坐标,p是宇航员面向的绝对方向编号(0<=p <=5)。

样例输入

1
6
left 10
right 11
up 12
down 13
forward 14
back 15

样例输出

23 -10 12 3

题目解析:这道题要完成的是对人的行动进行一个模拟,对于宇航员的描述可以分为五个要素(x,y,z)位置的三个数,宇航员的头顶方向定义为:head,宇航员的正面朝向定义为:face。每次移动都是先对head和face的操作之后再移动, forward 不需要改变head/face,back的head不变,face掉转一下即可,通过数字的关系得出:face=(face+3)%6 ;对于left/right转向时候,head不变,face的改变直接用二维数组存起来。对于up,face变成head,head就变成了face的反向。对于down,head变成face方向,face变成head的反方向,不过在编程时,要注意要把要先更改的变量存储起来。

方向更改之后,在face方向上进行增加。最终对于相对的两个方向进行相减,得出最终位置。

题目代码:java

package com.kyc;import java.util.Scanner;public class Main_1835 {public static void main(String[] args) {Scanner input =new Scanner (System.in);int [][]  l={{6,5,1,6,2,4},{2,6,3,5,6,0},{4,0,6,1,3,6},{6,2,4,6,5,1},{5,6,0,2,6,3},{1,3,6,4,0,6}};int m=input.nextInt();while (m>0){int head=2,face=0;int [] faces={0,0,0,0,0,0};int n=input.nextInt();while (n>0){n=n-1;String dirc=input.next();int num=input.nextInt();switch(dirc){case "forward":break;case "back":face=(face+3)%6;break;case "left":face=l[head][face];break;case "right":face=l[face][head];break;case "up":int tem_face=face;face=head;head=(tem_face+3)%6;break;case "down":int tem_face2=face;face=(head+3)%6;head=tem_face2;break;}faces[face]+=num;      }m=m-1;int x=faces[0]-faces[3];int y=faces[1]-faces[4];int z=faces[2]-faces[5];System.out.println(x+" "+y+" "+z+" "+face);}}
}

解题代码:python

l=((6,5,1,6,2,4),(2,6,3,5,6,0),(4,0,6,1,3,6),(6,2,4,6,5,1),(5,6,0,2,6,3),(1,3,6,4,0,6))
m=int(input())
while m>0:head=2face=0faces=[0,0,0,0,0,0]n=int(input())while n>0:n=n-1str=input().split()dirc=str[0]num=int(str[1])if dirc=='forward':c=1elif dirc=='back':face=(face+3)%6elif dirc=='left':face=l[head][face]elif dirc=='right':face=l[face][head]elif dirc=='up':tem_face=faceface=headhead=(tem_face+3)%6else :tem_face=faceface=(head+3)%6head=tem_facefaces[face]+=numm=m-1x=faces[0]-faces[3]y=faces[1]-faces[4]z=faces[2]-faces[5]print (x,y,z,face)

百练OJ:1835:宇航员相关推荐

  1. 威佐夫博弈:百练OJ:1067:取石子游戏

    威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...

  2. 百练OJ:4003:十六进制转十进制(python三行代码实现)

    题目链接:百练OJ:4003 描述 将十六进制数转换成十进制数 输入 第一行有一个整数T,表示共有T组数据 接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前 ...

  3. 百练OJ:2742:统计字符数

    题目链接: 百练OJ:2742:统计字符数 描述:判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多 输入:第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的 ...

  4. java函数实现进制转换与java实现八进制到十进制的转换(百练OJ:2735:八进制到十进制)

    java进制转换函数介绍:Java二进制.八进制.十进制.十六进制相互转换: 二进制转十进制 Integer.parseInt("0110", 2); 八进制转十进制 Intege ...

  5. 百练OJ:2973:Skew数

    题目链接: 百练OJ:2973:Skew数 描述:在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1). 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, ...

  6. 程序员多久才能在北京买房子?百练OJ:4022:买房子

    百练OJ:4022:买房子 题目链接:4022:买房子 描述 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年 ...

  7. 百练OJ:4147:汉诺塔问题(Hanoi)——python实现汉诺塔

    一.汉诺塔问题 有三根杆子A,B,C.A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小.要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘: 大盘不能叠在小盘上面. 提示:可将圆盘 ...

  8. 百练OJ:1013:Counterfeit Dollar(假币)

    题目描述 Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are true sil ...

  9. 百练OJ:4150:上机

    描述 又到周末了,同学们陆陆续续开开心心的来到机房上机.jbr也不例外,但是他到的有点晚,发现有些机位上已经有同学正在做题,有些机位还空着.细心的jbr发现,一位同学来到机房,坐在机位i上,如果他的左 ...

最新文章

  1. Redis与DB数据同步问题
  2. torch div优化
  3. 使用 NodeJS + Express 從 GET/POST Request 取值 -摘自网络
  4. 如何提升测试环境的稳定性?来看看阿里内部的实践总结
  5. Android中利用productFlavors配置多渠道
  6. Linux pwn入门教程,i春秋linux_pwn入门教程复现之栈溢出基础
  7. js模块的封装(-)
  8. php api接口怎么写,php如何写api接口?
  9. 流媒体之RTMP——librtmp拉流测试
  10. Visual Studio Code (VS Code)安装教程(配图超详细)
  11. [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
  12. 人工智能AI学习路线01-AI概念
  13. fama french-3 模型个人理解
  14. Excel2013表格使用厘米为单位设置行高和列宽
  15. twitter开源_30位开源社区经理将在Twitter上关注
  16. Python中的args和kwargs
  17. 去掉txt文件内的换行符
  18. 仿淘宝电商网站管理系统前端静态页面(html+jquery+css)(含毕业设计论文及源码)
  19. python 进阶第五关 进阶任务_Python 进阶
  20. 《终身成长》樊登读书会

热门文章

  1. 【黑马程序员 C++教程从0到1入门编程】【笔记3】C++核心编程(内存分区模型、引用、函数提高)
  2. 为什么python中不需要变量名和变量类型声明?
  3. python 什么是上下文管理器(ContextManager)?
  4. python File write()方法
  5. python 如何将字符串数字列表转换成数字列表,如何将数字列表转换成字符串数字列表?map(eval,list(str))
  6. 运行scrapy shell 'http://quotes.toscrape.com'出现错误ValueError: invalid hostname: 'http
  7. 生命周期 用户可以操作dom_React 生命周期的打怪升级之路
  8. Netty ObjectPool对象池技术原理分析
  9. wprintf显示中文
  10. 如果政府强制开发linux应用,Linux开发环境及应用-中国大学mooc-题库零氪