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

2023-10-21 17:46

本文主要是介绍骰子涂色(Cube painting, UVa 253)rust解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

输入两个骰子,判断二者是否等价。每个骰子用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在顶上62
3 6 4 1         2在顶上53
5 6 2 1			3在顶上44
2 6 5 1			4在顶上35
4 6 3 1			5在顶上26
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;
}

这篇关于骰子涂色(Cube painting, UVa 253)rust解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255943

相关文章

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

uva 10055 uva 10071 uva 10300(水题两三道)

情歌两三首,水题两三道。 好久没敲代码了为暑假大作战热热身。 uva 10055 Hashmat the Brave Warrior 求俩数相减。 两个debug的地方,一个是longlong,一个是输入顺序。 代码: #include<stdio.h>int main(){long long a, b;//debugwhile(scanf("%lld%lld", &