diff --git a/friends/Cargo.toml b/friends/Cargo.toml new file mode 100644 index 0000000..d5abdcc --- /dev/null +++ b/friends/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "vectors" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/friends/src/main.rs b/friends/src/main.rs new file mode 100644 index 0000000..5cf98e6 --- /dev/null +++ b/friends/src/main.rs @@ -0,0 +1,88 @@ +use std::io; + +fn main() { + let mut friends: Vec = Vec::new(); + + friends = init_list(); + println!("you're friends with {:?}", friends); + println!("1. update\n2. quit"); + + let mut choice = String::new(); + + io::stdin() + .read_line(&mut choice) + .expect("failed to read line!"); + + let choice: u32 = match choice.trim().parse() { + Ok(num) => num, + Err(_) => { + todo!(); + } + }; + + if choice == 1 { + update_list(&mut friends); + println!("updated friends list {:?}", friends); + } else { + return; + } +} + +fn update_list(friends: &mut Vec) { + println!("\t...your friends as of now are: {:?}", friends); + println!("...which one would you like to update?"); + + let mut index = String::new(); + + io::stdin() + .read_line(&mut index) + .expect("failed to read line!"); + + let index: usize = match index.trim().parse() { + Ok(num) => num, + Err(_) => { + todo!(); + } + }; + + println!("...and you would like to replace them with: "); + let mut to_update_with = String::new(); + + io::stdin() + .read_line(&mut to_update_with) + .expect("failed to read line!"); + + friends[index - 1] = to_update_with; +} + +fn init_list() -> Vec { + println!("how many friends do you have?"); + + let mut friend_count = String::new(); + + io::stdin() + .read_line(&mut friend_count) + .expect("failed to read line!"); + + let friend_count: u32 = match friend_count.trim().parse() { + Ok(num) => num, + Err(_) => { + todo!(); + } + }; + + let mut names = Vec::new(); + + for i in 0..friend_count { + println!("\tenter name of friend {}", i + 1); + + let mut name = String::new(); + io::stdin() + .read_line(&mut name) + .expect("failed to read line!"); + + names.push(name); + } + + names +} diff --git a/picasso/src/main.rs b/picasso/src/main.rs index 27ff7e7..3464e60 100644 --- a/picasso/src/main.rs +++ b/picasso/src/main.rs @@ -56,6 +56,7 @@ fn main() { print_result(&result); } + fn compare(r1: &Rectangle, r2: &Rectangle, r3: &Rectangle) -> [bool; 6] { let mut result: [bool; 6] = [false; 6]; diff --git a/slot-machine/src/main.rs b/slot-machine/src/main.rs index 48f5f6f..34720ff 100644 --- a/slot-machine/src/main.rs +++ b/slot-machine/src/main.rs @@ -13,35 +13,39 @@ fn main() { print_rules(); let tries = manage_balance(load_money()); - let mut total_payout: u32 = 0; + if tries == 0 { + return; + } else { + let mut total_payout: u32 = 0; - for _ in 0..tries { - let outcome: SpinResult = spin(); + for _ in 0..tries { + let outcome: SpinResult = spin(); - match outcome { - SpinResult::Ace(num) => { - println!("\tAce! +${num}"); - total_payout += num; - } - SpinResult::King(num) => { - println!("\tKing! +${num}"); - total_payout += num; - } - SpinResult::Queen(num) => { - println!("\tQueen! +${num}"); - total_payout += num; - } - SpinResult::Jack(num) => { - println!("\tJack! +${num}"); - total_payout += num; - } - SpinResult::Joker(num) => { - println!("\tJoker! +${num}"); - total_payout += num; + match outcome { + SpinResult::Ace(num) => { + println!("\tAce! +${num}"); + total_payout += num; + } + SpinResult::King(num) => { + println!("\tKing! +${num}"); + total_payout += num; + } + SpinResult::Queen(num) => { + println!("\tQueen! +${num}"); + total_payout += num; + } + SpinResult::Jack(num) => { + println!("\tJack! +${num}"); + total_payout += num; + } + SpinResult::Joker(num) => { + println!("\tJoker! +${num}"); + total_payout += num; + } } } + println!("\nyou walk away with ${total_payout}"); } - println!("\nyou walk away with ${total_payout}"); } fn spin() -> SpinResult { diff --git a/variables/src/main.rs b/variables/src/main.rs index 266d59b..81d6a03 100644 --- a/variables/src/main.rs +++ b/variables/src/main.rs @@ -35,22 +35,20 @@ fn main() { ); println!("\ncaroline replaced kyle"); + employees[3] = "caroline"; println!("employees are: {:?}", employees); employee_of_the_month = (months[1], employees[1], ratings[2]); - let (x, y, z) = employee_of_the_month; println!("\nin {x}, {y} was the employee of the month with a rating of {z}"); employee_of_the_month = (months[2], employees[2], ratings[1]); - let (x, y, z) = employee_of_the_month; println!("\nin {x}, {y} was the employee of the month with a rating of {z}"); employee_of_the_month = (months[3], employees[3], ratings[0]); - let (x, y, z) = employee_of_the_month; println!("\nin {x}, {y} was the employee of the month with a rating of {z}"); } diff --git a/vectors/src/main.rs b/vectors/src/main.rs index 5cf98e6..5a7a3bb 100644 --- a/vectors/src/main.rs +++ b/vectors/src/main.rs @@ -1,88 +1,59 @@ -use std::io; - fn main() { - let mut friends: Vec = Vec::new(); + //empty vector must have a type + let mut v: Vec = Vec::new(); - friends = init_list(); - println!("you're friends with {:?}", friends); - println!("1. update\n2. quit"); + //otherwise vectors infer types at the time of assignment + let mut v1 = vec!["john", "jack", "jacob"]; - let mut choice = String::new(); + v1.push("jill"); + v.push(2); - io::stdin() - .read_line(&mut choice) - .expect("failed to read line!"); + println!("{:?}, {:?}", v, v1); - let choice: u32 = match choice.trim().parse() { - Ok(num) => num, - Err(_) => { - todo!(); - } - }; + //reading from a vector + //using get and a simple reference + let fetch = &v[0]; + let fetch1 = v1.get(2); - if choice == 1 { - update_list(&mut friends); - println!("updated friends list {:?}", friends); - } else { - return; - } -} + println!("{:?}, {:?}", fetch, fetch1); -fn update_list(friends: &mut Vec) { - println!("\t...your friends as of now are: {:?}", friends); - println!("...which one would you like to update?"); - - let mut index = String::new(); - - io::stdin() - .read_line(&mut index) - .expect("failed to read line!"); - - let index: usize = match index.trim().parse() { - Ok(num) => num, - Err(_) => { - todo!(); - } - }; - - println!("...and you would like to replace them with: "); - let mut to_update_with = String::new(); - - io::stdin() - .read_line(&mut to_update_with) - .expect("failed to read line!"); - - friends[index - 1] = to_update_with; -} - -fn init_list() -> Vec { - println!("how many friends do you have?"); - - let mut friend_count = String::new(); - - io::stdin() - .read_line(&mut friend_count) - .expect("failed to read line!"); - - let friend_count: u32 = match friend_count.trim().parse() { - Ok(num) => num, - Err(_) => { - todo!(); - } - }; - - let mut names = Vec::new(); - - for i in 0..friend_count { - println!("\tenter name of friend {}", i + 1); - - let mut name = String::new(); - io::stdin() - .read_line(&mut name) - .expect("failed to read line!"); - - names.push(name); + //interating over vector values + for i in &v1 { + println!("\t{i}"); } - names + let mut v2 = vec![10, 20, 30]; + let v2 = add_ten(&mut v2).clone(); + println!("{:?}", v2); + + using_enums(); +} + +fn add_ten(vec: &mut Vec) -> &Vec { + for i in &mut *vec { + *i += 10; + } + vec +} + +#[derive(Debug)] +enum Groups { + Cities(String), + NumericCodes(i32), +} + +fn using_enums() { + let japan = vec![ + Groups::Cities(String::from("Tokyo")), + Groups::NumericCodes(1), + ]; + + let china = vec![ + Groups::Cities(String::from("Beijing")), + Groups::NumericCodes(2), + ]; + + let places = vec![japan, china]; + + println!("{:?}", places); }