From 4541a4aef2b776f964ee8934836634fea3de6728 Mon Sep 17 00:00:00 2001 From: Ishan Jain Date: Tue, 6 Dec 2022 10:49:01 +0530 Subject: [PATCH] Added day 6 part 1 --- inputs/input.txt | 516 +--------------------------------------------- inputs/sample.txt | 11 +- src/main.rs | 145 +++---------- 3 files changed, 33 insertions(+), 639 deletions(-) diff --git a/inputs/input.txt b/inputs/input.txt index f4adba9..069a93d 100644 --- a/inputs/input.txt +++ b/inputs/input.txt @@ -1,516 +1,2 @@ - [G] [D] [Q] -[P] [T] [L] [M] [Z] -[Z] [Z] [C] [Z] [G] [W] -[M] [B] [F] [P] [C] [H] [N] -[T] [S] [R] [H] [W] [R] [L] [W] -[R] [T] [Q] [Z] [R] [S] [Z] [F] [P] -[C] [N] [H] [R] [N] [H] [D] [J] [Q] -[N] [D] [M] [G] [Z] [F] [W] [S] [S] - 1 2 3 4 5 6 7 8 9 - -move 7 from 6 to 8 -move 5 from 2 to 6 -move 2 from 4 to 1 -move 1 from 4 to 5 -move 5 from 7 to 6 -move 7 from 6 to 3 -move 5 from 9 to 2 -move 6 from 2 to 3 -move 2 from 7 to 9 -move 20 from 3 to 1 -move 11 from 1 to 6 -move 1 from 9 to 8 -move 3 from 8 to 2 -move 8 from 1 to 5 -move 10 from 8 to 4 -move 7 from 6 to 4 -move 1 from 8 to 3 -move 8 from 1 to 7 -move 16 from 4 to 8 -move 1 from 9 to 8 -move 1 from 5 to 2 -move 4 from 7 to 4 -move 5 from 6 to 7 -move 1 from 6 to 1 -move 8 from 7 to 4 -move 1 from 6 to 9 -move 12 from 4 to 5 -move 3 from 2 to 5 -move 1 from 6 to 2 -move 1 from 3 to 7 -move 1 from 3 to 2 -move 1 from 9 to 3 -move 1 from 7 to 8 -move 1 from 7 to 5 -move 1 from 3 to 2 -move 4 from 5 to 7 -move 5 from 5 to 7 -move 1 from 4 to 3 -move 1 from 3 to 9 -move 3 from 1 to 8 -move 1 from 9 to 1 -move 2 from 2 to 1 -move 2 from 2 to 7 -move 8 from 8 to 1 -move 3 from 5 to 2 -move 8 from 7 to 5 -move 7 from 1 to 3 -move 3 from 1 to 7 -move 1 from 1 to 5 -move 1 from 3 to 7 -move 7 from 5 to 8 -move 2 from 2 to 8 -move 1 from 3 to 2 -move 1 from 2 to 4 -move 1 from 4 to 8 -move 13 from 8 to 1 -move 13 from 5 to 9 -move 2 from 5 to 2 -move 7 from 9 to 3 -move 12 from 8 to 3 -move 4 from 9 to 3 -move 1 from 3 to 4 -move 2 from 2 to 3 -move 1 from 1 to 6 -move 1 from 2 to 3 -move 1 from 5 to 9 -move 7 from 7 to 4 -move 10 from 1 to 8 -move 1 from 1 to 4 -move 1 from 9 to 5 -move 2 from 5 to 1 -move 1 from 6 to 5 -move 3 from 8 to 9 -move 5 from 4 to 3 -move 4 from 4 to 1 -move 7 from 1 to 6 -move 2 from 5 to 7 -move 35 from 3 to 4 -move 4 from 9 to 1 -move 19 from 4 to 8 -move 1 from 7 to 6 -move 1 from 9 to 2 -move 10 from 4 to 5 -move 2 from 4 to 7 -move 3 from 4 to 3 -move 1 from 2 to 8 -move 1 from 1 to 9 -move 3 from 3 to 6 -move 4 from 8 to 6 -move 4 from 5 to 2 -move 2 from 8 to 3 -move 3 from 5 to 9 -move 12 from 6 to 1 -move 8 from 8 to 6 -move 2 from 9 to 1 -move 1 from 4 to 1 -move 1 from 3 to 8 -move 3 from 7 to 8 -move 2 from 9 to 7 -move 1 from 6 to 7 -move 10 from 6 to 8 -move 4 from 2 to 5 -move 1 from 3 to 7 -move 7 from 5 to 7 -move 13 from 8 to 1 -move 29 from 1 to 4 -move 8 from 7 to 8 -move 1 from 1 to 3 -move 3 from 7 to 6 -move 1 from 1 to 9 -move 15 from 4 to 1 -move 1 from 3 to 6 -move 10 from 1 to 6 -move 10 from 6 to 7 -move 1 from 4 to 9 -move 1 from 9 to 1 -move 1 from 9 to 7 -move 6 from 7 to 8 -move 1 from 1 to 6 -move 5 from 6 to 5 -move 21 from 8 to 9 -move 5 from 1 to 9 -move 2 from 9 to 5 -move 3 from 5 to 6 -move 3 from 7 to 9 -move 4 from 4 to 6 -move 6 from 8 to 7 -move 6 from 6 to 3 -move 2 from 7 to 9 -move 1 from 7 to 2 -move 6 from 3 to 2 -move 1 from 6 to 4 -move 4 from 5 to 9 -move 1 from 4 to 5 -move 9 from 4 to 6 -move 7 from 6 to 4 -move 10 from 9 to 2 -move 5 from 7 to 5 -move 10 from 2 to 7 -move 2 from 5 to 4 -move 2 from 5 to 9 -move 4 from 9 to 4 -move 1 from 8 to 6 -move 7 from 7 to 2 -move 1 from 5 to 4 -move 2 from 7 to 1 -move 1 from 5 to 7 -move 3 from 6 to 2 -move 4 from 4 to 5 -move 1 from 2 to 7 -move 10 from 4 to 7 -move 3 from 7 to 3 -move 17 from 9 to 4 -move 1 from 1 to 4 -move 1 from 1 to 5 -move 5 from 2 to 7 -move 1 from 9 to 2 -move 5 from 4 to 8 -move 2 from 9 to 7 -move 4 from 8 to 1 -move 3 from 4 to 8 -move 1 from 2 to 5 -move 1 from 9 to 2 -move 6 from 4 to 8 -move 3 from 7 to 5 -move 1 from 4 to 9 -move 1 from 9 to 1 -move 3 from 1 to 9 -move 4 from 8 to 5 -move 2 from 9 to 8 -move 4 from 2 to 5 -move 8 from 7 to 2 -move 5 from 8 to 5 -move 2 from 7 to 8 -move 1 from 3 to 5 -move 1 from 1 to 2 -move 1 from 1 to 6 -move 2 from 3 to 6 -move 5 from 2 to 8 -move 4 from 7 to 1 -move 7 from 8 to 5 -move 1 from 1 to 5 -move 3 from 8 to 3 -move 1 from 9 to 3 -move 7 from 2 to 3 -move 2 from 2 to 8 -move 2 from 4 to 8 -move 1 from 8 to 5 -move 1 from 1 to 4 -move 2 from 4 to 7 -move 2 from 7 to 1 -move 3 from 2 to 3 -move 3 from 5 to 2 -move 1 from 8 to 3 -move 3 from 3 to 2 -move 5 from 2 to 1 -move 17 from 5 to 8 -move 9 from 8 to 1 -move 11 from 3 to 5 -move 8 from 8 to 5 -move 2 from 8 to 5 -move 16 from 1 to 4 -move 13 from 4 to 7 -move 6 from 5 to 2 -move 2 from 4 to 8 -move 5 from 7 to 9 -move 2 from 1 to 2 -move 7 from 7 to 1 -move 1 from 1 to 4 -move 1 from 9 to 8 -move 7 from 2 to 8 -move 1 from 4 to 7 -move 2 from 9 to 4 -move 1 from 4 to 1 -move 1 from 3 to 5 -move 2 from 9 to 8 -move 11 from 8 to 7 -move 2 from 6 to 5 -move 1 from 6 to 9 -move 1 from 1 to 9 -move 1 from 9 to 1 -move 4 from 1 to 4 -move 2 from 1 to 8 -move 1 from 1 to 2 -move 1 from 9 to 5 -move 2 from 4 to 3 -move 2 from 2 to 7 -move 2 from 3 to 9 -move 1 from 9 to 1 -move 1 from 9 to 1 -move 5 from 5 to 1 -move 19 from 5 to 6 -move 5 from 1 to 4 -move 1 from 2 to 9 -move 1 from 1 to 3 -move 7 from 5 to 8 -move 1 from 3 to 6 -move 8 from 7 to 3 -move 7 from 4 to 8 -move 3 from 8 to 5 -move 1 from 4 to 1 -move 1 from 9 to 4 -move 1 from 4 to 9 -move 1 from 5 to 2 -move 2 from 5 to 6 -move 2 from 8 to 2 -move 7 from 8 to 1 -move 1 from 1 to 7 -move 3 from 6 to 9 -move 2 from 3 to 2 -move 1 from 2 to 1 -move 1 from 8 to 7 -move 2 from 9 to 6 -move 2 from 9 to 5 -move 1 from 5 to 6 -move 1 from 2 to 8 -move 2 from 1 to 7 -move 1 from 4 to 3 -move 3 from 2 to 5 -move 7 from 1 to 3 -move 10 from 3 to 4 -move 3 from 5 to 4 -move 1 from 3 to 8 -move 3 from 3 to 2 -move 1 from 8 to 1 -move 1 from 1 to 3 -move 3 from 8 to 3 -move 5 from 4 to 6 -move 1 from 2 to 3 -move 4 from 6 to 4 -move 1 from 5 to 7 -move 4 from 3 to 4 -move 1 from 2 to 8 -move 12 from 7 to 6 -move 1 from 8 to 2 -move 2 from 2 to 7 -move 1 from 8 to 4 -move 23 from 6 to 3 -move 14 from 3 to 6 -move 15 from 4 to 6 -move 1 from 8 to 6 -move 10 from 3 to 7 -move 2 from 4 to 2 -move 11 from 7 to 8 -move 2 from 2 to 6 -move 44 from 6 to 9 -move 21 from 9 to 3 -move 12 from 3 to 6 -move 1 from 7 to 4 -move 1 from 4 to 7 -move 9 from 3 to 2 -move 2 from 8 to 6 -move 3 from 2 to 4 -move 17 from 9 to 1 -move 3 from 4 to 6 -move 2 from 2 to 9 -move 4 from 9 to 2 -move 10 from 6 to 9 -move 1 from 7 to 6 -move 4 from 9 to 5 -move 4 from 2 to 4 -move 14 from 1 to 5 -move 4 from 4 to 3 -move 3 from 2 to 9 -move 9 from 9 to 7 -move 1 from 2 to 5 -move 9 from 8 to 5 -move 8 from 7 to 2 -move 4 from 3 to 8 -move 5 from 6 to 2 -move 3 from 1 to 6 -move 1 from 7 to 1 -move 4 from 2 to 4 -move 3 from 6 to 4 -move 3 from 8 to 3 -move 13 from 5 to 2 -move 2 from 3 to 5 -move 12 from 5 to 9 -move 1 from 3 to 5 -move 1 from 5 to 9 -move 1 from 8 to 3 -move 4 from 9 to 5 -move 6 from 4 to 5 -move 12 from 9 to 7 -move 1 from 9 to 3 -move 1 from 3 to 2 -move 12 from 5 to 6 -move 12 from 7 to 2 -move 1 from 3 to 7 -move 1 from 4 to 8 -move 33 from 2 to 8 -move 1 from 7 to 5 -move 1 from 1 to 2 -move 4 from 5 to 4 -move 3 from 2 to 5 -move 34 from 8 to 6 -move 1 from 4 to 3 -move 1 from 5 to 7 -move 1 from 7 to 5 -move 3 from 4 to 9 -move 2 from 9 to 7 -move 1 from 9 to 4 -move 1 from 3 to 7 -move 1 from 5 to 8 -move 1 from 5 to 1 -move 1 from 5 to 7 -move 1 from 4 to 8 -move 1 from 1 to 4 -move 1 from 4 to 2 -move 3 from 7 to 5 -move 2 from 8 to 5 -move 1 from 2 to 8 -move 4 from 6 to 2 -move 1 from 8 to 6 -move 1 from 7 to 9 -move 29 from 6 to 7 -move 4 from 2 to 3 -move 2 from 5 to 8 -move 1 from 9 to 5 -move 2 from 8 to 1 -move 23 from 7 to 5 -move 2 from 6 to 1 -move 23 from 5 to 6 -move 1 from 3 to 6 -move 4 from 5 to 9 -move 2 from 1 to 3 -move 5 from 3 to 8 -move 2 from 6 to 5 -move 2 from 1 to 4 -move 1 from 9 to 8 -move 1 from 9 to 1 -move 1 from 4 to 6 -move 2 from 5 to 6 -move 6 from 7 to 8 -move 2 from 9 to 2 -move 18 from 6 to 5 -move 21 from 6 to 4 -move 1 from 1 to 6 -move 2 from 6 to 7 -move 2 from 7 to 9 -move 2 from 2 to 8 -move 7 from 4 to 3 -move 12 from 5 to 3 -move 1 from 9 to 5 -move 1 from 9 to 4 -move 6 from 5 to 2 -move 17 from 3 to 4 -move 3 from 4 to 3 -move 1 from 2 to 4 -move 5 from 2 to 8 -move 1 from 5 to 8 -move 19 from 8 to 7 -move 1 from 3 to 6 -move 1 from 8 to 4 -move 1 from 6 to 1 -move 15 from 4 to 6 -move 1 from 1 to 4 -move 3 from 3 to 5 -move 4 from 6 to 7 -move 1 from 4 to 7 -move 10 from 6 to 7 -move 16 from 4 to 5 -move 24 from 7 to 2 -move 8 from 7 to 8 -move 1 from 4 to 2 -move 6 from 8 to 7 -move 1 from 8 to 7 -move 1 from 6 to 9 -move 14 from 5 to 4 -move 9 from 7 to 8 -move 4 from 5 to 1 -move 2 from 1 to 5 -move 3 from 8 to 6 -move 2 from 6 to 9 -move 2 from 2 to 8 -move 6 from 2 to 7 -move 3 from 4 to 6 -move 1 from 3 to 4 -move 3 from 5 to 7 -move 1 from 6 to 9 -move 5 from 7 to 2 -move 4 from 9 to 1 -move 1 from 7 to 9 -move 9 from 8 to 4 -move 5 from 1 to 2 -move 2 from 6 to 1 -move 6 from 4 to 7 -move 1 from 7 to 3 -move 1 from 3 to 9 -move 1 from 9 to 7 -move 1 from 6 to 7 -move 9 from 4 to 5 -move 7 from 7 to 9 -move 3 from 7 to 5 -move 1 from 9 to 2 -move 6 from 9 to 8 -move 4 from 4 to 5 -move 1 from 4 to 2 -move 1 from 4 to 2 -move 2 from 1 to 2 -move 1 from 9 to 8 -move 10 from 2 to 4 -move 8 from 2 to 7 -move 12 from 2 to 9 -move 6 from 7 to 4 -move 1 from 1 to 2 -move 8 from 9 to 8 -move 7 from 5 to 1 -move 9 from 4 to 3 -move 14 from 8 to 4 -move 1 from 8 to 4 -move 1 from 1 to 5 -move 1 from 5 to 2 -move 3 from 2 to 4 -move 1 from 7 to 1 -move 1 from 7 to 3 -move 2 from 1 to 7 -move 3 from 5 to 7 -move 2 from 7 to 6 -move 1 from 6 to 5 -move 3 from 7 to 1 -move 1 from 6 to 8 -move 1 from 8 to 7 -move 1 from 3 to 6 -move 1 from 7 to 1 -move 4 from 1 to 4 -move 6 from 3 to 2 -move 3 from 1 to 2 -move 3 from 3 to 6 -move 3 from 2 to 6 -move 6 from 6 to 5 -move 1 from 1 to 4 -move 1 from 9 to 6 -move 5 from 2 to 1 -move 3 from 1 to 2 -move 2 from 9 to 8 -move 3 from 1 to 5 -move 1 from 9 to 7 -move 25 from 4 to 1 -move 1 from 1 to 7 -move 2 from 8 to 3 -move 13 from 1 to 9 -move 2 from 3 to 5 -move 8 from 5 to 9 -move 4 from 2 to 1 -move 2 from 6 to 7 -move 10 from 5 to 9 -move 4 from 7 to 2 -move 2 from 2 to 3 -move 9 from 9 to 2 -move 4 from 4 to 5 -move 4 from 5 to 4 -move 5 from 1 to 4 -move 10 from 4 to 5 -move 22 from 9 to 1 -move 2 from 2 to 7 -move 3 from 2 to 1 -move 6 from 2 to 6 -move 1 from 7 to 1 -move 10 from 5 to 7 -move 15 from 1 to 4 -move 13 from 1 to 5 -move 3 from 6 to 8 -move 1 from 8 to 9 - +qhbhzbzzfrzrbzzcjzjrrvcvrvqvvnggnngcgssswbblplrlflfnnnmmjppgddqndnrnlnccpfcfjcjvjdjqqqmhhmwhwmmsnsvsjvjnvjnvjvsjsmjsjccwcqwcqwqjqwjwmwbmmbzbsbvsslbsbbbntnvvphpqqvrrtbrtrfftppbggpzzfhfcfsfmssffmbmzzmqzzblzzzmwwnggjwgjwgjgpgmmjvvmcvmmcfchfhllwmlljqqldqdqttsgsvscsmsnsmstmtssvgsgddwdffbppwfpplhlchhhdvvdrrmttmptmmmjsmshmmmgqmgggzjgzzmwzwcwhchqqfpfvvbqvbqbrblrrmtmstmmjvmmdnmmzczdzpztppjhjjwzjjjtdjjpljpjcppjllsffhbffbhhgttqjqzzfzbzcbzcbcrrjjrwrgwwbcbpcccctrtqtfqqfjjpgpdgdfgfrggpjjljglgclcqcqmcqmmgjjllpmphpjjgfjjqrrbppwmpmccftctjtjgjtgggzffcggwzzzdjdzzlgzgjzzvqvppczzjnjvvfhhtwtttdwtdtvddpzpnpcnppmvmcmcsmstthctchcggtssdttvztvvldlfftqqbzzjttvzztppscctzccgmcmvmhhchcscbbshbssgwwthwhmwwcgwcwrrvrzvrzzzvhvdvmmprrdmrmfmrmbmjbbmqbmbqqhbbszsjjlqjljtjstshhgphpffdhhtggtgbbqcqgqccfffcpcbpbfppwqpqcclbbwdwsscpchhfpfmpfmflfnnmggwrrznnghgvhhghrrhwrrcschcscqcmcfcvvgzztjtqjjshspsqsmmjnnmttsshvhmmqfqzztbzttvhttmwttnqnfncfcpfflmllmtlmmphmhlmmltmtztcczhzbbfmmlglnnfpppqplljwjfwfdwdzwddszddqzqnzzzwwlzzqvvjlllrwlrrmpmrmbmpplpspqsqmqcmcjjshsvstvvwtvthvvrfvvqmmjpmjmrjmmlvvnnrjjrcrwrhwwqzzvgvngncgcqqcffmfzfssbnbfblbggwhggmtgtvvqhhpttbcbczcjjbqbhqbhqbbccbhbqhbbmppdlpdllbvvdpvdvwvsvppllgblbttmcmtccbsswmswwwzfwfhhtfhthctchcfhhhfjjvhjhgjjjcwjwggrtgrttcqcwcswccfdffvpvtptprrvjjqvjjghggshhwmmcscmsmhmvmppprfrwwrhhvghhtnhncctbbbwzzbgzgdzgdzdpdvpvbbwgbwwrqwrqwqbqvvclccfcfzfdfrrthrrqcqddplpqlppbbfrfmmrmnnwhhgddmwwrzrsswpwhwdwhhsmhshqsqllbvlbllwbwbpwwfwmwsmspsvsdsbscctpctppvvpggtjjdmdqqgqbgglccvzcvcnczcgzgmzznpzzpcpnpvpcvvffrttqrqttflfbfjfnnwnlwlhwwqzqnqfftstdsttglldwwgqwwvqqzczfzdffbfsfssfwswdwnwdnnbcncwctttvsvjsvsrvvbtvvzhhvjvtvtjtsjjvhjjwpjjnzzpczzppgcpgcpgcgsgvsgvsscrcpcpspllzvzddpssssdpsddhffllzmzhzfhhdvhhvbvwwpwqpwqpwwmvwmvwvgvmvpvmpmrmzrrblltjtggvnggvppthhzjhzhffrvrhvrhrlrslsflfhhtvhvmmhppjgpjpcccmqcqvqhvvfssrtmnwjjslwhjgpvrwspjlwdwrmvfgwmplrmjrllndrjzvjfbwvzpjpfqrnjspwcpsgcvdlmfdfrvwdcvmbrnzncgnqlcvgqtpsbbpvprncdsgvpqbpcnffwqmmfsvnzspchhrlnzbhcdfdgtsllmqfbrcqwbmmzrfvsghjpmrndsdbqvtprmblnbvbnpvhtphbpjwdssvwgdzwztbpzdcsqzldjzrgcwhhspblrtncvntppcgttlflflnntcnzpbpgsclcjvbjhldcdzwjjhnfwzjmgcwtljhvbncwqnjhbrhfqcmnsdvntsbgnpqttzvbhzzpdznrhjpnsqzsztsblstbghlpwbmqjctlnqnttwshfvmjdhgbgjdhbzrfjqndrrhlqcmplczjtwpstlsmwwzqzmgvhsvjgbrtfwmvwlbhpccbqvmfmlgmbmbmldbcwmmhpnnbnffbnqgwhclgpzgbpjqvzmqhhhpltnwrdfrrnmlfrzflpnjztlnfzzzgmncprtblpsvrqgrnzbzfzhzhjjjdrnpvjpnwmlmlgvvtqmdvpnhvcrdmthcnnnvhnzmvgrtdvcthgjtvcgmtpsvmfztrflrrzbmcfhftwwcnjfpjtsnzjccmvdnrrwvbfjgcjttdvzncqhlqqphwphclztbhlqcfmnhcjmsscplnrsjqpdzrrzbthbcdnrzgdmstpgqqsvzclvmzjjdfqhhhttwcjtmwcbltghmslqvltqbjqqjpjvgntvnlttjcnhltflglgsmjwjjfldpfgjgrhttbwfhpsdbsmsfmfbtjlnhvjfqjrqhwdrcwpfthdgqzjjjfcvgdffrhvvwzfghpszmjjgscjvjnlgnbfbgfrbbzbzbnzngthrddfmsgsqqdddpfqwlchfblrvjdcgnzfzwmmnmvnzmpfmhbbhsbfdfclzcnbrlgpbsvfgfpshrpvpgccmmghphrcvzwnlqjcfwrtwvlvcsdldldvnpwgrcsqlftllcctnvcwbdswvqlzwzzbpmvvctcrgnjfstbqvnzczrjlljfqzrwtfwmlvvdfbfntrrljtbrtbdfsqpnppfbppbsmghbnqddhrvwmgzttnqjrqlfrdhqjndmnjlbctgclltmznmrqtfjsjwnztdvhnhlfwpnnqlhhsrfzglsnrdnfvrqssbtlthzfnjdvrcgzsbnpdgqhhrlwspfqfqpvzdfwgrlhwplzvbzprsqzcwvhggvzpgjztnvwvddsflgsvqljmmhhdzqsqmthwzvllqwmsnvdpdbjcgdtrsnmwhnzhbhgjssstmhrpssnhnntmrbbbjgmjqtncbdljcgtmbctpgdrnqcnrpssrdtpbsmlzlcztbrggglswnjzqgbsmgbqdzppqrwgtnlrjrvlpnqlcdwhltzzlqdwwrglldzcqrjtjtlgdqrtwzjgtdthsdccsmsrbjjsgdqcwdltvnjwtddsnpnsvzcdbfqnvsjbngqrztmbrnbvhhjzdtqrgldpvjqjpnshbjdsdgbjdjzdmrvzhwmtgcjrfnprstqgfgnwfpcjzhlnwpdbtqbspssqdrzhmmsrqtlwngvbrvgdgztnrlwcnqwvcdmhhdrmpfqbgbjpvzwbsbgcpsnpjplcrjdhflqvsdctclqqnmprngtvbmlmpqrsqdsrzgsmzmsczpsnmfmtfnjvnddjhqbjdvtgftjfvjhgpjqdhlszqjmcbnwrppzwjvmgblspjmfhjdbnmrllnfqlpcbndvqdzhhmmrpsljgdshpnrgnmwfjsdncqcwlctccrqghfdbsqqbnwctcqpvlrqqqvdjwlcnzmvdmcvlwnftjnqqldfwhmdtcpnlgfcdjdrfvmwqdzsjzctmmmrswhlwthttvcsqqscdcsmjgqfjhswlpsfjrppdmbwrthcwszqwwgnjsdqdrswmnzbrvqcwlrlwwvjmrrhsnzprggbzhhdqwvnspsmzzqdtbphzvwrzvqnbntjndrwllzwchczdwvnfjjdwfhdlgncftldzwdtjzjrmnfwwgmqdrltmgrfsjztfcvwjsggtvbnsvthflwfdtljrgqhmfqhmhfffqhtgwtlmwgzsglqnfwnrnvgvbdgqjrqtsmgsmzdpffnnzwlpbqphqmgdzspfrdqlptwmfwlgnqqdhtbbjtfhllrhhdcszjtmrprzhzzlgjqbcnhzcmhzrsnmmrzztffrldthhfvwhgjhwmjfbdvnllfmlpdsldjnpcwlpbwqzdwbgjb diff --git a/inputs/sample.txt b/inputs/sample.txt index edacdb9..7980a82 100644 --- a/inputs/sample.txt +++ b/inputs/sample.txt @@ -1,10 +1 @@ - [D] -[N] [C] -[Z] [M] [P] - 1 2 3 - -move 1 from 2 to 1 -move 3 from 1 to 3 -move 2 from 2 to 1 -move 1 from 1 to 2 - +mjqjpqmgbljsphdztnvjfqwrcgsmlb diff --git a/src/main.rs b/src/main.rs index a99c821..7b8384d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +#![feature(byte_slice_trim_ascii)] #![feature(test)] extern crate test; @@ -6,107 +7,8 @@ const INPUTS: [&[u8]; 2] = [ include_bytes!("../inputs/input.txt"), ]; -#[derive(Debug)] -struct Stack { - stacks: Vec>, - instructions: Vec, -} - -#[derive(Debug)] -struct Instruction { - count: usize, - from: usize, - to: usize, -} - -fn parse(input: &[u8]) -> Stack { - let mut stacks = vec![]; - - let mut input = input.splitn(2, |&c| c == b'\n'); - let mut line = input.next().unwrap(); - let mut rest = input.next().unwrap(); - - while rest[0] != b'\n' { - let mut i = 1; - - while (3 * (i - 1) + i) < line.len() { - if stacks.len() < i { - stacks.push(vec![]); - } - - if (b'A'..=b'Z').contains(&line[3 * (i - 1) + i]) { - stacks[i - 1].push(line[3 * (i - 1) + i]); - } - - i += 1; - } - - let mut temp = rest.splitn(2, |&c| c == b'\n'); - line = temp.next().unwrap(); - rest = temp.next().unwrap(); - } - rest = &rest[1..]; - let stacks: Vec> = stacks - .into_iter() - .map(|c| c.into_iter().rev().collect()) - .collect(); - - let mut input = rest.splitn(2, |&c| c == b'\n'); - let mut line = input.next(); - let mut rest = input.next(); - - let mut instructions = vec![]; - - while let Some(l) = line { - let mut output = vec![]; - for &c in l - .iter() - .filter(|&c| (b'0'..=b'9').contains(c) || c == &b' ') - { - if c == b' ' && output.last().map_or(true, |&c| c == b' ') { - continue; - } - output.push(c); - } - - if output.is_empty() { - break; - } - - let mut input = output.splitn(2, |&c| c == b' '); - let e1 = input.next().map_or(0, |c| { - c.get(1) - .map_or(c[0] - b'0', |a| (c[0] - b'0') * 10 + a - b'0') - }); - let mut input = input.next().unwrap().splitn(2, |&c| c == b' '); - let e2 = input.next().map_or(0, |c| { - c.get(1) - .map_or(c[0] - b'0', |a| (c[0] - b'0') * 10 + a - b'0') - }); - let e3 = input.next().map_or(0, |c| { - c.get(1) - .map_or(c[0] - b'0', |a| (c[0] - b'0') * 10 + a - b'0') - }); - - instructions.push(Instruction { - count: e1 as usize, - from: e2 as usize, - to: e3 as usize, - }); - - if let Some(r) = rest { - let mut input = r.splitn(2, |&c| c == b'\n'); - line = input.next(); - rest = input.next(); - } else { - break; - } - } - - Stack { - instructions, - stacks, - } +fn parse(input: &[u8]) -> &[u8] { + input.trim_ascii() } fn main() { @@ -118,22 +20,29 @@ fn main() { } } -fn solution(mut input: Stack) -> String { - for ins in input.instructions { - let l = input.stacks[ins.from - 1].len(); +fn solution(input: &[u8]) -> usize { + let mut buffer = [0; 26]; - let crates = input.stacks[ins.from - 1].split_off(l.saturating_sub(ins.count)); - - input.stacks[ins.to - 1].extend(crates); + for &c in input.iter().take(4) { + buffer[(c - b'a') as usize] += 1; } - input - .stacks - .into_iter() - .filter(|c| !c.is_empty()) - .map(|c| *c.last().unwrap()) - .map(|c| c as char) - .collect() + if buffer.iter().all(|&c| c == 0 || c == 1) { + return 0; + } + + for i in 4..input.len() { + let c = input[i]; + buffer[(c - b'a') as usize] += 1; + let last = input[i - 4]; + buffer[(last - b'a') as usize] -= 1; + + if buffer.iter().all(|&c| c == 0 || c == 1) { + return i + 1; + } + } + + 0 } #[bench] @@ -144,3 +53,11 @@ fn solution_bench(b: &mut test::Bencher) { test::black_box(result); }) } + +#[test] +fn tests() { + assert_eq!(solution("bvwbjplbgvbhsrlpgdmjqwftvncz".as_bytes()), 5); + assert_eq!(solution("nppdvjthqldpwncqszvftbrmjlhg".as_bytes()), 6); + assert_eq!(solution("nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg".as_bytes()), 10); + assert_eq!(solution("zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw".as_bytes()), 11); +}