骰子涂色(Cube painting, UVa 253)rust解法

news2024/11/20 15:29:27

输入两个骰子,判断二者是否等价。每个骰子用6个字母表示,如图4-7所示。
在这里插入图片描述例如rbgggr和rggbgr分别表示如图4-8所示的两个骰子。二者是等价的,因为图4-8(a)所示的骰子沿着竖直轴旋转90°之后就可以得到图4-8(b)所示的骰子。
在这里插入图片描述
样例:

rggbgr
rbgggr
same

解法:

use std::io;

/*
  1
3 2 4 5         1在顶上
  6

  2
3 6 4 1         2在顶上
  5

  3
5 6 2 1			3在顶上
  4

  4
2 6 5 1			4在顶上
  3

  5
4 6 3 1			5在顶上
  2

  6
3 5 4 2			6在顶上
  1

上面每种,都要沿竖轴旋转4次,所以一共24种情况
*/
fn main() {
    let mut buf = String::new();
    io::stdin().read_line(&mut buf).unwrap();
    let s = buf.trim().to_string();
    let mut buf = String::new();
    io::stdin().read_line(&mut buf).unwrap();
    let t = buf.trim().to_string();
    let orders = [
        [1, 2, 3, 4, 5, 6],
        [2, 6, 3, 4, 1, 5],
        [3, 6, 5, 2, 1, 4],
        [4, 6, 2, 5, 1, 3],
        [5, 6, 4, 3, 1, 2],
        [6, 5, 3, 4, 2, 1],
    ];
    for i in 0..6 {
        let mut order = orders[i];
        for _ in 0..4 {
            let mut newt = String::new();
            order = rotate(order);
            for j in 0..6 {
                let c = t.chars().nth(order[j] - 1).unwrap();
                newt.push(c);
            }
            if s == newt {
                println!("same");
                return;
            }
        }
    }
    println!("not same");
}
//沿着竖轴旋转
fn rotate(order: [usize; 6]) -> [usize; 6] {
    let mut neworder = order;
    neworder[2 - 1] = order[3 - 1];
    neworder[3 - 1] = order[5 - 1];
    neworder[4 - 1] = order[2 - 1];
    neworder[5 - 1] = order[4 - 1];
    return neworder;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1111930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

民宿管理系统应该怎么选择?民宿系统有哪些作用?

开民宿的朋友都知道,虽然民宿少则5-6间房,多则100-200间房,体量看起来不大,但是管理起来却需要费很多精力。房态最主要的有5种:在住、预定、待打扫、待入住、空房,假如是5间房,那就是25种房态&a…

Unity3D 拖拽赋值组件与通过Find赋值组件的优点与缺点详解

Unity3D是一款流行的游戏开发引擎,提供了丰富的功能和工具,使开发人员能够轻松创建高质量的游戏。在Unity3D中,我们经常需要通过拖拽赋值组件或通过Find赋值组件来实现不同对象之间的交互。本文将详细介绍这两种方法的优点和缺点,…

Systemverilog断言介绍(一)

3 Introduction to systemverilog assertions 为了利用形式验证(FV)的力量来证明设计的正确性,首先必须有一种表达您的设计是否正确的方式。最流行的方法是通过property来实现,使用SystemVerilog Assertions(SVA&#…

Halcon 3D相关案例分享

文章目录 一、预处理1、平滑滤波算子说明平滑效果图 二、检测1、外观缺陷检测算子说明缺陷检测效果图 2、点云边界框算子说明边界框效果图 3、平面度检测算子说明平面度效果图 三、量测1、高度测量算子说明测量效果图 2、体积测量算子说明测量效果图 四、配准1、根据模型配准算…

【算法|动态规划No.23】leetcode376. 摆动序列

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

doris operator部署Doris集群教程

doris operator部署Doris集群教程 前言部署流程 前言 kubernetes Operator是遵循kubernetes API和控制器模式,它主要用来封装运维业务逻辑的软件。它利用kubernetes的自定义资源定义(CRD)扩展API,并通过控制器模式监听资源对象&a…

CVPR 2018 基于累积注意力的视觉定位 Visual Grounding via Accumulated Attention 详解

Abstract: VG面临的主要挑战有3个:1 )查询的主要焦点是什么;2 )如何理解图像;3 )如何定位物体。 在本文中,我们将这些挑战形式化为三个注意力问题,并提出了一个累积注意力( A-ATT )机制来共同推理其中的挑战…

