diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2022-12-06 14:03:58 +0200 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2022-12-06 14:03:58 +0200 |
| commit | db39b5079219af288986a9c12b0bdd5c87a5a16a (patch) | |
| tree | 90a5f998234673132d5f8189a37846ab3b845a7d /2022 | |
| parent | 3ed1c774779d83ccd09e350cc420d1dff1603b98 (diff) | |
| download | aoc-db39b5079219af288986a9c12b0bdd5c87a5a16a.tar.xz aoc-db39b5079219af288986a9c12b0bdd5c87a5a16a.zip | |
Day6 done in Rust
Diffstat (limited to '2022')
| -rw-r--r-- | 2022/Rust/Cargo.toml | 4 | ||||
| -rw-r--r-- | 2022/Rust/data/day6.prod | 1 | ||||
| -rw-r--r-- | 2022/Rust/data/day6.test | 1 | ||||
| -rw-r--r-- | 2022/Rust/src/day5.rs | 16 | ||||
| -rw-r--r-- | 2022/Rust/src/day6.rs | 57 |
5 files changed, 75 insertions, 4 deletions
diff --git a/2022/Rust/Cargo.toml b/2022/Rust/Cargo.toml index fb7aa9e..e11f9fc 100644 --- a/2022/Rust/Cargo.toml +++ b/2022/Rust/Cargo.toml @@ -28,3 +28,7 @@ path = "src/day4.rs" [[bin]] name = "day5" path = "src/day5.rs" + +[[bin]] +name = "day6" +path = "src/day6.rs" diff --git a/2022/Rust/data/day6.prod b/2022/Rust/data/day6.prod new file mode 100644 index 0000000..1daaf7d --- /dev/null +++ b/2022/Rust/data/day6.prod @@ -0,0 +1 @@ +hlfhfzffqnnrlnnvnmmgbgwgttbppcrcnnmdmfdmmgwwrrqnrrscrctcbttvcvtvvhchjhccjgjttmddplplqplqlbqlblrrbrvvprpffpmmzpmpcczjzzbwwfssvrrvggncgncgcwczzswwqqjjflffpwfpwpbwpwpdpbpvvqffcfcjffjllncczfzzmhzzmddgdrgrwwjzzdjjsnjsjfsjsjhhcchlccchqchhzzpnngdgndnpnppsdsggbvgvgpprqrqmmlzmzllvrrcvclcwczcqqcdcfcqqmmzbzdzdjzdjdmjdjzdjjcvjvcjvcvssltstttfbtftrfrlrdllrqqfssslccjdcjdjfdjfjqjnqjnjnrnddtnndtnnztzqztqztqzzpmzmggzrgrwwdqwdwcdwdnnmlmgmtmtstwssbffcnclclnclcjjcjpcpqcpqcpqpmqqfccpcjppnspsnnzggnpntndtdqtthwhnhwnwllzhlzhlzzghzghhlhvhwhjhfjjcnjnvjnjvvqccdmmgddllnmnrrdtdnncggfhgfglfgfmfnnpvvggznnwvnwwfgghrrfwrwzwszzzldzdldhlhblhblhbbbgjgsjggmqqmrrzggrhhwpwdpwdpwplpgpbggtssqffbqfbqbnnsqnqfnngcnnmwnmnbmmmslsjllbtbbpllltzzhgzztllsdllrvvhvjvbbhcbhchmchcctbcttvccgwcwpcchrcrdrdggcrrntrrfllcffbdfflrrrgbgrbbbdqbqjbbgbgrrqwqtwqwhwghwhzwwcswsnwnqqjhjhwhfwhffdfgddgjgsjgjhgglhlwhlhssfqfhhdmdnmnppdcddfzzhmhqqntqnnjvnjvjddcvcgcbgbbpjbjtbjjfgftgffplljfjrrhqqpddlssrvsrvrpppsllsdsqqqzzfttqsqzssjbbrnbnnrbbsrshsrrshrhwhbwbrrsrfrttfqtfqqfddvrvjrjvjsjhjsjdjqdjjlqjjjgcjcmcncfcrcwrwsrsslffzszmsszrsssrnrjjvbvpvcppptbbhhrddbcbggbqbmmsqqwggfpfbblmldmmpmwpwfwjfjsjnjmmpllccjzcjcwwpswshhpthhzchctcbcrrrrmvrvrdvvjmmvgmgwglghllvmllzlzzsvzzrmmhnnsjnnpvpwvpwwmvwwdqqdffhhhmccfgfvggchcctrrmdrrhrhnhnzzgpzzgttnhthvhzzqvvvwpwqpqdppsnnrgnnhphphmhcmcrmrvvqlvqqsccqhchzhwwmvmzmczzgsgdsggthgglrlnrlllbdllhwlwltwwcswsgssbhbsbvsbsbwbhbnncrcllttbrbppjccfpfhhgshschsccmrcmmcrrrzvvrcrggmwgwjwnwjjbffjddjnjgngqgdgnndznndvvfqfgfvvrvqrvvpllnsszbsbdbbdzbdbzbqbzznrznzjzpptcptccvwccfscffrftrrsnsvvswvvhbhzzfbzffncchhcnngzzcpcmmfttsntnjjsccqbcqqmzzgppdhppdtppmffgtgvvlzlpptdtttdppqjqtqctcrrzsswwtnwtnwnqqvbbdgjhvmmzpnhfvsbddzhgdwcnfdstvhhbzlzcfjwhlptbhmbmblprtsdmrdhbbbwpplnzgdnrzjmgzgpqbggnqvwwtntzgfwqrztqtdrsnhpfzswptggnvbszdcrmrhhtlrrfnpqrnpwrbmhlfwmdqqdbqrwbzqjbzwrgmbgrtzrhdclqfgsrtsgfwqrnnqgwsncmpgffggssrqvwjlhpsghbqdtzwmvzzvcmzsjqvprvcqwqjbcqcqrhpwwcsrscgmfdppbgvmnrdfrppblznbstnjzwwgstjvtprjbhtpdfgrhdjnjmnlbfwggzhcngvcwvcfpcwdtdppwjrdzsnjlnrzbfqqshlnzvwsmscgpfwjzhtwgfwgzdhbdwwzbsmfwwbmvrlrpswnjlmfbfzhwvcmgwfzssmmtjlwtrpwpwgnspbgchdncbfcpjsvtzjqtwqwjwgbhrbwvhqbcstsgsnwsjmhrlrvzgqhqfrmnrjdrhdjwcwctpdrzctlvnfzmzwhsnfprlzgzjpqvzchlmvbhffhpfjtvsdbvbdmwgvmqpflhwwndbqthmmwshdtspsrvqdflmmzwbqbqmpfdwjmvpbzdnqzfmhzdgldqjjvgpfcqftvjzwnzmfqdggrwlfzdhjnhmtrjbnllgqpntwmhnwtglnqdwbqdblpwnnrdwzpsqzfwqcmhqhnpsdcwvdldphgnrtqzdbnnzdzfttldrqcztlvlrgpdqzrcthslmtqhfvbzrfgnlrprcpbsctqhspbhnjtzrzhqjzszbzdthttqmbznzssftztwlggmdqqdtfllqjzjtvpgjfhtbwtbmtjplqnbdmsvlnqcwtdbdvfjnzgsmpnhbvvwwfbrgffjqfsccdjdwvbsdhqwfzvcpjzjbdjgrdctjplhwbdhhnbnwstvndnnwtsgbhzbvwdshvmnbwsthlrggtmddvjbfzfrnrdrqfjpslrccctzpjbwpdbhlbzfmwbltcqfngdprvfhgcszdtpnrcpdmllfnlspgrdrpwqmqbmrglvlrsmrfqrtzzgjcvqtqzpmghjrvmdmvvqztrjzbzjwdqsmrwpqnswbzhjbzzhdvmnfdsztzdzrjssgnnfqvbtsqrrmcppjgrmnstrnrlwjvvcczqlcbmwqzdfpssfwdfrvwtstwchdgwtrhhcmppcqlmrqlnwqccfphsdhbsbmtjvpcwwjrmrllbpnrmpbvwgwbftpdpphccwqcblcnvvbbppscmnjqgddllbnbvmmqzdffrrjtqwllzgpqrmnlfqrptzqmdmnrfnjpvqvjbsqrhljslgqqcqqtmtbwjrpphtjgjbqpzmzrzjrfjwcdcnbsjfljclffjplnrrcfbmhphtcjrzlrvvjcznpgpnrdwwqvgnbnzqnlcghhgwvhqbvjzfbdvhrzlqfbtlqhpltfjlfpbnjbphmmpntzqgjmwjtchwmlwvfjmfflqzpqnvvrgnbddzlfpdpdjghfgbsfddjspnfdwvqppncmdgfrnvrpcrflhgjgbwdsbwblfcwbtlrrnjjdhbvmrzgsvjwgfnnhqfbvhprlmwwqgclzlbqbrdspcbhftmdscsmpwrggrmnsvjphjmzmmrlrhnmdhwjlbmjchtvsrcplfspsssjznmzcrqnsjjtwjzvlhshbptqwwvjhjvzrhphphsbphpnzpfbwcdnqrhrrvlrwrztlpqnrcfzrncsvpzqzgslrlrwhvtgjmfncldqmvshlmnlpqbgvnwqfcthgrgllmqrjqmfgznspgltpptglpdcvhtzsprprbldbzhbmjsqzwvjggwhsczltcvgwqhspzpzvljwqjgrgtwswjdswlzjzslrsslvqzncjwhbbjpbdthqpgmhfglggmlrgwdsplgscrwstntvrhjzjjlshtgmnnhvsjwfmcjbpzjcstmnpvtbgrfcfdwjljsrfhdphrdcslwhgvlnwltwchplvfzntfgcnlsvzrvnnczhhqdlwjvqprhmtjdtwmppffmszzzqtfrgnhnzqgqzhrjzgntcszstrfhhtptgvswvzvjcgcntmhzzmdgsmtgzhpfvqfnwmsjdhtfgmmbrrfsdlptchqqzqdqjncmtpznfssrcnmcdnthglmfzsfgltrndqsfmdftmfgchbwmzgrtjvgqtshlltthnnpqnzfrchzhdzrrnpzvfzblrmhwdwjnqdptlbvndmmlhzhvsfdlmlhqrgqqzsdqtpczwcrwcbsftvvphfbwjrvrnrcqbbcsqgnhltwzvllljcvpwjgslbmngcdmpdvjlgcnrzwqjdgrblncpqmrgjmpqjzvdmcmwfnwqlszdgwqdfznhsnpsjrfwrqpqmpvhstmzgqblfmcfvwljbhdfhdmqcvrwnqcstwtzgmng diff --git a/2022/Rust/data/day6.test b/2022/Rust/data/day6.test new file mode 100644 index 0000000..7980a82 --- /dev/null +++ b/2022/Rust/data/day6.test @@ -0,0 +1 @@ +mjqjpqmgbljsphdztnvjfqwrcgsmlb diff --git a/2022/Rust/src/day5.rs b/2022/Rust/src/day5.rs index 12ff7a8..d344ddd 100644 --- a/2022/Rust/src/day5.rs +++ b/2022/Rust/src/day5.rs @@ -73,17 +73,25 @@ impl FromStr for Command { fn apply_command(stacks: &mut Vec<Stack>, cmd: &Command, part1: bool) { if part1 { for _ in 0..cmd.num_of_times { - let element_to_push = stacks[cmd.from - 1].stack.pop_back().expect("welp the stack is empty"); + let element_to_push = stacks[cmd.from - 1] + .stack + .pop_back() + .expect("welp the stack is empty"); stacks[cmd.target - 1].stack.push_back(element_to_push); } } else { - let mut tmp_stack :VecDeque<StackElement> = VecDeque::new(); + let mut tmp_stack: VecDeque<StackElement> = VecDeque::new(); for _ in 0..cmd.num_of_times { - let element_to_push = stacks[cmd.from - 1].stack.pop_back().expect("welp the stack is empty"); + let element_to_push = stacks[cmd.from - 1] + .stack + .pop_back() + .expect("welp the stack is empty"); tmp_stack.push_back(element_to_push); } for _ in 0..cmd.num_of_times { - stacks[cmd.target - 1].stack.push_back(tmp_stack.pop_back().unwrap()); + stacks[cmd.target - 1] + .stack + .push_back(tmp_stack.pop_back().unwrap()); } } } diff --git a/2022/Rust/src/day6.rs b/2022/Rust/src/day6.rs new file mode 100644 index 0000000..b3afab6 --- /dev/null +++ b/2022/Rust/src/day6.rs @@ -0,0 +1,57 @@ +use std::collections::HashSet; + +fn solve_functional(data: &str, window: usize) -> usize { + data.as_bytes() + .windows(window) + .map(|arr| { + arr.into_iter() + .map(|ele| *ele as usize) + .collect::<HashSet<_>>() + }) + .position(|set| set.len() == window) + .unwrap() + + window +} + +fn solve_part_one(data: &str) -> usize { + let v: Vec<char> = data.chars().collect(); + for i in 0..v.len() - 4 { + let mut st: HashSet<char> = HashSet::new(); + for j in i..i + 4 { + st.insert(v[j]); + } + if st.len() == 4 { + return i + 4; + } + } + unreachable!() +} + +fn solve_part_two(data: &str) -> usize { + let v: Vec<char> = data.chars().collect(); + for i in 0..v.len() - 14 { + let mut st: HashSet<char> = HashSet::new(); + for j in i..i + 14 { + st.insert(v[j]); + } + if st.len() == 14 { + return i + 14; + } + } + unreachable!() +} + +fn main() { + let data_test = include_str!("../data/day6.test"); + let data_prod = include_str!("../data/day6.prod"); + println!("{}", solve_part_one(data_test)); + println!("{}", solve_part_one(data_prod)); + println!("{}", solve_part_two(data_test)); + println!("{}", solve_part_two(data_prod)); + + + println!("{}", solve_functional(data_test, 4)); + println!("{}", solve_functional(data_prod, 4)); + println!("{}", solve_functional(data_test, 14)); + println!("{}", solve_functional(data_prod, 14)); +} |
