Compare commits

..

No commits in common. "439b15d11ef05d03134d06e0bea0896c3189968a" and "a3752c5cee3e9f8fb56a26c2218d331b6bc82884" have entirely different histories.

21 changed files with 91 additions and 39 deletions

View File

@ -1,5 +1,4 @@
pub mod year_2023; pub mod year_2023;
pub mod utils;
fn main() { fn main() {
println!("Hello, world!"); println!("Hello, world!");

View File

@ -1,13 +0,0 @@
// https://doc.rust-lang.org/stable/rust-by-example/std_misc/file/read_lines.html
use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
pub fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}

View File

@ -1 +0,0 @@
pub mod input_reader;

View File

@ -1,7 +1,10 @@
use crate::utils::input_reader; // https://doc.rust-lang.org/stable/rust-by-example/std_misc/file/read_lines.html
use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
pub fn part_one() { pub fn part_one() {
if let Ok(lines) = input_reader::read_lines("./input/input.txt") { if let Ok(lines) = read_lines("./input.txt") {
let mut result = 0; let mut result = 0;
for line in lines { for line in lines {
@ -12,6 +15,14 @@ pub fn part_one() {
} }
} }
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}
fn parse_line(s: &str) -> u32 { fn parse_line(s: &str) -> u32 {
const RADIX: u32 = 10; const RADIX: u32 = 10;

View File

@ -1,9 +1,10 @@
use std::collections::HashMap; use std::collections::HashMap;
use std::fs::File;
use crate::utils::input_reader; use std::io::{self, BufRead};
use std::path::Path;
pub fn part_two() { pub fn part_two() {
if let Ok(lines) = input_reader::read_lines("./input.txt") { if let Ok(lines) = read_lines("./input.txt") {
let mut result = 0; let mut result = 0;
for line in lines { for line in lines {
@ -14,6 +15,13 @@ pub fn part_two() {
} }
} }
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}
fn parse_line(s: &str) -> u32 { fn parse_line(s: &str) -> u32 {
const RADIX: u32 = 10; const RADIX: u32 = 10;

View File

@ -1,7 +1,9 @@
use crate::utils::input_reader; use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
pub fn part_one() { pub fn part_one() {
if let Ok(lines) = input_reader::read_lines("./input.txt") { if let Ok(lines) = read_lines("./input.txt") {
let mut result = 0; let mut result = 0;
for line in lines { for line in lines {
@ -12,6 +14,14 @@ pub fn part_one() {
} }
} }
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}
fn process_line(s: &str) -> u32 { fn process_line(s: &str) -> u32 {
let v: Vec<&str> = s.split(':').collect(); let v: Vec<&str> = s.split(':').collect();

View File

@ -1,6 +1,7 @@
use std::cmp::max; use std::cmp::max;
use std::fs::File;
use crate::utils::input_reader; use std::io::{self, BufRead};
use std::path::Path;
struct Game { struct Game {
red: u32, red: u32,
@ -9,7 +10,7 @@ struct Game {
} }
pub fn part_two() { pub fn part_two() {
if let Ok(lines) = input_reader::read_lines("./input.txt") { if let Ok(lines) = read_lines("./input.txt") {
let mut result = 0; let mut result = 0;
for line in lines { for line in lines {
@ -20,7 +21,13 @@ pub fn part_two() {
} }
} }
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}
fn process_line(s: &str) -> u32 { fn process_line(s: &str) -> u32 {
let v: Vec<&str> = s.split(':').collect(); let v: Vec<&str> = s.split(':').collect();

View File

@ -1,6 +1,6 @@
use std::{fs::File, io}; use std::fs::File;
use std::io::{self, BufRead};
use crate::utils::input_reader; use std::path::Path;
enum Engine { enum Engine {
Symbol(char), Symbol(char),
@ -9,7 +9,7 @@ enum Engine {
} }
pub fn part_one() { pub fn part_one() {
if let Ok(lines) = input_reader::read_lines("./input.txt") { if let Ok(lines) = read_lines("./input.txt") {
let matrix = create_matrix(lines); let matrix = create_matrix(lines);
let result = process_matrix(&matrix); let result = process_matrix(&matrix);
@ -17,6 +17,13 @@ pub fn part_one() {
} }
} }
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}
fn create_matrix(lines: io::Lines<io::BufReader<File>>) -> Vec<Vec<Engine>> { fn create_matrix(lines: io::Lines<io::BufReader<File>>) -> Vec<Vec<Engine>> {
let mut matrix: Vec<Vec<Engine>> = Vec::new(); let mut matrix: Vec<Vec<Engine>> = Vec::new();

View File

@ -1,9 +1,10 @@
use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
use std::collections::HashSet; use std::collections::HashSet;
use crate::utils::input_reader;
pub fn part_one() { pub fn part_one() {
if let Ok(lines) = input_reader::read_lines("./input.txt") { if let Ok(lines) = read_lines("./input.txt") {
let mut result = 0; let mut result = 0;
for line in lines { for line in lines {
@ -45,3 +46,10 @@ fn process_line(s: &str) -> u32 {
} }
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}

View File

@ -1,7 +1,9 @@
use crate::utils::input_reader; use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
pub fn part_one() { pub fn part_one() {
if let Ok(lines) = input_reader::read_lines("./input.txt") { if let Ok(lines) = read_lines("./input.txt") {
let mut margin = 1; let mut margin = 1;
let mut race_results: Vec<Vec<u32>> = Vec::new(); let mut race_results: Vec<Vec<u32>> = Vec::new();
@ -39,4 +41,10 @@ fn process_race_result(time: u32, distance: u32) -> u32 {
return win_count; return win_count;
} }
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}

View File

@ -1,7 +1,9 @@
use crate::utils::input_reader; use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
pub fn part_two() { pub fn part_two() {
if let Ok(lines) = input_reader::read_lines("./input.txt") { if let Ok(lines) = read_lines("./input.txt") {
let mut race_result: Vec<u64> = Vec::new(); let mut race_result: Vec<u64> = Vec::new();
for line in lines { for line in lines {
@ -36,4 +38,10 @@ fn process_race_result(time: u64, distance: u64) -> u64 {
return win_count; return win_count;
} }
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}