44 lines
1.6 KiB
Rust
44 lines
1.6 KiB
Rust
use std::fmt::format;
|
|
use std::time::Instant;
|
|
use day01::{part01a, part01b};
|
|
use day02::{part02a, part02b};
|
|
use day03::{part03a, part03b};
|
|
|
|
use std::fs::OpenOptions;
|
|
use std::io::Write;
|
|
use std::io::Result;
|
|
|
|
fn main() {
|
|
let mut file = OpenOptions::new()
|
|
.write(true) // Open the file for writing
|
|
.create(true) // Create the file if it doesn't exist
|
|
.truncate(true) // Clear the file if it already exists
|
|
.open("solution.md").expect("Cannot open or create file");
|
|
|
|
file.write_all(b"# Advent of code 2025\n```").expect("Cannot write to file");
|
|
|
|
let exercises: Vec<(&str, fn () -> u64)> = vec![
|
|
("day01:A", part01a::solve),
|
|
("day01:B", part01b::solve),
|
|
("day02:A", part02a::solve),
|
|
("day02:B", part02b::solve),
|
|
("day03:A", part03a::solve),
|
|
("day03:B", part03b::solve),
|
|
];
|
|
|
|
let start: Instant = Instant::now();
|
|
exercises.iter().for_each(|(day, func)| {
|
|
let day_start: Instant = Instant::now();
|
|
let solution = format!("{:7} => {:15} ({:6}us)\n", day, func(), day_start.elapsed().as_micros());
|
|
print!("{}", solution);
|
|
file.write(solution.as_bytes()).expect("Cannot write to file");
|
|
});
|
|
|
|
let banner = " ----------\n";
|
|
let end_time = format!(" {:7}us\n", start.elapsed().as_micros());
|
|
print!("{}", banner);
|
|
file.write(banner.as_bytes()).expect("Cannot write to file");
|
|
println!("{}", end_time);
|
|
file.write(end_time.as_bytes()).expect("Cannot write to file");
|
|
file.write(b"```").expect("Cannot write to file");
|
|
} |