diff --git a/exercises/src/bin/final_challenge.rs b/exercises/src/bin/final_challenge.rs new file mode 100644 index 0000000..b9740a9 --- /dev/null +++ b/exercises/src/bin/final_challenge.rs @@ -0,0 +1,37 @@ +/// # Final challenge +/// +/// Complete the `challenge` function that takes a raw data file with the orders of a day separated +/// by a semicolon. Each day is a new line with the following format: +/// ``` +/// Orders day 1: 3 apples, 2 bananas; 5 bananas, 2 apples, 12 pears; 1 apples, 1 pears +/// ``` +/// Our store only sells `apples`, `bananas`, and `pears`, but there is a limited supply of each fruit, +/// there are 30 apples, 35 bananas, and 40 pears every day to be sold. +/// +/// The function should return a tuple with: +/// - The first entry the sum of the day numbers we ran out stock of any of the fruits. +/// - The second entry can be calculated with: +/// - Find highest quantity per product per day. +/// - Multiply these highest quantities to get a single total per day. +/// - Sum all days to get the final answer. +fn challenge(data: &str) -> (i32, i32) { + (0, 0) +} + +fn main() { + let data = include_str!("../data/challenge_data.txt"); + challenge(data); +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_challenge() { + assert_eq!( + challenge(include_str!("../data/challenge_data.txt")), + (3536, 114752) + ); + } +} diff --git a/exercises/src/data/challenge_data.txt b/exercises/src/data/challenge_data.txt new file mode 100644 index 0000000..71ec0dc --- /dev/null +++ b/exercises/src/data/challenge_data.txt @@ -0,0 +1,100 @@ +Orders day 1: 3 apples, 5 pears, 11 bananas; 5 apples, 16 pears, 1 bananas; 12 apples, 20 pears, 10 bananas +Orders day 2: 7 apples, 14 pears, 8 bananas; 4 apples, 1 pears, 1 bananas; 10 apples, 7 pears, 4 bananas +Orders day 3: 15 apples, 9 pears, 10 bananas; 9 apples, 8 pears, 7 bananas; 13 apples, 3 pears, 9 bananas +Orders day 4: 17 pears; 17 apples, 17 pears, 1 bananas; 10 pears, 1 bananas; 14 apples, 1 pears, 1 bananas; 8 pears, 2 bananas +Orders day 5: 14 apples, 6 pears, 6 bananas; 10 apples, 9 pears, 14 bananas; 19 apples, 4 pears, 1 bananas; 1 apples, 4 pears, 5 bananas; 9 apples, 9 pears, 14 bananas; 10 apples, 5 pears, 21 bananas +Orders day 6: 6 apples, 1 pears, 11 bananas; 12 apples, 18 bananas; 1 apples, 1 pears, 15 bananas +Orders day 7: 7 apples, 11 pears, 7 bananas; 4 apples, 18 pears, 14 bananas; 6 apples, 2 pears, 19 bananas; 6 apples, 8 pears, 10 bananas +Orders day 8: 6 apples, 1 pears, 6 bananas; 15 apples, 1 pears, 1 bananas; 5 apples, 5 pears, 1 bananas; 6 apples, 1 pears, 7 bananas; 1 apples, 4 pears +Orders day 9: 2 apples, 6 pears; 7 apples, 8 pears; 9 apples, 1 pears, 1 bananas; 1 bananas; 6 apples, 17 pears, 1 bananas; 4 apples, 14 pears, 1 bananas +Orders day 10: 1 apples, 4 pears, 14 bananas; 11 apples, 19 pears; 1 pears, 19 bananas; 6 apples, 17 pears, 8 bananas +Orders day 11: 5 apples, 2 pears, 2 bananas; 10 apples, 1 pears, 5 bananas; 4 apples, 4 pears, 1 bananas +Orders day 12: 11 apples, 3 pears, 8 bananas; 3 apples, 5 pears, 8 bananas; 3 apples, 3 pears; 5 apples, 3 pears, 6 bananas +Orders day 13: 1 apples, 1 pears; 2 apples, 2 pears, 10 bananas; 1 apples, 5 pears, 4 bananas; 4 apples, 2 pears, 15 bananas; 1 apples, 1 pears, 12 bananas; 1 apples, 13 bananas +Orders day 14: 10 apples, 1 pears, 9 bananas; 14 apples, 7 pears, 12 bananas; 9 apples, 5 bananas; 8 apples, 7 pears, 14 bananas +Orders day 15: 1 pears, 4 bananas; 9 apples, 7 pears, 18 bananas; 4 apples, 13 bananas +Orders day 16: 6 apples, 15 pears, 5 bananas; 4 apples, 10 pears, 5 bananas; 4 apples, 10 pears, 1 bananas; 13 apples, 5 pears, 6 bananas; 3 apples, 1 pears, 3 bananas +Orders day 17: 10 apples, 7 pears, 10 bananas; 5 apples, 12 pears, 3 bananas; 15 apples, 4 pears, 7 bananas; 4 apples, 18 pears, 8 bananas; 8 apples, 18 pears, 3 bananas +Orders day 18: 6 apples, 13 pears, 1 bananas; 2 apples, 7 pears, 5 bananas; 12 pears +Orders day 19: 6 apples, 1 pears; 4 pears, 2 bananas; 8 apples, 7 pears, 1 bananas; 14 pears, 5 bananas; 5 apples, 11 pears; 3 apples, 11 pears, 1 bananas +Orders day 20: 2 apples, 5 pears, 9 bananas; 7 apples, 2 pears, 6 bananas; 9 apples; 16 apples, 1 pears, 6 bananas; 3 apples, 5 pears, 1 bananas; 9 apples, 8 pears +Orders day 21: 3 apples, 1 pears; 6 pears, 4 bananas; 1 apples, 9 pears, 6 bananas +Orders day 22: 13 apples, 9 pears, 11 bananas; 2 apples, 8 pears, 13 bananas; 5 apples, 2 bananas +Orders day 23: 4 apples, 6 pears, 17 bananas; 6 apples, 20 pears, 13 bananas; 1 apples, 13 pears +Orders day 24: 4 apples, 4 pears, 2 bananas; 11 apples, 3 pears, 8 bananas; 7 apples, 8 bananas; 6 apples, 3 pears, 5 bananas; 1 apples, 4 pears, 7 bananas; 11 apples, 6 bananas +Orders day 25: 1 apples, 9 pears; 4 apples, 5 pears, 8 bananas; 12 pears; 5 apples, 8 pears, 2 bananas; 1 apples, 15 pears, 11 bananas; 5 apples, 3 pears, 10 bananas +Orders day 26: 6 apples, 12 pears, 4 bananas; 3 apples, 5 pears, 8 bananas; 1 pears, 4 bananas; 4 apples, 6 pears; 1 apples, 7 pears, 3 bananas +Orders day 27: 13 apples, 18 pears, 5 bananas; 16 apples, 2 pears, 11 bananas; 13 apples, 1 pears, 11 bananas; 4 pears, 3 bananas; 13 apples, 8 pears, 10 bananas; 1 apples, 2 pears, 5 bananas +Orders day 28: 15 apples, 4 pears; 7 apples, 1 pears, 1 bananas; 8 apples; 22 apples, 1 pears +Orders day 29: 10 pears, 1 bananas; 10 apples, 20 pears, 3 bananas; 2 apples, 20 pears, 13 bananas; 1 apples, 13 pears, 17 bananas; 7 apples, 11 pears, 8 bananas +Orders day 30: 1 apples, 8 pears, 13 bananas; 3 apples, 1 pears, 12 bananas; 4 apples, 1 pears, 11 bananas; 10 apples, 7 pears, 12 bananas; 6 apples, 7 pears, 7 bananas +Orders day 31: 1 apples, 6 pears, 9 bananas; 1 apples, 5 bananas; 8 pears, 16 bananas +Orders day 32: 8 apples, 3 pears, 1 bananas; 10 apples, 7 pears, 6 bananas; 12 apples, 3 pears, 7 bananas; 1 apples, 14 pears, 9 bananas; 10 apples, 8 pears, 3 bananas +Orders day 33: 9 apples, 1 pears, 2 bananas; 5 apples, 11 pears, 1 bananas; 1 apples, 11 pears +Orders day 34: 4 apples, 1 pears, 5 bananas; 7 apples, 2 pears, 1 bananas; 7 apples, 6 pears; 4 apples, 11 pears, 6 bananas; 5 apples, 1 pears, 5 bananas; 10 apples, 11 pears, 8 bananas +Orders day 35: 6 apples, 3 pears; 13 apples, 3 pears, 4 bananas; 5 pears, 4 bananas; 7 apples, 1 bananas; 7 apples, 5 bananas +Orders day 36: 9 apples, 11 bananas; 3 apples, 12 pears, 5 bananas; 1 apples, 5 pears, 11 bananas; 8 apples, 3 pears, 6 bananas; 3 pears, 9 bananas +Orders day 37: 13 apples, 7 pears, 1 bananas; 14 apples, 5 pears, 12 bananas; 5 apples, 9 bananas; 8 apples, 2 pears, 5 bananas; 12 apples, 8 pears, 1 bananas; 7 apples, 1 pears, 9 bananas +Orders day 38: 13 apples, 15 pears, 11 bananas; 13 apples, 8 pears, 5 bananas; 13 apples, 18 pears, 13 bananas +Orders day 39: 4 apples, 3 pears, 7 bananas; 1 apples, 4 pears, 5 bananas; 7 pears, 14 bananas +Orders day 40: 3 apples, 8 pears, 1 bananas; 1 apples, 7 pears, 6 bananas; 17 apples, 4 pears, 17 bananas; 1 apples, 5 pears, 11 bananas +Orders day 41: 1 apples, 4 pears, 9 bananas; 1 apples, 5 pears, 17 bananas; 1 pears, 15 bananas; 6 pears, 12 bananas +Orders day 42: 4 apples, 5 pears, 1 bananas; 4 pears, 2 bananas; 2 apples; 5 apples, 5 pears; 2 apples, 1 bananas; 2 apples, 5 bananas +Orders day 43: 3 apples, 2 pears, 5 bananas; 6 apples, 4 pears, 1 bananas; 6 apples, 8 pears, 4 bananas; 1 apples, 4 pears +Orders day 44: 13 apples, 10 bananas; 10 apples; 9 apples, 1 pears, 9 bananas +Orders day 45: 17 apples, 9 pears, 15 bananas; 8 apples, 9 pears; 16 apples, 5 pears, 9 bananas; 1 apples, 8 pears, 9 bananas +Orders day 46: 10 apples, 1 pears; 5 apples, 5 pears, 11 bananas; 7 apples, 1 pears, 10 bananas +Orders day 47: 5 apples, 3 bananas; 1 apples, 2 pears, 6 bananas; 1 apples, 9 bananas; 3 apples, 3 bananas; 1 apples, 5 bananas +Orders day 48: 13 apples, 2 pears, 5 bananas; 4 apples, 7 pears; 2 apples, 6 pears, 5 bananas; 13 apples, 2 pears, 7 bananas; 3 pears, 10 bananas; 4 apples, 1 bananas +Orders day 49: 4 apples, 2 pears, 1 bananas; 6 apples, 16 pears, 1 bananas; 10 pears, 3 bananas; 9 apples, 6 pears +Orders day 50: 12 apples, 7 bananas; 12 apples, 5 pears, 10 bananas; 12 apples, 5 bananas +Orders day 51: 4 apples, 1 pears, 13 bananas; 7 apples, 1 pears, 13 bananas; 7 apples, 1 pears, 11 bananas; 6 apples, 1 pears, 7 bananas +Orders day 52: 12 apples, 6 pears, 7 bananas; 3 apples, 7 pears, 4 bananas; 8 apples, 5 pears, 3 bananas; 11 apples, 4 pears, 4 bananas; 3 apples, 5 pears, 8 bananas; 1 apples +Orders day 53: 10 apples, 7 pears, 2 bananas; 10 apples, 3 pears; 7 apples, 2 pears, 5 bananas; 4 bananas +Orders day 54: 5 apples, 7 pears, 8 bananas; 2 apples, 9 pears, 6 bananas; 8 apples, 10 pears, 6 bananas; 8 apples, 5 pears +Orders day 55: 1 bananas; 4 apples, 1 pears, 4 bananas; 4 apples, 5 pears, 7 bananas; 5 apples, 2 pears, 8 bananas; 1 apples, 5 pears, 3 bananas +Orders day 56: 5 apples, 7 pears, 1 bananas; 5 apples, 7 pears, 2 bananas; 12 apples, 13 pears, 3 bananas; 8 apples, 9 pears +Orders day 57: 13 pears, 1 bananas; 8 apples, 2 pears; 1 pears, 4 bananas; 8 pears, 1 bananas; 5 apples, 7 pears, 3 bananas; 9 apples, 11 pears, 6 bananas +Orders day 58: 6 apples, 4 pears, 16 bananas; 19 apples, 16 pears, 7 bananas; 10 apples, 17 pears, 4 bananas; 13 apples, 16 pears, 14 bananas; 3 apples, 16 pears, 10 bananas; 8 apples, 3 pears, 5 bananas +Orders day 59: 13 apples, 8 pears, 23 bananas; 1 apples, 8 pears, 17 bananas; 5 apples, 3 pears, 10 bananas; 4 apples, 13 pears, 6 bananas; 9 apples, 9 pears, 18 bananas +Orders day 60: 10 pears, 7 bananas; 4 apples, 12 pears; 14 pears, 4 bananas +Orders day 61: 10 apples, 2 pears, 1 bananas; 5 apples, 11 pears, 13 bananas; 16 apples, 12 pears, 6 bananas; 9 apples, 1 pears, 1 bananas +Orders day 62: 15 apples, 4 pears, 2 bananas; 4 pears, 1 bananas; 11 apples, 10 pears, 5 bananas; 5 apples, 8 pears; 12 apples, 9 pears; 8 apples, 10 pears +Orders day 63: 7 apples, 1 bananas; 3 apples, 8 bananas; 9 apples, 12 bananas; 4 apples, 11 bananas; 8 apples, 1 pears, 14 bananas; 11 apples, 1 pears, 8 bananas +Orders day 64: 11 apples, 4 pears, 5 bananas; 12 apples, 11 pears, 5 bananas; 14 apples, 2 pears, 7 bananas; 8 apples, 5 pears, 3 bananas +Orders day 65: 11 apples, 8 pears; 1 apples, 5 pears, 8 bananas; 12 apples, 10 pears, 1 bananas; 9 apples, 12 pears, 11 bananas; 8 apples, 4 pears, 9 bananas; 8 apples, 5 pears, 1 bananas +Orders day 66: 10 apples, 8 pears, 5 bananas; 5 apples, 4 pears, 2 bananas; 5 apples, 5 bananas; 11 apples, 4 pears, 11 bananas; 8 apples, 1 pears, 6 bananas; 12 apples, 4 pears, 1 bananas +Orders day 67: 10 apples, 9 bananas; 7 apples, 6 pears, 10 bananas; 9 apples, 8 pears, 2 bananas; 5 apples, 3 pears, 8 bananas; 1 apples, 1 pears, 13 bananas +Orders day 68: 5 pears, 6 bananas; 1 apples, 14 pears, 4 bananas; 5 pears; 1 pears, 4 bananas +Orders day 69: 13 apples, 1 pears, 18 bananas; 15 bananas; 3 apples, 2 pears, 7 bananas; 10 apples, 1 pears, 1 bananas; 6 apples, 4 pears, 9 bananas +Orders day 70: 2 apples, 1 bananas; 8 apples, 1 pears, 1 bananas; 8 apples, 1 bananas; 12 apples, 1 pears +Orders day 71: 1 apples, 18 pears, 2 bananas; 1 pears, 6 bananas; 8 pears, 9 bananas; 6 apples, 13 pears, 7 bananas; 20 pears, 5 bananas; 16 pears, 1 bananas +Orders day 72: 10 apples, 1 pears; 8 pears; 8 apples, 8 pears, 5 bananas; 1 apples, 11 pears, 2 bananas; 4 pears, 1 bananas; 9 apples, 8 bananas +Orders day 73: 12 apples, 1 pears, 4 bananas; 1 apples, 2 bananas; 6 apples, 8 pears, 5 bananas +Orders day 74: 4 apples, 22 pears, 1 bananas; 5 apples, 6 pears; 4 apples, 11 pears, 4 bananas; 13 apples, 15 pears, 9 bananas +Orders day 75: 13 apples, 3 pears; 14 apples, 9 pears; 17 apples, 6 pears, 1 bananas; 1 apples, 4 pears +Orders day 76: 5 apples, 4 bananas; 8 apples, 3 pears, 10 bananas; 7 apples, 10 bananas; 9 apples, 17 bananas; 6 apples, 1 pears, 5 bananas; 5 apples, 1 bananas +Orders day 77: 7 apples, 1 pears, 18 bananas; 13 apples, 4 pears, 21 bananas; 1 apples, 1 bananas; 8 apples, 14 bananas; 10 apples, 1 pears, 12 bananas; 14 apples, 4 bananas +Orders day 78: 5 apples, 3 pears, 17 bananas; 3 apples, 9 pears, 5 bananas; 11 apples, 4 pears +Orders day 79: 1 apples, 1 pears, 7 bananas; 20 apples, 1 pears, 9 bananas; 12 apples, 4 bananas +Orders day 80: 10 apples, 12 pears, 11 bananas; 11 apples, 12 pears, 8 bananas; 11 apples, 7 pears, 8 bananas; 12 pears +Orders day 81: 9 apples, 1 pears, 5 bananas; 10 apples, 1 pears, 1 bananas; 8 apples, 5 pears, 5 bananas; 15 apples, 7 pears, 3 bananas +Orders day 82: 9 apples, 5 pears, 10 bananas; 14 apples, 16 pears, 9 bananas; 23 apples, 9 pears, 13 bananas; 3 apples, 10 pears, 11 bananas; 14 apples, 11 pears, 5 bananas +Orders day 83: 7 apples, 3 pears, 4 bananas; 6 apples, 4 pears, 2 bananas; 5 apples, 3 pears, 2 bananas; 5 apples, 10 pears, 1 bananas; 5 bananas +Orders day 84: 1 apples, 5 pears, 1 bananas; 1 apples, 4 pears, 4 bananas; 1 apples, 7 pears, 3 bananas; 1 pears; 1 pears +Orders day 85: 5 apples, 5 pears; 7 apples, 1 bananas; 2 apples, 3 pears, 1 bananas; 10 apples, 2 pears; 7 apples, 7 pears, 1 bananas +Orders day 86: 3 apples, 1 pears, 4 bananas; 10 apples, 4 pears; 14 apples, 5 pears; 17 apples, 3 pears; 13 apples, 2 pears; 5 apples, 4 bananas +Orders day 87: 12 apples, 16 pears, 4 bananas; 9 apples, 1 pears, 19 bananas; 3 apples, 15 pears +Orders day 88: 12 pears, 9 bananas; 3 apples, 1 pears, 8 bananas; 1 apples, 5 pears, 6 bananas; 1 pears, 9 bananas; 3 pears, 6 bananas +Orders day 89: 1 apples, 4 pears, 17 bananas; 11 apples, 10 pears, 1 bananas; 5 apples, 7 pears, 9 bananas; 4 apples, 1 pears, 2 bananas; 8 apples, 5 pears, 16 bananas; 5 pears, 11 bananas +Orders day 90: 6 apples, 3 pears, 13 bananas; 7 pears, 12 bananas; 1 apples, 4 pears, 8 bananas; 5 apples, 8 bananas +Orders day 91: 7 apples, 1 pears, 4 bananas; 2 apples, 1 pears, 2 bananas; 5 apples, 1 pears; 6 pears, 2 bananas; 10 pears, 2 bananas; 1 apples, 18 pears +Orders day 92: 14 apples, 7 pears; 14 apples, 7 pears, 1 bananas; 15 apples, 8 pears, 1 bananas; 10 apples, 5 pears +Orders day 93: 9 apples, 16 bananas; 11 apples, 5 pears, 5 bananas; 1 apples, 3 pears, 16 bananas; 4 apples, 5 pears, 3 bananas; 10 apples, 8 pears, 8 bananas; 9 apples, 4 pears, 10 bananas +Orders day 94: 11 apples, 19 pears, 4 bananas; 5 apples, 13 pears, 18 bananas; 6 apples, 15 pears, 16 bananas; 13 apples, 10 pears, 20 bananas; 3 apples, 10 pears +Orders day 95: 5 apples, 9 pears, 1 bananas; 2 apples, 13 pears, 5 bananas; 6 apples, 3 pears, 5 bananas +Orders day 96: 4 apples, 1 pears, 2 bananas; 5 apples, 1 pears, 2 bananas; 5 apples, 5 pears, 1 bananas; 1 apples, 8 pears; 3 apples, 8 pears, 1 bananas +Orders day 97: 11 apples; 1 apples, 4 pears, 12 bananas; 8 apples, 5 pears, 13 bananas; 9 apples, 10 pears, 5 bananas; 1 apples, 11 pears, 13 bananas; 12 apples, 6 pears, 9 bananas +Orders day 98: 6 apples, 10 pears, 1 bananas; 1 apples, 13 pears, 8 bananas; 9 pears, 10 bananas; 8 apples, 11 pears, 11 bananas; 8 apples, 1 pears, 8 bananas; 1 apples, 10 pears +Orders day 99: 13 apples, 6 pears, 16 bananas; 6 apples, 15 pears, 13 bananas; 17 apples, 8 pears, 14 bananas +Orders day 100: 13 apples, 1 bananas; 17 apples, 1 pears, 5 bananas; 4 apples, 1 bananas \ No newline at end of file