Compare commits
2 Commits
44e5a16b48
...
dadbc79893
| Author | SHA1 | Date | |
|---|---|---|---|
| dadbc79893 | |||
| 8c81c2032e |
1
aoc2022/inputs/day_5.txt
Normal file
1
aoc2022/inputs/day_5.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
pnnfhnhshrhmhwwmwzmznmnwmwfmfhfjfcjjtgtbggpdgdjjbjrjsjpjrrmddmgmpmddrhddnfnfzfpfvpfpprhhlffmtffqhhdtdcdsswsdwswmmfvvpdprrnnhhhtffnfbbznbznnvdnnbffjrfrbfrbrgbrrntnggrqqwtqwwgjgsswgwqwtwwsvwvbwvwrwlrlppzfzwfzzpmzzhqqzqlzlglzzmrmwrmwwvmwvvnppjfjttlffhjjjsccbggnffqgfgjjnccmdmzmllvnlnznttlvlttvnvgnvvqvmvqqzrqqcgglzzwtztwwmjmzjjnddsffqrqlrrvsvdvldvvlgvlvccdzczcqcpphggtnthhhtbhtttcjtjcjgcjcbbrhbbfrffgjgdgzddcttczzsccbpcpddcpcggmjgjddtcccthccfrccmdmhmddnwddfldffntnptnpttcptcptpfphhmfmwfwmmlblgbgvbvlltqltldttfcfcclgcllmplmlbbjnjzjnzzttnvvgddshddsqddggsqgqddsggdhghjgjhhgchhdmdjmjddgdhghrrphrrpnnqhhjwwqrrcmmslmmszzpgzpzzrmzmznzllnjnnlnbbdvdsdffbpffcmmnznqqcbbzvvjnjvvwqwgqqpnnzwnzwnzwwwlpwpzzfqzfqqwnqnbnfnqnbqqbggqnqdndrrzzlffbbgqgfgrfrqqsddnqnqjjgssqwqwcqcpcrrqppwpjjfnfpffhphwwmcwwznwznnplptlplnlsnlsldslslsffwtwftwtbtdbbjsjcczwwfllwtlwtlwlvwlwrwppsggvcvrrqcrqqvmqvmmbrrsbsfspspjpnnmpmqmcczgzffqmfmtmpppwzppzrpzrzsrrpqrpqpmpvmpvpttbqtqmtmjttqdqgggcppclcjcpcsppctpplpdpcppcmmdzmzddvhvhnhrrldllcwwbnwnssshlhrhthggtmggbjbjwwbvbttjllvrrfggngvngnmmvzzrrmddmcddztztctfccqpcpcqqvqppqcqdcdhhvhssgfgzgwwzmmnssvwwbqbhbnhnphpqqjcqcddfwfttqjtqtlttglljgjbgjgnnsqqvrvffqvqfqbffljjpffssqdsqstqqqldqqmhmsmsqqwtqwqdqgdgjjfbjffgbbrhhqghgppqgpgmpmmfzfhhfrhffgmfggpzgpzzhtzhhlbhhqbbzvvnvqnntptmmbhbdhdwwmjjcnnmsscqcbbtjtvjvwjvvmsmjmtmpmgghttcztzggpddbfbfgbbdsdrsrrqfqjjqfjjhzhtzzmdzzcgzgdzzmvmmfmjmgjmggmppbdppmzpppvfppzhhfsfwfhhpjpmmrjjpssdccjpjpwjppvdpphcpcjcfjfwjfwfjwfjjqcqcwqqqsmmmbbgdgwwpcwwdfdlflrltlgtthfhfjhhlthtddlgdggsjsrrdpdcppgttphpgpwppmpzmmrjmmvjvgvgfglfgllbqlqhllszzlwwhzzdfdcdtctptwtztfzzmjzjtjtrjrcrnrjjmwmnnbddgvgtgsstjsszmpqdmzgqflrbrspjmtzjcrmlzltmhgblghnwqvwwqwzbpnfrpdpblpjgshfccfbjfsnwvvhnjftsdnsgtzzjtzpmtfdvzrhtqpblhwgmqtgpbfvbdmsnrrrvvbstpsznvbbwgjfqjrhdvwvgptpglpfddhddmtglmjlpwlvfpbtbmgbplbzrlpdlvqzcwhbscpszgfstjpfdvfpmljlngrbgrdnnblzqrfpzsdvblpwbtnhdjclldvwvbwcwzfzbdspgwpfqjfbdbrqcshtlvcrdstnzggbwqnzbrfzbpnrtmvpbvdhcvdsdshgtvhfgdzljflppqbwclnvbhbczvrscjhlbgbfvwdjhnjsgmvwhpfgwbbmnndpnglfrmtfdzvqgfjdqfhgrhvpbqndmqnqccgwswwdsqjnbjtjbjdbqgjnmfbdvlnfwbnrdqgvgzzhmmbbdzfdvvpwhpbwbnzdcdpchrwlhfsjnhhjggvplmqggwjdsvjtpnpnqgldjjdcscrdltssjdrpcrfbgbcjfplhzgwbprfcslhpcngtszrghmwhzdqscbfrhzdwcffzvmjrmcjcstfvhplvrsglgsjnjtrpddsdfqjsndjnfmvdhfgdbzzflqhsrrwmrnlpqzmcddqbqvvzgtlztpgjnddtcnbmqsjlhmcszrmcjvwzpptlfqsmpvgnzvrjdwzpdwqgbmdgdtvjlmfczthjbcgfhbqpnmlbmrwwhfptzlbmfdhssznjcvjbmnjtnvzjhzczlrrdnttmmcbnzhqpplzqwgttwrnwfvmnptgqlfrnzvqpjfgrzwmlcwvtptvcvrlsrdwdgqfvffspmdbnnrqjttpqvhvdpbcrvzptwnhhfsqzchmncvttcdgdnlppcfzpmjpvbvqhlvplwvrmmbbggbwttwmvsqjlllsftprsmtmnzjcqfzblrllzgshfljchrjwjlpvhpbrtrsschzltrblgjnbgdnmwdggjhqggntblnhsvfgsbcblhmctbqzqwmhqnjhpzjfqpjdgwpzhczcftfcpdhvzhzccmwmrfrbqshzmtpqgpbbvfqqbjbmvnlnlwjtzrpmhdlffccrqcfgsjfszbrzrfztntchtmgmbhjgmlsqzcbtqqjzzlghtzzqmlnnvsgsvbbjfgqsqbqmqrdzwpwdgbggpdvhvnlzshhntprjdwhnwfvdjzpqgflwrvwgtmfdmfdztcbtfnjdrvgdwwczdgphnvdgrbdchprqldfjrvcsflcmlcmzqvqgsgnzcgmrhccgcmptcdzhbcdgdtppwztfstzqqzqrdzlnzthggjmpcflmbcmdrrjnnpbpqfmjbzqbtsjjgdlmgncbmgspqqvbrvzrdjscpzjsdtcdvsdwqlmwrngttswnrsbqctvhgfnnwblpcqzdmzpfchplslspmghvgcqntmlrfhgpcbpspvfhnvqvglsqzsnsdzddqpbsjhlclslngbwvvgjhwfcncqsmqwbptzvpzlzslsjjjldjpwpfrdlfbjphqcjtsgqdsdfdjhqgdhcppndwmhmmldvvmblcqcqfqhltbcbvrnghjfmtgqwtwljtczvqlnmgscjhqdhnzwhzvzzqnlsrhqvljqpgpwghfqlhjjrrhvnmnnrbnlhdcjctwtlhmhhmhjvcgzdrzmdjrvqzgnsttjdwglgwlcmbcdnjprgfsbbdzzngbqdrvwwwhbtlnnmzqdjttsrrpvlfdqnfhhtdtvmpcjgdwtbnqmwmtszdqfmbhjsjpqqddzfggwjhbtlnqfgcwbjzdtcpcpzgnrmnvwlpgmwfjlpgppdfrfvvjwsfcdqdnpcpjbqsvhttssgptqjghctrbgntlfjzdrfjccsprsjlrrwrzsmnjsqslmpdtrvhlqbnmgpjthpqdqmnvrtzlhhzzfzbrcclpmpcszhbttgrtcpgcpjwpdbfpfvgspsgtvglwthqcmcvmrfmclwlvjlsptfgmtlrnsvjrnfwzhdcsmgztpzfcvzwdztpppvqpvqfpdrsfnlhrbqwrsqjtwjmhnpwmqmpdgdhbtbpfwnmswffdqffdggrdrpmngvpzplmmwlddnhcvjjzqqfsbbtfmzdwnpvbjrshmllczhgvwwcbcbtfrfnplqjwmjlvpwwgfrtffwddwppsgtnlmpvfnhfzcsgjbqbjmbvpnqppsrvwnlzvcmjqgtbzrdsnrgwbfmrvnflgccrssfvcwgllqqbbcthzmbtnsmbzbcczhtzcvmthttpltrtdmgspctvtpvqbhmnnpnjwmhpqclmjsdrbjwvjbtzcjlqbjsvbgdwqzflnwzcfjwtrhjgfshfmwbjfwpnhjsmtpgbpwlfjjnmdlrhchmnfmgmgcrftmwbzshdwbhndgwtjbrrvbwprqppfmgfmfllpcjgrwdmtzddthsjlgjljv
|
||||||
@@ -17,7 +17,7 @@ fn parse_pairs(line: &str) -> (Range, Range) {
|
|||||||
return (Range::from_str(left), Range::from_str(right));
|
return (Range::from_str(left), Range::from_str(right));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn solution_part1(input: &str) -> i32 {
|
fn solution_part1(input: String) -> i32 {
|
||||||
let mut result: i32 = 0;
|
let mut result: i32 = 0;
|
||||||
for line in input.lines() {
|
for line in input.lines() {
|
||||||
let (left, right) = parse_pairs(line);
|
let (left, right) = parse_pairs(line);
|
||||||
@@ -28,7 +28,7 @@ fn solution_part1(input: &str) -> i32 {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn solution_part2(input: &str) -> i32 {
|
fn solution_part2(input: String) -> i32 {
|
||||||
let mut result: i32 = 0;
|
let mut result: i32 = 0;
|
||||||
for line in input.lines() {
|
for line in input.lines() {
|
||||||
let (left, right) = parse_pairs(line);
|
let (left, right) = parse_pairs(line);
|
||||||
@@ -52,7 +52,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn basic_example() {
|
fn basic_example() {
|
||||||
let input = "2-4,6-8\n2-3,4-5\n5-7,7-9\n2-8,3-7\n6-6,4-6\n2-6,4-8";
|
let input = "2-4,6-8\n2-3,4-5\n5-7,7-9\n2-8,3-7\n6-6,4-6\n2-6,4-8".to_string();
|
||||||
let expected = 2;
|
let expected = 2;
|
||||||
let result = solution_part1(input);
|
let result = solution_part1(input);
|
||||||
assert_eq!(result, expected);
|
assert_eq!(result, expected);
|
||||||
@@ -61,18 +61,12 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn answer_part1() {
|
fn answer_part1() {
|
||||||
let input = fs::read_to_string("inputs/day_4.txt").unwrap();
|
let input = fs::read_to_string("inputs/day_4.txt").unwrap();
|
||||||
println!(
|
println!("Answer to part 1 of day 4: {:#?}", solution_part1(input));
|
||||||
"Answer to part 1 of day 4: {:#?}",
|
|
||||||
solution_part1(input.as_str())
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn answer_part2() {
|
fn answer_part2() {
|
||||||
let input = fs::read_to_string("inputs/day_4.txt").unwrap();
|
let input = fs::read_to_string("inputs/day_4.txt").unwrap();
|
||||||
println!(
|
println!("Answer to part 2 of day 4: {:#?}", solution_part2(input));
|
||||||
"Answer to part 2 of day 4: {:#?}",
|
|
||||||
solution_part2(input.as_str())
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
49
aoc2022/src/day_6.rs
Normal file
49
aoc2022/src/day_6.rs
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
|
fn is_unique_string(chars: &str) -> bool {
|
||||||
|
let mut set: HashSet<char> = HashSet::with_capacity(chars.len());
|
||||||
|
set.extend(chars.chars());
|
||||||
|
return set.len() == chars.len();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn solution(sequence: String, sub_len: usize) -> usize {
|
||||||
|
for i in 0..(sequence.len() - sub_len) {
|
||||||
|
let sub = &sequence[i..i + sub_len];
|
||||||
|
if is_unique_string(sub.try_into().unwrap()) {
|
||||||
|
return i + sub_len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn basic_example() {
|
||||||
|
let input = "bvwbjplbgvbhsrlpgdmjqwftvncz".to_string();
|
||||||
|
assert_eq!(solution(input, 4), 5);
|
||||||
|
let input = "nppdvjthqldpwncqszvftbrmjlhg".to_string();
|
||||||
|
assert_eq!(solution(input, 4), 6);
|
||||||
|
let input = "nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg".to_string();
|
||||||
|
assert_eq!(solution(input, 4), 10);
|
||||||
|
let input = "zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw".to_string();
|
||||||
|
assert_eq!(solution(input, 4), 11);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn answer_part1() {
|
||||||
|
let input = fs::read_to_string("inputs/day_5.txt").unwrap();
|
||||||
|
println!("Answer to part 1 of day 6: {:#?}", solution(input, 4));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn answer_part2() {
|
||||||
|
let input = fs::read_to_string("inputs/day_5.txt").unwrap();
|
||||||
|
println!("Answer to part 2 of day 6: {:#?}", solution(input, 14));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
#[allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
mod day_4;
|
mod day_4;
|
||||||
|
mod day_6;
|
||||||
|
|||||||
Reference in New Issue
Block a user