华为OD机试:转骰子

【转骰子】 已支持(Java & JS & Python & C & C++),实现:逻辑模拟 阅读详情

标题:转骰子 | 时间限制:1 秒 | 内存限制:262144K | 语言限制:不限

骰子是一个立方体,每个面一个数字,初始为左 1,右 2,前 3(观察者方向),后 4,上 5, 下 6,用 123456 表示这个状态,放置到平面上,可以向左翻转(用 L 表示向左翻转 1 次), 可以向右翻转(用 R 表示向右翻转 1 次),可以向前翻转(用 F 表示向前翻转 1 次),可以向 后翻转(用 B 表示向后翻转 1 次),可以逆时针旋转(用 A 表示逆时针旋转 90 度),可以顺 时针旋转(用 C 表示顺时针旋转 90 度),现从 123456 这个初始状态开始,根据输入的动作 序列,计算得到最终的状态。

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

输入描述:

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

输出描述:

输出最终状态

示例 1

输入 LR

输出 123456

说明

骰子先向左翻转,再向右翻转回来,故还是原来的状态 123456

示例 2

输入 FCR

输出 342156

说明

骰子向前翻转,状态变为 125643,再顺时针旋转,状态变为 651243,最后向右翻转,状态 变为 342156

解题思路:原始状态123456,根据规则分类处理LRFBAC之后的状态,根据输入调用对应方法即可

public class Test3 {

    public static void main(String[] args) {
        String str = "FCR";

        int[] dice = {1,2,3,4,5,6};
        for (int i=0;i<str.length();i++){
            if (str.charAt(i) == 'L'){
                dice = turnL(dice);
            }else if (str.charAt(i) == 'R'){
                dice = turnR(dice);
            }else if (str.charAt(i) == 'F'){
                dice = turnF(dice);
            }else if (str.charAt(i) == 'B'){
                dice = turnB(dice);
            }else if (str.charAt(i) == 'A'){
                dice = turnA(dice);
            }else if (str.charAt(i) == 'C'){
                dice = turnC(dice);
            }
        }

        for (int i=0;i<dice.length;i++){
            System.out.print(dice[i]);
        }
    }

    //123456->563421
    public static int[] turnL(int[] dice){
        int[] trun = new int[6];
        trun[0] = dice[4];
        trun[1] = dice[5];
        trun[2] = dice[2];
        trun[3] = dice[3];
        trun[4] = dice[1];
        trun[5] = dice[0];
        return trun;
    }
    //123456->653412
    public static int[] turnR(int[] dice){
        int[] trun = new int[6];
        trun[0] = dice[5];
        trun[1] = dice[4];
        trun[2] = dice[2];
        trun[3] = dice[3];
        trun[4] = dice[0];
        trun[5] = dice[1];
        return trun;
    }
    //123456->125643
    public static int[] turnF(int[] dice){
        int[] trun = new int[6];
        trun[0] = dice[0];
        trun[1] = dice[1];
        trun[2] = dice[4];
        trun[3] = dice[5];
        trun[4] = dice[3];
        trun[5] = dice[2];
        return trun;
    }
    //123456->126534
    public static int[] turnB(int[] dice){
        int[] trun = new int[6];
        trun[0] = dice[0];
        trun[1] = dice[1];
        trun[2] = dice[5];
        trun[3] = dice[4];
        trun[4] = dice[2];
        trun[5] = dice[3];
        return trun;
    }
    //123456->431256
    public static int[] turnA(int[] dice){
        int[] trun = new int[6];
        trun[0] = dice[3];
        trun[1] = dice[2];
        trun[2] = dice[0];
        trun[3] = dice[1];
        trun[4] = dice[4];
        trun[5] = dice[5];
        return trun;
    }
    //123456->342156
    public static int[] turnC(int[] dice){
        int[] trun = new int[6];
        trun[0] = dice[2];
        trun[1] = dice[3];
        trun[2] = dice[1];
        trun[3] = dice[0];
        trun[4] = dice[4];
        trun[5] = dice[5];
        return trun;
    }
}

华为OD机试2024年E卷-转骰子[200分]( Java | Python3 | C++ | C语言 | JsNode | Go )实现100%通过率 骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,骰子向前翻转,状态变为125643,再顺时针旋转,状态变为651243,最后向右翻转,状态变为342156。现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。输入一行,为只包含LRFBAC的字母序列,最大长度为50,字母可重复。骰子先向左翻转,再向右翻转回来,故还是原来的状态123456。 阅读详情

相关推荐

华为od真题 旋转骰子

骰子是一个正方体,每个面有一个数字,初始为左1、右2、前3、后4、上5、下6,用123456表示这个状态,放置在平面上。LRFBAC现从123456这个初始状态开始,根据输入的动作序列,计算最终的状态。

weixin_54707168的博客 369

华为OD机试-转骰子(Java 2024 E卷 100分)

通过模拟立方体的翻转和旋转操作,我们可以有效地计算出最终的状态。这种方法在处理类似的状态转换问题时非常有用,尤其是在状态转换规则明确的情况下。

蓝墨の学习笔记 165