找不到msvcr120.dll无法执行代码?教你6种方法快速解决问题

在现代的计算机编程中,我们经常会遇到各种各样的问题。其中,“由于找不到msvcr120.dll无法执行代码”的问题是许多开发者都会遇到的一个常见难题。这个问题通常发生在我们试图运行使用Visual Studio 2013编译的程序时,因为msvcr120.dll是Micr…

【QT】QTreeWidget

新建项目 第一步:设置头标签 第二步:设置item 第三步:创建子item,挂载在顶层item下 完整代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::W…

Unity Animation--动画剪辑(动画游戏对象)

保存新的动画剪辑后,就可以开始添加关键帧了。 可以使用两种不同的方法为GameObject设置动画。 Unity“动画”窗口:“记录模式”和“预览模式”。 记录模式下的动画窗口 在记录模式下,当您移动,旋转或以其他方式修改动画GameOb…

2022年下半年 软件设计师 上午试卷(前21题)

以下关于RISC(精简指令集计算机)特点的叙述中,错误的是 (1) 。 (1) A. 对存储器操作进行限制,使控制简单化 B. 指令种类多,指令功能强 C. 设置大量通用寄存器 D. 选…

通讯网关软件027——利用CommGate X2OPCUA实现OPC UA访问MSSQL服务器

本文介绍利用CommGate X2OPCUA实现OPC UA访问MS SQL数据库。CommGate X2OPCUA是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现上位机通过OPC UA来获取MS SQL数据库的数据。 【解决方案】…

全栈开发 - 从 Vue 配置中解决 CORS 跨域问题(2分钟搞定)

目录 一、CORS 跨域问题解决 1.1、前言 1.2、解决办法 a)修改统一配置的 axios 实例 b)修改 config 文件夹下的 index.js 文件 c)完成 一、CORS 跨域问题解决 1.1、前言 如果你后端使用的是微服务项目,通过配置网关可以很好的…

GEE打开NASA-USDA增强型SMAP全球土壤水分数据(10KM,2015-2020)

NASA-USDA增强型SMAP全球土壤水分数据(10KM,2015-2020) 一、GEE登录 首先需要注册一个Goole账号 在该网站中注册 二、创建GEE项目 按照上面操作,注册完后会创建一个自己的GEE项目。(没有的话也可以从下面这个网站…

【网络】用代码讲解HTTP协议

http协议 前言正式开始HTTP协议URLURL格式中每个字段所代表的内容格式中每个字段的作用URL对于特殊符号的处理 HTTP格式快速构建http请求和响应的报文格式http requesthttp response 一些细节http demo web目录代码实现 HTTP请求方法表单GET和POST提交的区别其余方法 HTTP的状态…

什么是热阻?

电流流过导体时,在导体两端会产生电压差,这个电压差除以流过导体的电流就是这个导体的电阻,单位是欧姆。这就是欧姆定律,大家都知道的东西。 当热源的热量在物体中传递时,在物体上也会产生温度差,这个温度差…

面对DDoS和APT攻击,我们该如何有效防御?

关于DDoS(Distributed Denial of Service)分布式拒绝服务攻击,是指攻击者通过技术手段,在很短的时间内对目标攻击网站发出大量请求,极大地消耗相关网站的主机资源,导致其无法正常服务。 打个比方来说&#…

Ubuntu系统上传文件的多种方法-断网上传-安装包上传-物联网开发维护

一、背景 在全新的Ubuntu系统中,其实是无法执行ifconfig命令的,因为这需要net-tools才能执行。在某些无法连接到外网的情况下,我们常常通过将安装包上传或发送到Ubuntu系统中,解压并安装,以保证相关指令能够执行。 本文…

梯度下降算法(Gradient Descent)

GD 梯度下降法的含义是通过当前点的梯度(偏导数)的反方向寻找到新的迭代点,并从当前点移动到新的迭代点继续寻找新的迭代点,直到找到最优解,梯度下降的目的,就是为了最小化损失函数。 1、给定待优化连续可微…

基于Qt QSpinBox 微调框小案例

修改微调框数值的方式包括: 单击右侧的向上/向下按钮 按键盘的向上/向下键 在微调框获取焦点时,通过鼠标滚轮的上下滚动 当然了,也允许用户手动输入 其中: QSpinBox - 用于整数的显示和输入 QDoubleSpinBox - 用于浮点数的显示和输入 它们都是 QAbstractSpinBox 的子类,具…