题目描述

骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,

  • 可以向左翻转(用L表示向左翻转1次),
  • 可以向右翻转(用R表示向右翻转1次),
  • 可以向前翻转(用F表示向前翻转1次),
  • 可以向后翻转(用B表示向后翻转1次),
  • 可以逆时针旋转(用A表示逆时针旋转90度),
  • 可以顺时针旋转(用C表示顺时针旋转90度),

现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。

骰子的初始状态和初始状态转动后的状态如图所示。

输入描述

输入一行,为只包含LRFBAC的字母序列,最大长度为50,字母可重复。

输出描述

输出最终状态

用例

输入 L R
输出 123456
说明
输入 F C R
输出 342156
说明

题目解析

本题感觉就是一道耗时题,考察细心程度的。具体的逻辑反而不是很难。

具体逻辑请看源码。

算法源码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.on("line", (line) => {const directives = line.split(" ");turnDice(directives);
});function turnDice(directives) {const dice = new Dice();directives.forEach((directive) => {switch (directive) {case "L":dice.turnL();break;case "R":dice.turnR();break;case "F":dice.turnF();break;case "B":dice.turnB();break;case "A":dice.turnA();break;case "C":dice.turnC();break;}});dice.print();
}class Dice {constructor() {this.left = 1;this.right = 2;this.front = 3;this.back = 4;this.top = 5;this.bottom = 6;}turnL() {// 前后不变,上变左,左变下,下变右,右变上let tmp = this.right;this.right = this.bottom;this.bottom = this.left;this.left = this.top;this.top = tmp;}turnR() {// 前后不变,上变右,右变下,下变左,左变上let tmp = this.left;this.left = this.bottom;this.bottom = this.right;this.right = this.top;this.top = tmp;}turnF() {// 左右不变,上变前,前变下,下变后,后变上let tmp = this.front;this.front = this.top;this.top = this.back;this.back = this.bottom;this.bottom = tmp;}turnB() {// 左右不变,前变上,上变后,后变下,下边前let tmp = this.top;this.top = this.front;this.front = this.bottom;this.bottom = this.back;this.back = tmp;}turnA() {// 上下不变, 前变右,右变后,后变左,左变前let tmp = this.right;this.right = this.front;this.front = this.left;this.left = this.back;this.back = tmp;}turnC() {// 上下不变, 右变前,前变左,左变后,后变右let tmp = this.front;this.front = this.right;this.right = this.back;this.back = this.left;this.left = tmp;}print() {let { left, right, front, back, top, bottom } = this;console.log(`${left}${right}${front}${back}${top}${bottom}`);}
}

华为OD机试 - 转骰子相关推荐

  1. 华为OD机试 - 最优资源分配(Python) | 机试题算法思路 【2023】

    最近更新的博客 华为OD机试 - 自动曝光(Python) | 机试题算法思路 [2023] 华为OD机试 - 双十一(Python) | 机试题算法思路 [2023] 华为OD机试 - 删除最少字符 ...

  2. 【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南

    本篇博客为大家系统全面的介绍华为 od 机试所有内容,其包括如下知识点. 华为 od 机试题目 华为 od 机试流程 华为 od 机试题型分析 华为 od 机试经验分享 华为 od 机试常见问题解答 ...

  3. 华为OD机试 - 员工出勤(Python) | 机试题算法思路 【2023】

    最近更新的博客 华为OD机试 - 自动曝光(Python) | 机试题算法思路 [2023] 华为OD机试 - 双十一(Python) | 机试题算法思路 [2023] 华为OD机试 - 删除最少字符 ...

  4. 华为OD机试真题2022(JAVA)

    华为机试题库已换 →→→ 华为OD机试2023B卷(JAVA&JS) 以下题目为旧版题库,供大家课外消遣 基础题: 序号 题目 分值 1 查找众数及中位数 100 2 出错的或电路 100 3 ...

  5. 【华为OD机试】-2023(A+B卷)真题【C++,JAVA,Python】

    考点分类:华为OD机试真题(2023)-考点分类 近期考题:华为OD机试 真题2023 Q1 (A卷) c++/python/java专栏:华为OD机试(Python,Java,C++)2023(A+ ...

  6. 用C++解决华为OD机试考题,是真的高效,真的强,来吧,清单奉上,祝你上岸

    华为OD机考大纲 其它语言版本 华为 OD 机试题清单(机试题库还在逐日更新) 详细大纲 其它语言版本 本目录为华为od机试JS题解目录,其它版本清单如下 ⭐️华为OD机考 Python https: ...

  7. 华为OD机试 - 最短耗时(C++) | 附带编码思路 【2023】

    刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高. 华为 OD 清单查看地址:https://blog.csdn.net/hihell/categor ...

  8. 华为OD机试真题大全完整目录

    华为OD机试真题大全完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:华为OD机试真题大全 数量:406篇博文(2023年5月16日截止) 更新时间至:2023年5月16日(后续加上去的博文,会每 ...

  9. 【华为OD机试真题 Python】判断字符串子序列

    前言:本专栏将持续更新华为OD机试题目,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你.关于OD机试流程.面经.面试指导等,如有任何疑问,欢迎联系我,wechat:steven ...

最新文章

  1. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 21 章 数据库角色_21.4. 删除角色
  2. javascript生成指定范围的随机整数
  3. WOC?老板让我从Word中复制出1000张图片?
  4. 前端学习(2890):如何短时间内实现v-for 模板编译321
  5. 作者:刘建楠(1963-),男,就职于中国石油庆阳石化公司
  6. JavaScript的理解记录(6)
  7. 厦门大学计算机学硕复试,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...
  8. (8)FPGA面试题触发器满足建立时间和保持时间的原因
  9. postman提交文件及get、post请求
  10. 说文解字 —— 拆字
  11. C++primer笔记之顺序容器
  12. 机器学习:matlab实现异常检测
  13. 高频JMeter软件测试面试题
  14. linux学习--体验免安装版本的linux
  15. 中国大陆身份证号码有效性验证
  16. 加百列丨浅谈大水面水产养殖的几个误区及对策
  17. Python ---太空射击游戏
  18. 外汇交易提醒 ,美元升势停不下来?
  19. ICC2 user guide(四)Routing and Postroute Optimization
  20. Qt 笔锋 毛笔 钢笔 蜡笔 4k流畅画笔 Demo

热门文章

  1. 2019 CCPC秦皇岛 J 题 MUV LUV EXTRA【KMP 求最小循环节】
  2. Node.js v13 window7
  3. UE4-(蓝图)实现昼夜交替
  4. 计算某年某月某日是星期几
  5. SSL漏洞 443端口 nginx 重新编译指定ssl版本
  6. python实现十进制转换成十六以内任意进制
  7. 思科服务器网关配置文件,对 Syslog 服务器与 Cisco IOS 网关的 CDR 登录配置
  8. C#学习系列之未经处理的异常1——System.IO.FileNotFoundException
  9. 何苦做游戏-- 一位网游制作人的成长故事
  10. java web开发房屋中介房屋出租信息网