华为OD机试 - 转骰子(Java 2024 E卷 100分)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 1520

【华为OD机试真题 C++语言】362、转骰子 | 机试真题+思路参考+代码解析

>骰子是一个立方体,每个面一个数字,初始为左1,右2,前3 (观察者方向),后4,上5,下6,用123456表示这个状态,放置到平面上,可以向左翻转(用L表示向左翻转1次), 可以向右翻转(用R表示向右翻转1次),可以向前翻转 (用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。   骰子的初始状态和初始状态转动后的状态如图所

KJ.JK 1404

【华为机试真题 Python实现】转骰子【2022 Q1 Q2 |200分】

骰子是一个立方体,每个面一个数字,初始为左 1,右 2,前 3(观察者方向),后 4,上 5,下 6,用 123456 表示这个状态, 放置到平面上, 可以向左翻转(用 L表示向左翻转 1 次), 可以向右翻转(用 R 表示向右翻转 1 次), 可以向前翻转(用 F 表示向前翻转 1 次), 可以向后翻转(用 B 表示向后翻转 1 次), 可以逆时针旋转(用 A表示逆时针旋转 90 度), 可以顺时针旋转(用 C 表示顺时针旋转 90 度), 现从 123456 这个初始状态开始,根据输入的动作序列,计算得

3242

【华为OD机试】真题E卷-转骰子(Python)

骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。

u014481728的博客 713

最新华为OD机试真题——(E卷,200分) - 转骰子(python)

从初始状态"123456"开始,根据输入的动作序列,计算出骰子的最终状态。

qq_62634009的博客 1069

【华为OD机试】真题E卷-转骰子(Java)

骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。

u014481728的博客 839

【华为OD机试真题 Java语言】362、转骰子 | 机试真题+思路参考+代码解析

>骰子是一个立方体,每个面一个数字,初始为左1,右2,前3 (观察者方向),后4,上5,下6,用123456表示这个状态,放置到平面上,可以向左翻转(用L表示向左翻转1次), 可以向右翻转(用R表示向右翻转1次),可以向前翻转 (用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。   骰子的初始状态和初始状态转动后的状态如图所

KJ.JK 1417

【华为OD机试】真题E卷-转骰子(C++)

骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。

u014481728的博客 756

华为OD机考2025C卷 - 转骰子 (Java & Python& JS & C++ & C )

华为OD机考2025C卷 - 转骰子(OD上机考试2025年C卷)。提供在线OJ刷题。Java、C++、Python、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 169

【华为OD机试真题 C语言】362、转骰子 | 机试真题+思路参考+代码解析

骰子是一个立方体,每个面一个数字,初始为左1,右2,前3 (观察者方向),后4,上5,下6,用123456表示这个状态,放置到平面上,可以向左翻转(用L表示向左翻转1次), 可以向右翻转(用R表示向右翻转1次),可以向前翻转 (用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。   骰子的初始状态和初始状态转动后的状态如图所示

KJ.JK 1195

2026年华为od机试真题题库

OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)

面试高手的博客 19万+

华为OD机试面试宝典,JS题解大纲,200+题目等你来战

华为 OD 机试题清单(机试题库还在逐日更新) 直接在本页使用 Ctrl+F,输入题目名称就可以进行检索。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

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

华为 OD 机试题清单(机试题库还在逐日更新) 直接在本页使用 Ctrl+F,输入题目名称就可以进行检索。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

华为OD机试真题2022(JavaScript)

本栏有100+道算法题,并提供正确解法和解题思路。保证都是牛客上的华为机试真题,大概率会考到原题。大家有什么问题可以留言探讨和交流

weixin_40767375的博客 1万+

华为OD机试 - 旋转骰子(C 语言解题)【独家】

本期题目:旋转骰子 题目 骰子是一个正方体,每个面有一个数字,初始为左 1,右 2,前 3,后 4,上 5,下 6, 用 123456 表示这个状态,放置在平面上, 可以向左翻转(用 L 表示向左翻转 1 次); 可以向右翻转(用 R 表示向右翻转 1 次); 可以向前翻转(用 F 表示向前翻转 1 次); 可以向后翻转(用 B 表示向后翻转 1 次); 可以逆时针翻转(用 A 表示向逆时针翻转 1 次); 可以向顺时针翻转(用 C 表示向顺时针翻转 1 次); 现从 123456 这个初始状态开始,根据输

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 5959

【免费题库】华为OD机试 - 转骰子(Java & JS & Python & C & C++)

## 题目描述 骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上, 可以向左翻转(用L表示向左翻转1次), 可以向右翻转(用R表示向右翻转1次), 可以向前翻转(用F表示向前翻转1次), 可以向后翻转(用B表示向后翻转1次), 可以逆时针旋转(用A表示逆时针旋转90度), 可以顺时针旋转(用C表示顺时针旋转90度), 现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。 骰子的初始状态和初始状态转动后

m0_66793065的博客 4865
上一篇: DataBinding赋值本地图片src
下一篇: 华为OD机试:字符串转换
Ryfall
博客等级 码龄15年 30粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值