Julio Biason
2 years ago
6 changed files with 2935 additions and 0 deletions
@ -0,0 +1,323 @@ |
|||||||
|
# This file is automatically @generated by Cargo. |
||||||
|
# It is not intended for manual editing. |
||||||
|
version = 3 |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "bitflags" |
||||||
|
version = "1.3.2" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "cc" |
||||||
|
version = "1.0.77" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "clap" |
||||||
|
version = "4.0.29" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "4d63b9e9c07271b9957ad22c173bae2a4d9a81127680962039296abcd2f8251d" |
||||||
|
dependencies = [ |
||||||
|
"bitflags", |
||||||
|
"clap_derive", |
||||||
|
"clap_lex", |
||||||
|
"is-terminal", |
||||||
|
"once_cell", |
||||||
|
"strsim", |
||||||
|
"termcolor", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "clap_derive" |
||||||
|
version = "4.0.21" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" |
||||||
|
dependencies = [ |
||||||
|
"heck", |
||||||
|
"proc-macro-error", |
||||||
|
"proc-macro2", |
||||||
|
"quote", |
||||||
|
"syn", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "clap_lex" |
||||||
|
version = "0.3.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" |
||||||
|
dependencies = [ |
||||||
|
"os_str_bytes", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "day2" |
||||||
|
version = "0.1.0" |
||||||
|
dependencies = [ |
||||||
|
"clap", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "errno" |
||||||
|
version = "0.2.8" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" |
||||||
|
dependencies = [ |
||||||
|
"errno-dragonfly", |
||||||
|
"libc", |
||||||
|
"winapi", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "errno-dragonfly" |
||||||
|
version = "0.1.2" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" |
||||||
|
dependencies = [ |
||||||
|
"cc", |
||||||
|
"libc", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "heck" |
||||||
|
version = "0.4.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "hermit-abi" |
||||||
|
version = "0.2.6" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" |
||||||
|
dependencies = [ |
||||||
|
"libc", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "io-lifetimes" |
||||||
|
version = "1.0.3" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" |
||||||
|
dependencies = [ |
||||||
|
"libc", |
||||||
|
"windows-sys", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "is-terminal" |
||||||
|
version = "0.4.1" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "927609f78c2913a6f6ac3c27a4fe87f43e2a35367c0c4b0f8265e8f49a104330" |
||||||
|
dependencies = [ |
||||||
|
"hermit-abi", |
||||||
|
"io-lifetimes", |
||||||
|
"rustix", |
||||||
|
"windows-sys", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "libc" |
||||||
|
version = "0.2.138" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "linux-raw-sys" |
||||||
|
version = "0.1.3" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "once_cell" |
||||||
|
version = "1.16.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "os_str_bytes" |
||||||
|
version = "6.4.1" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "proc-macro-error" |
||||||
|
version = "1.0.4" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro-error-attr", |
||||||
|
"proc-macro2", |
||||||
|
"quote", |
||||||
|
"syn", |
||||||
|
"version_check", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "proc-macro-error-attr" |
||||||
|
version = "1.0.4" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro2", |
||||||
|
"quote", |
||||||
|
"version_check", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "proc-macro2" |
||||||
|
version = "1.0.47" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" |
||||||
|
dependencies = [ |
||||||
|
"unicode-ident", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "quote" |
||||||
|
version = "1.0.21" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro2", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "rustix" |
||||||
|
version = "0.36.5" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588" |
||||||
|
dependencies = [ |
||||||
|
"bitflags", |
||||||
|
"errno", |
||||||
|
"io-lifetimes", |
||||||
|
"libc", |
||||||
|
"linux-raw-sys", |
||||||
|
"windows-sys", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "strsim" |
||||||
|
version = "0.10.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "syn" |
||||||
|
version = "1.0.105" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro2", |
||||||
|
"quote", |
||||||
|
"unicode-ident", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "termcolor" |
||||||
|
version = "1.1.3" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" |
||||||
|
dependencies = [ |
||||||
|
"winapi-util", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "unicode-ident" |
||||||
|
version = "1.0.5" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "version_check" |
||||||
|
version = "0.9.4" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "winapi" |
||||||
|
version = "0.3.9" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" |
||||||
|
dependencies = [ |
||||||
|
"winapi-i686-pc-windows-gnu", |
||||||
|
"winapi-x86_64-pc-windows-gnu", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "winapi-i686-pc-windows-gnu" |
||||||
|
version = "0.4.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "winapi-util" |
||||||
|
version = "0.1.5" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" |
||||||
|
dependencies = [ |
||||||
|
"winapi", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "winapi-x86_64-pc-windows-gnu" |
||||||
|
version = "0.4.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "windows-sys" |
||||||
|
version = "0.42.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" |
||||||
|
dependencies = [ |
||||||
|
"windows_aarch64_gnullvm", |
||||||
|
"windows_aarch64_msvc", |
||||||
|
"windows_i686_gnu", |
||||||
|
"windows_i686_msvc", |
||||||
|
"windows_x86_64_gnu", |
||||||
|
"windows_x86_64_gnullvm", |
||||||
|
"windows_x86_64_msvc", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "windows_aarch64_gnullvm" |
||||||
|
version = "0.42.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "windows_aarch64_msvc" |
||||||
|
version = "0.42.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "windows_i686_gnu" |
||||||
|
version = "0.42.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "windows_i686_msvc" |
||||||
|
version = "0.42.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "windows_x86_64_gnu" |
||||||
|
version = "0.42.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "windows_x86_64_gnullvm" |
||||||
|
version = "0.42.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "windows_x86_64_msvc" |
||||||
|
version = "0.42.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" |
@ -0,0 +1,17 @@ |
|||||||
|
[package] |
||||||
|
name = "day2" |
||||||
|
version = "0.1.0" |
||||||
|
edition = "2021" |
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html |
||||||
|
|
||||||
|
[dependencies] |
||||||
|
clap = { version = "4.0.29", features = ["derive"] } |
||||||
|
|
||||||
|
[[bin]] |
||||||
|
name = "step1" |
||||||
|
path = "src/step1.rs" |
||||||
|
|
||||||
|
[[bin]] |
||||||
|
name = "step2" |
||||||
|
path = "src/step2.rs" |
@ -0,0 +1,46 @@ |
|||||||
|
use std::fs::File; |
||||||
|
use std::io::BufRead; |
||||||
|
use std::io::BufReader; |
||||||
|
use std::path::PathBuf; |
||||||
|
|
||||||
|
use clap::Parser; |
||||||
|
|
||||||
|
#[derive(Parser)] |
||||||
|
struct Cli { |
||||||
|
filename: PathBuf, |
||||||
|
} |
||||||
|
|
||||||
|
fn main() { |
||||||
|
let cli = Cli::parse(); |
||||||
|
let file = File::open(cli.filename).expect("Can't read file"); |
||||||
|
let reader = BufReader::new(file); |
||||||
|
|
||||||
|
let mut score = 0; |
||||||
|
for line in reader.lines() { |
||||||
|
let line = line.unwrap(); |
||||||
|
if line.is_empty() { |
||||||
|
continue; |
||||||
|
} |
||||||
|
let mut play = line.trim().split(" "); |
||||||
|
let their_play = play.next().unwrap(); |
||||||
|
let my_play = play.next().unwrap(); |
||||||
|
|
||||||
|
// A/X => Rock
|
||||||
|
// B/Y => Paper
|
||||||
|
// C/Z => Scissors
|
||||||
|
match (their_play, my_play) { |
||||||
|
("A", "Y") | ("B", "Z") | ("C", "X") => score += 6, // win
|
||||||
|
("A", "X") | ("B", "Y") | ("C", "Z") => score += 3, // draw
|
||||||
|
_ => (), // loss
|
||||||
|
} |
||||||
|
|
||||||
|
match my_play { |
||||||
|
"Z" => score += 3, |
||||||
|
"Y" => score += 2, |
||||||
|
"X" => score += 1, |
||||||
|
_ => (), |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
println!("Your score: {}", score); |
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
use std::fs::File; |
||||||
|
use std::io::BufRead; |
||||||
|
use std::io::BufReader; |
||||||
|
use std::path::PathBuf; |
||||||
|
|
||||||
|
use clap::Parser; |
||||||
|
|
||||||
|
#[derive(Parser)] |
||||||
|
struct Cli { |
||||||
|
filename: PathBuf, |
||||||
|
} |
||||||
|
|
||||||
|
fn main() { |
||||||
|
let cli = Cli::parse(); |
||||||
|
let file = File::open(cli.filename).expect("Can't read file"); |
||||||
|
let reader = BufReader::new(file); |
||||||
|
|
||||||
|
let mut score = 0; |
||||||
|
for line in reader.lines() { |
||||||
|
let line = line.unwrap(); |
||||||
|
if line.is_empty() { |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
let mut play = line.trim().split(' '); |
||||||
|
let their_play = play.next().unwrap(); |
||||||
|
let play_result = play.next().unwrap(); |
||||||
|
|
||||||
|
// A = Rock (1), B = Paper (2), C = Scissors (3)
|
||||||
|
// X = Lose (0), Y = Draw (3), Z = Win (6)
|
||||||
|
score += match (their_play, play_result) { |
||||||
|
("A", "X") => 0 + 3, // they play rock, I lose, I played scissors
|
||||||
|
("B", "X") => 0 + 1, // they play paper, I lose, I played rock
|
||||||
|
("C", "X") => 0 + 2, // they play scissors, I lose, I played paper
|
||||||
|
("A", "Y") => 3 + 1, // they play rock, we draw, I played rock
|
||||||
|
("B", "Y") => 3 + 2, // they play paper, we draw, I played paper
|
||||||
|
("C", "Y") => 3 + 3, // they play scissors, we draw, I played scissors
|
||||||
|
("A", "Z") => 6 + 2, // they play rock, I win, I played paper
|
||||||
|
("B", "Z") => 6 + 3, // they played paper, I win, I played scissors
|
||||||
|
("C", "Z") => 6 + 1, // they played sicssors, I win, I played rock
|
||||||
|
_ => 0, |
||||||
|
}; |
||||||
|
} |
||||||
|
println!("Your score; {}", score); |
||||||
|
} |
Loading…
Reference in new issue