Compare commits

..

2 Commits

Author SHA1 Message Date
dadbc79893 Added day 6 2022 2022-12-06 20:13:14 +01:00
8c81c2032e Day 4: Removed conversion from String to &str 2022-12-06 20:13:05 +01:00
4 changed files with 57 additions and 12 deletions

1
aoc2022/inputs/day_5.txt Normal file
View File

@@ -0,0 +1 @@
pnnfhnhshrhmhwwmwzmznmnwmwfmfhfjfcjjtgtbggpdgdjjbjrjsjpjrrmddmgmpmddrhddnfnfzfpfvpfpprhhlffmtffqhhdtdcdsswsdwswmmfvvpdprrnnhhhtffnfbbznbznnvdnnbffjrfrbfrbrgbrrntnggrqqwtqwwgjgsswgwqwtwwsvwvbwvwrwlrlppzfzwfzzpmzzhqqzqlzlglzzmrmwrmwwvmwvvnppjfjttlffhjjjsccbggnffqgfgjjnccmdmzmllvnlnznttlvlttvnvgnvvqvmvqqzrqqcgglzzwtztwwmjmzjjnddsffqrqlrrvsvdvldvvlgvlvccdzczcqcpphggtnthhhtbhtttcjtjcjgcjcbbrhbbfrffgjgdgzddcttczzsccbpcpddcpcggmjgjddtcccthccfrccmdmhmddnwddfldffntnptnpttcptcptpfphhmfmwfwmmlblgbgvbvlltqltldttfcfcclgcllmplmlbbjnjzjnzzttnvvgddshddsqddggsqgqddsggdhghjgjhhgchhdmdjmjddgdhghrrphrrpnnqhhjwwqrrcmmslmmszzpgzpzzrmzmznzllnjnnlnbbdvdsdffbpffcmmnznqqcbbzvvjnjvvwqwgqqpnnzwnzwnzwwwlpwpzzfqzfqqwnqnbnfnqnbqqbggqnqdndrrzzlffbbgqgfgrfrqqsddnqnqjjgssqwqwcqcpcrrqppwpjjfnfpffhphwwmcwwznwznnplptlplnlsnlsldslslsffwtwftwtbtdbbjsjcczwwfllwtlwtlwlvwlwrwppsggvcvrrqcrqqvmqvmmbrrsbsfspspjpnnmpmqmcczgzffqmfmtmpppwzppzrpzrzsrrpqrpqpmpvmpvpttbqtqmtmjttqdqgggcppclcjcpcsppctpplpdpcppcmmdzmzddvhvhnhrrldllcwwbnwnssshlhrhthggtmggbjbjwwbvbttjllvrrfggngvngnmmvzzrrmddmcddztztctfccqpcpcqqvqppqcqdcdhhvhssgfgzgwwzmmnssvwwbqbhbnhnphpqqjcqcddfwfttqjtqtlttglljgjbgjgnnsqqvrvffqvqfqbffljjpffssqdsqstqqqldqqmhmsmsqqwtqwqdqgdgjjfbjffgbbrhhqghgppqgpgmpmmfzfhhfrhffgmfggpzgpzzhtzhhlbhhqbbzvvnvqnntptmmbhbdhdwwmjjcnnmsscqcbbtjtvjvwjvvmsmjmtmpmgghttcztzggpddbfbfgbbdsdrsrrqfqjjqfjjhzhtzzmdzzcgzgdzzmvmmfmjmgjmggmppbdppmzpppvfppzhhfsfwfhhpjpmmrjjpssdccjpjpwjppvdpphcpcjcfjfwjfwfjwfjjqcqcwqqqsmmmbbgdgwwpcwwdfdlflrltlgtthfhfjhhlthtddlgdggsjsrrdpdcppgttphpgpwppmpzmmrjmmvjvgvgfglfgllbqlqhllszzlwwhzzdfdcdtctptwtztfzzmjzjtjtrjrcrnrjjmwmnnbddgvgtgsstjsszmpqdmzgqflrbrspjmtzjcrmlzltmhgblghnwqvwwqwzbpnfrpdpblpjgshfccfbjfsnwvvhnjftsdnsgtzzjtzpmtfdvzrhtqpblhwgmqtgpbfvbdmsnrrrvvbstpsznvbbwgjfqjrhdvwvgptpglpfddhddmtglmjlpwlvfpbtbmgbplbzrlpdlvqzcwhbscpszgfstjpfdvfpmljlngrbgrdnnblzqrfpzsdvblpwbtnhdjclldvwvbwcwzfzbdspgwpfqjfbdbrqcshtlvcrdstnzggbwqnzbrfzbpnrtmvpbvdhcvdsdshgtvhfgdzljflppqbwclnvbhbczvrscjhlbgbfvwdjhnjsgmvwhpfgwbbmnndpnglfrmtfdzvqgfjdqfhgrhvpbqndmqnqccgwswwdsqjnbjtjbjdbqgjnmfbdvlnfwbnrdqgvgzzhmmbbdzfdvvpwhpbwbnzdcdpchrwlhfsjnhhjggvplmqggwjdsvjtpnpnqgldjjdcscrdltssjdrpcrfbgbcjfplhzgwbprfcslhpcngtszrghmwhzdqscbfrhzdwcffzvmjrmcjcstfvhplvrsglgsjnjtrpddsdfqjsndjnfmvdhfgdbzzflqhsrrwmrnlpqzmcddqbqvvzgtlztpgjnddtcnbmqsjlhmcszrmcjvwzpptlfqsmpvgnzvrjdwzpdwqgbmdgdtvjlmfczthjbcgfhbqpnmlbmrwwhfptzlbmfdhssznjcvjbmnjtnvzjhzczlrrdnttmmcbnzhqpplzqwgttwrnwfvmnptgqlfrnzvqpjfgrzwmlcwvtptvcvrlsrdwdgqfvffspmdbnnrqjttpqvhvdpbcrvzptwnhhfsqzchmncvttcdgdnlppcfzpmjpvbvqhlvplwvrmmbbggbwttwmvsqjlllsftprsmtmnzjcqfzblrllzgshfljchrjwjlpvhpbrtrsschzltrblgjnbgdnmwdggjhqggntblnhsvfgsbcblhmctbqzqwmhqnjhpzjfqpjdgwpzhczcftfcpdhvzhzccmwmrfrbqshzmtpqgpbbvfqqbjbmvnlnlwjtzrpmhdlffccrqcfgsjfszbrzrfztntchtmgmbhjgmlsqzcbtqqjzzlghtzzqmlnnvsgsvbbjfgqsqbqmqrdzwpwdgbggpdvhvnlzshhntprjdwhnwfvdjzpqgflwrvwgtmfdmfdztcbtfnjdrvgdwwczdgphnvdgrbdchprqldfjrvcsflcmlcmzqvqgsgnzcgmrhccgcmptcdzhbcdgdtppwztfstzqqzqrdzlnzthggjmpcflmbcmdrrjnnpbpqfmjbzqbtsjjgdlmgncbmgspqqvbrvzrdjscpzjsdtcdvsdwqlmwrngttswnrsbqctvhgfnnwblpcqzdmzpfchplslspmghvgcqntmlrfhgpcbpspvfhnvqvglsqzsnsdzddqpbsjhlclslngbwvvgjhwfcncqsmqwbptzvpzlzslsjjjldjpwpfrdlfbjphqcjtsgqdsdfdjhqgdhcppndwmhmmldvvmblcqcqfqhltbcbvrnghjfmtgqwtwljtczvqlnmgscjhqdhnzwhzvzzqnlsrhqvljqpgpwghfqlhjjrrhvnmnnrbnlhdcjctwtlhmhhmhjvcgzdrzmdjrvqzgnsttjdwglgwlcmbcdnjprgfsbbdzzngbqdrvwwwhbtlnnmzqdjttsrrpvlfdqnfhhtdtvmpcjgdwtbnqmwmtszdqfmbhjsjpqqddzfggwjhbtlnqfgcwbjzdtcpcpzgnrmnvwlpgmwfjlpgppdfrfvvjwsfcdqdnpcpjbqsvhttssgptqjghctrbgntlfjzdrfjccsprsjlrrwrzsmnjsqslmpdtrvhlqbnmgpjthpqdqmnvrtzlhhzzfzbrcclpmpcszhbttgrtcpgcpjwpdbfpfvgspsgtvglwthqcmcvmrfmclwlvjlsptfgmtlrnsvjrnfwzhdcsmgztpzfcvzwdztpppvqpvqfpdrsfnlhrbqwrsqjtwjmhnpwmqmpdgdhbtbpfwnmswffdqffdggrdrpmngvpzplmmwlddnhcvjjzqqfsbbtfmzdwnpvbjrshmllczhgvwwcbcbtfrfnplqjwmjlvpwwgfrtffwddwppsgtnlmpvfnhfzcsgjbqbjmbvpnqppsrvwnlzvcmjqgtbzrdsnrgwbfmrvnflgccrssfvcwgllqqbbcthzmbtnsmbzbcczhtzcvmthttpltrtdmgspctvtpvqbhmnnpnjwmhpqclmjsdrbjwvjbtzcjlqbjsvbgdwqzflnwzcfjwtrhjgfshfmwbjfwpnhjsmtpgbpwlfjjnmdlrhchmnfmgmgcrftmwbzshdwbhndgwtjbrrvbwprqppfmgfmfllpcjgrwdmtzddthsjlgjljv

View File

@@ -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
View 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));
}
}

View File

@@ -1,2 +1,3 @@
#[allow(dead_code)] #![allow(dead_code)]
mod day_4; mod day_4;
mod day_6;