Skip to content

Commit fca2cfe

Browse files
committed
Add year 2022 day6
1 parent 9c614ab commit fca2cfe

File tree

4 files changed

+92
-4
lines changed
  • year2022/src

4 files changed

+92
-4
lines changed

year2022/src/main/java/dev/linl33/adventofcode/year2022/Day5.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package dev.linl33.adventofcode.year2022;
22

3-
import dev.linl33.adventofcode.jmh.JmhSolutionBenchmark;
43
import dev.linl33.adventofcode.lib.util.AdventUtil;
54
import org.jetbrains.annotations.NotNull;
65

@@ -9,10 +8,9 @@
98
import java.util.List;
109
import java.util.stream.Stream;
1110

12-
public class Day5 extends AdventSolution2022<String, String> implements JmhSolutionBenchmark<String, String> {
11+
public class Day5 extends AdventSolution2022<String, String> {
1312
public static void main(String[] args) {
14-
// new Day5().runAndPrintAll();
15-
new Day5().benchmark();
13+
new Day5().runAndPrintAll();
1614
}
1715

1816
@Override
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package dev.linl33.adventofcode.year2022;
2+
3+
import org.jetbrains.annotations.NotNull;
4+
5+
import java.io.BufferedReader;
6+
import java.io.IOException;
7+
8+
public class Day6 extends AdventSolution2022<Integer, Integer> {
9+
public static void main(String[] args) {
10+
new Day6().runAndPrintAll();
11+
}
12+
13+
@Override
14+
public Integer part1(@NotNull BufferedReader reader) throws IOException {
15+
return findMarker(reader, 4);
16+
}
17+
18+
@Override
19+
public Integer part2(@NotNull BufferedReader reader) throws IOException {
20+
return findMarker(reader, 14);
21+
}
22+
23+
private static int findMarker(@NotNull BufferedReader reader, int nDistinct) throws IOException {
24+
var line = reader.readLine();
25+
26+
for (int i = nDistinct - 1; i < line.length(); i++) {
27+
if (checkIndex(line, i, nDistinct)) {
28+
return i + 1;
29+
}
30+
}
31+
32+
throw new IllegalArgumentException();
33+
}
34+
35+
private static boolean checkIndex(String line, int fromIndex, int nDistinct) {
36+
var characterMask = 0;
37+
38+
var i = 0;
39+
for (; i < nDistinct; i++) {
40+
var c = line.codePointAt(fromIndex - i);
41+
if ((characterMask & (1 << c)) > 0) {
42+
return false;
43+
}
44+
45+
characterMask |= 1 << c;
46+
}
47+
48+
return i == nDistinct;
49+
}
50+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pjbjvjtjljplppjssvtvwtwptptztltbtrrjgrjrzrqrjrbrhbrhrlllbpbdbbzqqgsqshqssjjbsjbsbmbhhmchhrqrcqqbwbqwwqrrznnsbswwwdjwdwmmsvszzlbbgddbgdgfgttzjzrjzrjzzvrvqqgpqggtbgtgvvrhvhtvtjjbpjjfjhjbhbddbjjjmzmtmgmpgmmmljlnljjmpmbpmbmrrlhhlppdgdfgfbbqlbbtffjjgvvnpvpbpttqmmnhhgfgrrwhrrbnbznzccmbmvmmzszsvsbvbccsrslsjsbbtdtwtvttvpvzzvbzzwczwcczhzhwhjhjghgppgpgttdwdhwhphnppqmpqqhthcchdhmhnnbcnbcbbggbfblljttwsswspsggpjjzszcscsmcmdmnngzzhrzrbrhbhzbzvzgvgffnlnljlrrhchhsvhssmpmccncdnccgdgbglgtlggnllsvvpfvpfpbffsgglddjrrzzphhptprtppwrwffzllrbrmrpmpdmpdmpplpspcphcphhgmmqnmmvnmmdvmvsmmqjmmlmlbmlbmlltlptphpnncscbscbcggwhhgjgqjqmjmdjmdjdrrvgvvzlldgdnnvttmmpffdjjvvchcwwbhwbwzzlmlccrttcntccpcgccpgcpggdrrbtrthhlrrbqrrpspdsdldbldblbzbpbgggtngtgqqtwwdjjmmcrmcrcvclcddhllpzpdzzmccrtccfvffccfhccpscctbbbzqzvvllgwlgwgvwwjswjswsvvwhhvjvsjvjmmjhjrhrmrvrnrccmnmzzmdzzbtbvbqvvgzgcgvvvvlltvllbfbqqrppwhpwpffzddzdzwdzzrggmhmfhmhbbzjzsjzzhhjdhhdnndsnssnfffbmffwhwrhhmmbnnbrnrbrrtqtztnzzzzblbhbdhbbfmfqfmmsgszzvfzfmfwfnwfwggwngnqnwqnwqwvwqvwvdvrvjjfnjnmnfmmwzzltztjjqnnnmlmzlmmrcmclcqqhrhdhccdfdvfvccvtcvvdmmtmccwjjcbcrrjmrjrdrffgwwvbvlvsspwpsspzsschssmqsqmqmlqmmqgqfqcqjcjtthjttlddfvvwwjvvtpvvfsvffqnffznzqzszgzmmjttwztwzzhqqccqsqmqnmqqjhqhzhwhvhdddsndsdfftvffwlwnnmmdpmmnhhrqrrclcdlcddhcdcppgrprnpnptnpphgpbqfngdgzvgndwcgrwcsfmhzsvddhzbgjmvvdjjzswvgnpmvgdpwsgbgjzjpsrfdzdzjzzrpplbhsmgddqzjbdzdzltqqwqjzqvwfmcdppbdbprrwzhmnrqclzrnmdjnfbwmvdrwtpwvgscrqgpndqnzbjsbljcbthbpgdjdcdwfhpvjnbsfjdlrjldvvmtfdslrhlfwmvclqrljrqmmjgqfwmfgwdjzzptgcthvtgdswsqjrqvnzmtqldjjcqnfhtvbwhjqlvpptfwjrdpcwvzddgcjzvqbhtsnnnjqqmqlbgvqmvjhvvpbzcbdmhgmcjbfcccsvlzjztvjzrrlhtgwccdcgcptqlmdhmdhvqzfntbjqtsmvqgwsltqntgszllntrljfgfsghtbbcqrdgwqphmbqtzmjqccrgvqpqpchzjstdmmtvntwjqsbcqjgnhzlllcfbpgtgrhwwhqqdlgrlsbzbmchvjnsgpdnmqvtgwqjpgflqgfngjfcfwqzmvvgzmmhbgfnbzvzclwclqdcccgbrrzpwdtprgsvhbgsnbntgrvnzhrnzfzdmnlbnrbqvmjbwpgvjlhbcvsrlqmcsnlrvtfdwtvcbmlndgbctsnmtctjszlpddqmzbtphhhfznwbdfsgppmdmczmhmmrzpllfqqbgvlsrscpfgznhdhgrnnnvrchgvzlqbgvcfghjvlvrvpclfcshbmvglcfrjbzrbcjmjjrfgqthwfrqbgtjldmbnfwllspmwrvstvrltvrlvrtjvprgtgzjlrgclvjhqpfcwcdbdtzwdsdfrtsvtvgjmsszdfqlmhqqlzswjfndswlmhcrhglphvpnfjpbmggbwlmzjchpnrllbjpmgmzjjrqpqgsbrszqhdljcpnclvrvbntgtcdcmhtdhgslhpvdjpvrszfrjhsbvcvtfwvvgczprnpbhmnnlmctbtqdjspgvhvnhwvspwgnjvzllwlnjhfjwsslppmjbfbdnthcpzbcmnnbvhctgwgdvhvlrbltmdnlfcsncqgrmjprshdvvtvcccgzhszcjgczhmhtvmccjpchqshhdzjjhbfpzqdjszdhdvlmgctmwcjprwlsqbcqhlcrfdgnqzfdfvqslmqlppbsvbmjmfbrtdmpmtqvwvppcfzddjzhhzlrrnnhbrlhmzlqwftprfvctnfhfhfzrnrvggfqmqwcwszhtbfjncprgwcqbjlvtnrprlwwghswvprjmsbmqvwnnfggprndvshfvvwtrqjpwghgbppftgzhqjslfzhngwfsjnmjzdsjqgpmglwnjlcgmczgvndszrszcpnzqpbzjmgrfsbjlghwrbqsqdhlnhzsvsgbqhbcdffjlgrbdrrjvclzqpftlhdvvcrvlgvlpnjcqdcbdjtlwnldjhhhzrwsqlhlsztwrznfsszptlrhjmqwmnfwjtjwmmmtvwzhpmjgzgsscbddgvvhpcnhvnggzhbzvvjlmdftpbcsvtsttrvgghptmmcdclbdvmnsdntthfbdznbclwccnlzcvdwzrqgddjszvbdqcjppzrtpnrhfcvvwpjqczgqwzzzvzmlnlzqszvtllftthgwgftjzsndpzzcnqpcvmsdvvfrjdsvfclsqqhsjrrctfvdrlhfmhprjggdcmqrrbqtwnrllhhztvjgmzqszbvqfwsgllvhsvfrjffvdscwjzqlzlwdpgthddpgzjfdbdqpsnntwpslvsdpqfnsgcllszcjwvtqhwhpfrlfdgwrfmgfpjmvnstrmtfcvgwlqdfqvntltqtrmjjtwcthvwntqgvncssplnmvlnstlcphvlcmvjnstwldtntchcbmzmlzhgjfbrdlgzvqpgcndmfdnmcnwhmpdnpqstfddddcrpgrpfwfbzjqtnzwwqpzrqpmrjpfznrndfgwhtlvrcrphqfjzjbttwhgnsngqwvnsbvcqtjlmhvmnmnnmjcmlpnpgmrqsbmgljvsfqvrlljqzmzqqbgpvcrwdjmgsglssjswmnvtshhfqjhqmfmvcjwfpwsppgtrqsbhhcdljnjphnjszqpvdplbwzpwmmpwfhmhngtllzqvpmgdctmfqwwqjszssmjhwnrjdtmmvpdnwlqtcbpfcmwtbjmmsmmdpqgzdhsblgjmjbpzgqvqhnggtwmhztbbhlflllgwblncjjsngdgvsfdmsbsvlpnjjzqqbzhsqclmjnnmmwlpvtgwqmcgmrqdwdddlgbvhntbztbjnqhdlggnzwsdtdzprgddhtcttjrcpszgchtfwqjsdlnbntfwqpzpfsqrqjhthmcfszwtwcqwbvfzdnrrpmzjdrhsgmhfbsldvcrjdwvpqpszzlvbptljgvccqsdhhnztjpghbvhfptgplqdvldjzfthpspwvgljwnnndwrqzbrstnqbvrrcghssnrpvtrhmvcmbngwndzfswmgjwnnzqdcjhpthcgvthsnwqzrnzrvdjmctchhsbnrtvctzqfpcjhzmhnfjlqftbjztfbcppgmwvrzzrvlcpnpwwpvtcpdplrcfpgfqjtlfjtphhpcltwqcbqbznbtjrtdrpgtvzmgsclhpptrssqqbctdrftqzmwjmrmjtgmjmsnbnspjvcqpqnmgzgjrmfhghvsfsdqnbdjsbcpczsdswdcvhfzlgpzbtmztcnbpcvjnlcdmmlbtwzsfqtfnlrwjtwmgslcgptgbdsfwdhppvfwbbgdfdqtrbncbznmqtchzsdzlhlhjnnbpdvnnfjrdfbdqmvcb
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package dev.linl33.adventofcode.year2022.test;
2+
3+
import dev.linl33.adventofcode.lib.solution.AdventSolution;
4+
import dev.linl33.adventofcode.testlib.AdventSolutionTest;
5+
import dev.linl33.adventofcode.testlib.StringResourceIdentifier;
6+
import dev.linl33.adventofcode.year2022.Day6;
7+
8+
import java.util.Map;
9+
10+
class Day6Test implements AdventSolutionTest<Integer, Integer> {
11+
@Override
12+
public AdventSolution<Integer, Integer> newSolutionInstance() {
13+
return new Day6();
14+
}
15+
16+
@Override
17+
public Map<Object, Integer> getPart1Cases() {
18+
return Map.of(
19+
newSolutionInstance().getPart1Resource(), 1275,
20+
new StringResourceIdentifier("mjqjpqmgbljsphdztnvjfqwrcgsmlb"), 7,
21+
new StringResourceIdentifier("bvwbjplbgvbhsrlpgdmjqwftvncz"), 5,
22+
new StringResourceIdentifier("nppdvjthqldpwncqszvftbrmjlhg"), 6,
23+
new StringResourceIdentifier("nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg"), 10,
24+
new StringResourceIdentifier("zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw"), 11
25+
);
26+
}
27+
28+
@Override
29+
public Map<Object, Integer> getPart2Cases() {
30+
return Map.of(
31+
newSolutionInstance().getPart2Resource(), 3605,
32+
new StringResourceIdentifier("mjqjpqmgbljsphdztnvjfqwrcgsmlb"), 19,
33+
new StringResourceIdentifier("bvwbjplbgvbhsrlpgdmjqwftvncz"), 23,
34+
new StringResourceIdentifier("nppdvjthqldpwncqszvftbrmjlhg"), 23,
35+
new StringResourceIdentifier("nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg"), 29,
36+
new StringResourceIdentifier("zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw"), 26
37+
);
38+
}
39+
}

0 commit comments

Comments
 (0)