Wrote program for Day 60

This commit is contained in:
Mariano Riefolo 2024-09-23 09:10:15 +02:00
parent 4ed0deba71
commit 7ee015e03b
5 changed files with 70 additions and 1 deletions

View File

@ -106,7 +106,7 @@ We encourage you to share your progress and ask questions in the Discussions sec
| Day #57 | [Magic Sigil Generator](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-09/Day-57_Magic-Sigil-Generator) | :white_check_mark: |
| Day #58 | [Create A Dice Roller](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-09/Day-58_Create-A-Dice-Roller) | :white_check_mark: |
| Day #59 | [Perfectly Balanced](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-09/Day-59_Perfectly-Balanced) | :white_check_mark: |
| Day #60 | [A Game Of Threes](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-09/Day-60_A-Game-Of-Thrones) | :white_large_square: |
| Day #60 | [A Game Of Threes](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-09/Day-60_A-Game-Of-Thrones) | :white_check_mark: |
| Day #61 | [Write A Web Crawler](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-09/Day-61_Write-A-Web-Crawler) | :white_large_square: |
| Day #62 | [Funny Plant](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-09/Day-62_Funny-Plant) | :white_large_square: |
| Day #63 | [The Rabbit Problem](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-09/Day-63_The-Rabbit-Problem) | :white_large_square: |

View File

@ -0,0 +1,6 @@
[package]
name = "day60"
version = "0.1.0"
edition = "2021"
[dependencies]

View File

@ -0,0 +1,25 @@
pub fn game_of_trees(mut number: usize) -> Vec<(usize, i8)> {
let mut result = Vec::new();
while number != 1 {
match number % 3 {
0 => {
result.push((number, 0));
number /= 3;
}
1 => {
result.push((number, -1));
number = (number - 1) / 3;
}
2 => {
result.push((number, 1));
number = (number + 1) / 3;
}
_ => {
eprintln!("???");
}
}
}
result
}

View File

@ -0,0 +1,26 @@
use std::io::{self, Write};
use day60::game_of_trees;
fn read_usize() -> Result<usize, std::num::ParseIntError> {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
input.trim().parse()
}
fn main() {
print!("Enter the starting number for the game of trees: ");
io::stdout().flush().unwrap();
let n = match read_usize() {
Ok(n) => n,
Err(_) => {
println!("Invalid input. Please enter a valid number.");
return;
}
};
let result = game_of_trees(n);
for el in result {
println!("{} {}", el.0, el.1);
}
println!("1");
}

View File

@ -0,0 +1,12 @@
#[cfg(test)]
mod example {
use day60::game_of_trees;
#[test]
fn example() {
assert_eq!(
game_of_trees(100),
vec![(100, -1), (33, 0), (11, 1), (4, -1)]
);
}
}