add day03

This commit is contained in:
Thomas Ruoff
2021-12-05 22:43:19 +01:00
parent 76582a01f7
commit 76c084a194
5 changed files with 1046 additions and 0 deletions

7
day03/Cargo.lock generated Normal file
View File

@@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "day3"
version = "0.1.0"

8
day03/Cargo.toml Normal file
View File

@@ -0,0 +1,8 @@
[package]
name = "day3"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

1000
day03/data/input Normal file

File diff suppressed because it is too large Load Diff

31
day03/src/main.rs Normal file
View File

@@ -0,0 +1,31 @@
use std::fs;
const MAX_BITS: usize = 12;
fn main() {
let mut true_count: [ u16 ; MAX_BITS ] = [ 0 ; MAX_BITS ];
let mut line_count: u16 = 0;
let data = fs::read_to_string("./data/input").expect("Unable to read file");
for line in data.lines() {
let str_rev: String = line.chars().rev().collect();
for (pos, chr) in str_rev.chars().enumerate() {
if chr == '1' {
true_count[pos] += 1
}
}
line_count += 1;
}
let even_count = line_count / 2;
let mut gamma: u32 = 0;
let mut epsilon: u32 = 0;
for (pos, true_count) in true_count.iter_mut().enumerate() {
if *true_count > even_count {
gamma += (2 as u32).pow(pos as u32);
} else {
epsilon += (2 as u32).pow(pos as u32);
}
}
println!("power consumption {}", epsilon * gamma)
}