mirror of
https://github.com/theoludwig/advent_of_code_2023.git
synced 2024-12-08 00:45:53 +01:00
ci: add automated tests/linting/format
This commit is contained in:
parent
0c6ebb6ad4
commit
760686db4c
15
.editorconfig
Normal file
15
.editorconfig
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# https://editorconfig.org/
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*.txt]
|
||||||
|
trim_trailing_whitespace = unset
|
||||||
|
insert_final_newline = unset
|
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
* text=auto eol=lf
|
24
.github/workflows/ci.yml
vendored
Normal file
24
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
name: "ci"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["main"]
|
||||||
|
pull_request:
|
||||||
|
branches: ["main"]
|
||||||
|
|
||||||
|
env:
|
||||||
|
CARGO_TERM_COLOR: "always"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ci:
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: "actions/checkout@v4"
|
||||||
|
|
||||||
|
- run: "rustc --version"
|
||||||
|
|
||||||
|
- run: "cargo build --verbose"
|
||||||
|
- run: "cargo test --verbose"
|
||||||
|
- run: "cargo clippy --verbose -- -D warnings"
|
||||||
|
- run: "cargo fmt -- --check"
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target
|
4
day_1/Cargo.lock → Cargo.lock
generated
4
day_1/Cargo.lock → Cargo.lock
generated
@ -5,3 +5,7 @@ version = 3
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "day_1"
|
name = "day_1"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day_2"
|
||||||
|
version = "1.0.0"
|
6
Cargo.toml
Normal file
6
Cargo.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[workspace]
|
||||||
|
members = [
|
||||||
|
"day_1",
|
||||||
|
"day_2",
|
||||||
|
]
|
||||||
|
resolver = "2"
|
13
README.md
13
README.md
@ -2,16 +2,15 @@
|
|||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
This repository contains my solutions to the [Advent of Code 2023](https://adventofcode.com/2023) challenges using the [Rust Programming Language](https://www.rust-lang.org/) v1.74.0.
|
This repository contains my solutions for the [Advent of Code 2023](https://adventofcode.com/2023) challenges implemented in the [Rust Programming Language](https://www.rust-lang.org/) v1.74.0.
|
||||||
|
|
||||||
To run a solution (e.g. Day 1):
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd day_1
|
# Run the tests (input examples)
|
||||||
cargo run
|
cargo test
|
||||||
```
|
|
||||||
|
|
||||||
**Note:** The solutions are not necessarily optimized for performance or readability, but rather for completing the challenge successfully.
|
# Run a specific day's challenge (e.g. Day 1)
|
||||||
|
cargo run --package day_1
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ fn part_1(input: &str) -> i32 {
|
|||||||
let first_digit = characters_digits.first().unwrap_or(&'0').to_owned();
|
let first_digit = characters_digits.first().unwrap_or(&'0').to_owned();
|
||||||
let last_digit = characters_digits.last().unwrap_or(&'0').to_owned();
|
let last_digit = characters_digits.last().unwrap_or(&'0').to_owned();
|
||||||
let number = format!("{}{}", first_digit, last_digit);
|
let number = format!("{}{}", first_digit, last_digit);
|
||||||
let number: i32 = number.parse().expect("Should parse as a number.");
|
let number: i32 = number.parse().expect("Should parse as a i32.");
|
||||||
number
|
number
|
||||||
})
|
})
|
||||||
.sum()
|
.sum()
|
||||||
@ -64,15 +64,23 @@ fn part_2(input: &str) -> i32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let input_example1 = include_str!("../input_example_1.txt");
|
|
||||||
let input_example2 = include_str!("../input_example_2.txt");
|
|
||||||
let input = include_str!("../input.txt");
|
let input = include_str!("../input.txt");
|
||||||
|
println!("- Day 1: Trebuchet?! -");
|
||||||
println!("Answer Part 1 (example1): {}", part_1(input_example1));
|
|
||||||
println!("Answer Part 1 (example2): {}", part_1(input_example2));
|
|
||||||
println!("Answer Part 1: {}", part_1(input));
|
println!("Answer Part 1: {}", part_1(input));
|
||||||
|
|
||||||
println!("Answer Part 2 (example1): {}", part_2(input_example1));
|
|
||||||
println!("Answer Part 2 (example2): {}", part_2(input_example2));
|
|
||||||
println!("Answer Part 2: {}", part_2(input));
|
println!("Answer Part 2: {}", part_2(input));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod day_1_tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_part_1_example() {
|
||||||
|
assert_eq!(142, part_1(include_str!("../input_example_1.txt")));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_part_2_example() {
|
||||||
|
assert_eq!(281, part_2(include_str!("../input_example_2.txt")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
1
day_2/.gitignore
vendored
Normal file
1
day_2/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target
|
6
day_2/Cargo.toml
Normal file
6
day_2/Cargo.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "day_2"
|
||||||
|
version = "1.0.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
7
day_2/README.md
Normal file
7
day_2/README.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# - Day 2 -
|
||||||
|
|
||||||
|
Source: <https://adventofcode.com/2023/day/2>
|
||||||
|
|
||||||
|
## Instructions - Part 1
|
||||||
|
|
||||||
|
## Instructions - Part 2
|
18
day_2/src/main.rs
Normal file
18
day_2/src/main.rs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
fn part_1() -> i32 {
|
||||||
|
142
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println!("- Day 2: Title -");
|
||||||
|
println!("Answer Part 1: {}", part_1());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod day_2_tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_part_1_example() {
|
||||||
|
assert_eq!(142, part_1());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user