finish 33
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "euler33"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
@@ -0,0 +1,66 @@
|
||||
fn main() {
|
||||
let mut result = vec![];
|
||||
|
||||
for i in 11..100 {
|
||||
if i % 10 == 0 {
|
||||
continue;
|
||||
}
|
||||
for j in i..100 {
|
||||
if j % 10 == 0 {
|
||||
continue;
|
||||
}
|
||||
if i == j {
|
||||
continue;
|
||||
}
|
||||
|
||||
let ifl = i as f64;
|
||||
let jfl = j as f64;
|
||||
|
||||
let mut ic = i.to_chars();
|
||||
let mut jc = j.to_chars();
|
||||
|
||||
let mut found_something = false;
|
||||
'outer: for i_idx in 0..=1 {
|
||||
for j_idx in 0..=1 {
|
||||
if ic[i_idx] == jc[j_idx] {
|
||||
ic.remove(i_idx);
|
||||
jc.remove(j_idx);
|
||||
found_something = true;
|
||||
break 'outer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if !found_something {
|
||||
continue;
|
||||
}
|
||||
|
||||
let correct_ratio = ifl / jfl;
|
||||
let wrong_ratio =
|
||||
ic[0].to_digit(10).unwrap() as f64 / jc[0].to_digit(10).unwrap() as f64;
|
||||
if wrong_ratio == correct_ratio {
|
||||
result.push((i, j));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut numerator = 1.0;
|
||||
let mut denominator = 1.0;
|
||||
for item in result {
|
||||
numerator *= item.0 as f64;
|
||||
denominator *= item.1 as f64;
|
||||
}
|
||||
|
||||
println!("{} / {}", numerator, denominator);
|
||||
println!("{}", denominator / numerator);
|
||||
}
|
||||
|
||||
trait ToChars {
|
||||
fn to_chars(&self) -> Vec<char>;
|
||||
}
|
||||
|
||||
impl ToChars for u32 {
|
||||
fn to_chars(&self) -> Vec<char> {
|
||||
self.to_string().chars().collect()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user