Rust: codewars的Bleatrix Trotter
题目很简单,主要是数羊。但数法是这样,比如,任给一个数,接下去是这个数的1,2,3….的倍数,顺序往下数。
什么时结束呢?这里有一个规则:
即每数一个数,把其中0-9中的数字记下来,不断收集起来,当收集到0-9中的全套10个数字时,任务结束。
比如, N = 1692.
N = 1692. 有数字: 1, 2, 6, and 9.
2N = 3384. 有数字,3,3,8,4; 共收集了 1, 2, 3, 4, 6, 8, 和 9.
3N = 5076. 有数字,5,0,7,6。共收集了全套的10个数字,任务结束,并记住5076。
此时5076就是我们要找的值。
要求,写一个函数,任给一个数字,返回收集全套的数字时的值。
一、解法
fn trotter(n: i32) -> i32 {let mut nums = "".to_string();let chs: Vec<char> = "0123456789".chars().into_iter().map(|x| x).collect();let mut lastnum: i32 = 0_i32;(1..).any(|x| {let val = x * n;let temp = &(val.to_string()).chars().into_iter().filter(|&y| !&nums.contains(y)).collect::<Vec<char>>();if temp.len()==0{return false}nums.extend(temp);match (&chs).into_iter().all(|&w| nums.contains(w)) {true => {lastnum = val;true},_ => false,}});lastnum
}
题目感觉不复杂,上面代码通过了测试,但是提交超时,仍需优化。
简化了一下,仍然不行:
fn trotter(n: i32) -> i32 {let mut nums = "".to_string();let chs: Vec<char> = "0123456789".chars().into_iter().map(|x| x).collect();let mut lastnum = 0_i32;(1..).any(|x| {nums.push_str(&((x * n).to_string()));match (&chs).into_iter().all(|&w| nums.contains(w)) {true => {lastnum = x * n;true}_ => false,}});lastnum
}
换一个类型?char->i32试试,仍然超时,也不行。
fn trotter(n: i32) -> i32 {//println!("trotter=> n:{:?}", n);let mut nums = vec![];let chs: Vec<i32> = "0123456789".chars().into_iter().map(|x| x as i32).collect();let mut lastnum: i32 = 0_i32;(1..).any(|x| {let val = x * n;let temp = &(val.to_string()).chars().into_iter().filter(|&y| !&nums.contains(&(y as i32))).map(|w| w as i32).collect::<Vec<i32>>();if temp.len() == 0 {return false;}nums.extend(temp);//println!("nums:{:?} temp:{:?} var:{:?},x:{}", nums, temp, val, x);match (&chs).into_iter().all(|&w| nums.contains(&w)) {true => {lastnum = val;//println!("nums:{:?}", nums);true}_ => false,}});//println!("=>nums :{:?} ", nums);lastnum
}
Rust: codewars的Bleatrix Trotter相关推荐
- Rust和C / C ++的跨语言链接时间优化LTO
Rust和C / C ++的跨语言链接时间优化LTO 链接时间优化(LTO)是LLVM实施整个程序优化的方法.跨语言LTO是Rust编译器中的一项新功能,使LLVM的链接时间优化可以在混合的C / C ...
- 10玩rust_有趣的 Rust 类型系统: Trait
也许你已经学习了标准库提供的 String 类型,这是一个 UTF-8 编码的可增长字符串.该类型的结构为: pub struct String {vec: Vec<u8>, } UTF- ...
- rust熔炉怎么带走_Rust游戏中12个实用小技巧,包含无伤下坠、直梯爬楼
Rust是一款第一人称生存网络游戏,有点像野外求生,但这款游戏内容则更加丰富.刺激.血腥. 在这款游戏中玩家的第一任务就是活下来,而想要活下来你将要接受饥饿.干渴.寒冷等.游戏中玩家需要建造自己的庇护 ...
- 腐蚀rust电脑分辨率调多少_腐蚀Rust怎么设置画面 腐蚀Rust提高帧数画面设置方法...
腐蚀Rust这个游戏的细节取决于图像质量也就是我们进入游戏的时候可以选择画质,这里为大家带来腐蚀Rust画质设置教程. 图像质量 1~3为一个大档 4~5是一个大档 4以上你在游戏里面的画面会显示更多 ...
- rust 官服指令_RUST 命令大全(包括服务器指令)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 RUST++ MOD (以下在聊天框内输入) 基本命令 /share playername [shares your doors with a playe ...
- 30005 rust_Steam三连冠老游戏《腐蚀(RUST)》为什么突然火起来了?
Steam新一周(1月18日-1月24日)销量榜公开,<赛博朋克2077>跌落至第五,<荒野大镖客2>前进到第六,而第一人称僵尸生存网络游戏<Rust>已经三连冠了 ...
- 使用Rust + Electron开发跨平台桌面应用 ( 一 )
前言 近段时间学习了Rust,一直想着做点什么东西深入学习,因为是刚学习,很多地方都不熟悉,所以也就不能拿它来做编译器这些,至于web开发,实际上我并不建议拿这个来学习一门语言,大概有几个方面,一是w ...
- Rust 1.30带来更多元编程支持,并改进了模块系统
Rust的最新版本1.30扩展了过程宏,允许它们定义新的属性和类似于函数的宏.此外,它简化了Rust模块系统,使其更加一致.直观. Rust 1.30引入了两种新类型的过程宏,"类属性的过程 ...
- 深入浅出Rust Future - Part 1
本文译自Rust futures: an uneducated, short and hopefully not boring tutorial - Part 1,时间:2018-12-02,译者: ...
- Rust语言开发基础(六)基础语法
2019独角兽企业重金招聘Python工程师标准>>> 一.变量的定义和使用 其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust ...
最新文章
- centos 配置bond_Linux CentOS 7 多网卡配置bond模式 bond1 bond5 bond6
- mysql回调地狱_5、Express异步读取Mysql数据库 callback/promise/async
- 无法访问http,会强制跳到https
- XML数据读取方式性能比较(一)
- Laravel安装步骤
- 【机器视觉】 reset_fuzzy_measure算子
- Java中集合list的add方法添加的不是值COPY而是地址
- 假如时光倒流,我会这么学习Java
- 如何构建高效可信的持续交付能力,华为云有绝活!
- 数据分析师工作内容 数据分析的六个步骤
- oracle adpatch 回退,Oracle EBS施用adpatch工具打patch过程
- 解决雷电模拟器一直出现安全证书有问题
- 方舟怎么看服务器信息,方舟怎么看服务器ip地址
- win11浏览器默认主页如何设置
- 计算机专业兴趣小组 名字,最有创意的小组名字及口号(精选70个)
- 「AutoML」AutoML专栏上线,跟Google一起见证调参党的末日?
- 数据库以及Mysql入门
- 【马司机带带我】君子日三省吾身
- ubuntu16.04解决耳机没有声音
- win10计算机休眠后无法唤醒,win10电脑休眠后唤不醒怎么回事_win10电脑休眠后唤不醒的三种原因和解决方法...
热门文章
- angular js的元素指令
- Java eclipse: errors exist in required project(s)
- Js中的window.parent ,window.top,window.self详解
- ylbtech-LanguageSamples-Libraries(库)
- zookeeper启动失败解决方法
- BZOJ3122 [Sdoi2013]随机数生成器 【BSGS】
- 计算5的阶乘 5!的结果是?
- 【最大流】 HDU 3572 Task Schedule
- javascript的dom选择器
- Servlet API 中文版