finish 33

This commit is contained in:
Dr. Matthias Ratajczak
2022-08-19 19:12:16 +02:00
parent b88e692efa
commit fdb0e04315
2 changed files with 74 additions and 0 deletions
+8
View File
@@ -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]
+66
View File
@@ -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()
}
}