8000 Solve 2018 day 2 part 1 · sim642/adventofcode@60fc8b7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 60fc8b7

Browse files
committed
Solve 2018 day 2 part 1
1 parent b387413 commit 60fc8b7

File tree

3 files changed

+297
-0
lines changed

3 files changed

+297
-0
lines changed
Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
luojygedpvsthptkxiwnaorzmq
2+
lucjqgedppsbhftkxiwnaorlmq
3+
lucjmgefpvsbhftkxiwnaorziq
4+
lucjvgedpvsbxftkxiwpaorzmq
5+
lrcjygedjvmbhftkxiwnaorzmq
6+
lucjygedpvsbhftkxiwnootzmu
7+
eucjygedpvsbhftbxiwnaorzfq
8+
lulnygedpvsbhftkxrwnaorzmq
9+
lucsygedpvsohftkxqwnaorzmq
10+
lucjyaedpvsnhftkxiwnaorzyq
11+
lunjygedpvsohftkxiwnaorzmb
12+
lucjxgedpvsbhrtkxiwnamrzmq
13+
lucjygevpvsbhftkxcwnaorzma
14+
lucjbgedpvsbhftrxiwnaoazmq
15+
llcjygkdpvhbhftkxiwnaorzmq
16+
lmcjygxdpvsbhftkxswnaorzmq
17+
lucpygedpvsbhftkxiwraorzmc
18+
lucjbgrdpvsblftkxiwnaorzmq
19+
lucjfgedpvsbhftkxiwnaurzmv
20+
lucjygenpvsbhytkxiwnaorgmq
21+
luqjyredsvsbhftkxiwnaorzmq
22+
lucjygedpvavhftkxiwnaorumq
23+
gucjygedpvsbhkxkxiwnaorzmq
24+
lucjygedpvsbhftkxlwnaordcq
25+
lucjygedpvibhfqkxiwnaorzmm
26+
lucjegedpvsbaftkxewnaorzmq
27+
kucjygeqpvsbhfokxiwnaorzmq
28+
lugjygedwvsbhftkxiwnatrzmq
29+
lucjygedqvsbhftdxiwnayrzmq
30+
lucjygekpvsbuftkxiwnaqrzmq
31+
lucjygedpvsbhfbkxiwnaoozdq
32+
lscjygedpvzchftkxiwnaorzmq
33+
luckygedpvsbxftkxiwnaorvmq
34+
luyjygedgvsbhptkxiwnaorzmq
35+
lmcjygedpvsbhfckxiwnaodzmq
36+
lucmygedwvybhftkxiwnaorzmq
37+
lgcjhgedavsbhftkxiwnaorzmq
38+
lucjugedpvsbhftkxiwmaoozmq
39+
lucjygedpvybhftkxkwnaorumq
40+
lucjygedpvzbhfakxiwnaorzpq
41+
lucjygedpvsbhftyxzwnajrzmq
42+
lucjygedpvsdhfakxiwnoorzmq
43+
luyjygeopvhbhftkxiwnaorzmq
44+
lucjygadpvsbhntkxiwnaorzmx
45+
lucjygedzvsbhftkiiwuaorzmq
46+
sucjygodpvsbhftkxiwuaorzmq
47+
euijygydpvsbhftkxiwnaorzmq
48+
lucjlgeduvsbhftkxicnaorzmq
49+
lucjdgedpvsbhfgkxiwnhorzmq
50+
lucjymedpvsbhotkxiqnaorzmq
51+
lucjygmdpvsbhftkxywnairzmq
52+
lucjggedpvsbhfxkxiqnaorzmq
53+
sucjygedpvsbhftkxiwnaorjmv
54+
lucjlgedpvsbhftkxiwnairzmg
55+
lucjygedppubhftkxijnaorzmq
56+
lucjyxedpvsvhftkxlwnaorzmq
57+
lucjygedpvxbhftkfiwyaorzmq
58+
lucjygedposbhftkniwnaorzmw
59+
lucjygewpvsbhftgxiwnavrzmq
60+
lucjynedpvsbmftkaiwnaorzmq
61+
lucjyhedpvzbhftkxiwncorzmq
62+
lucjygedpvsbhfikpiwnaoezmq
63+
lupjypedpvsbhftkjiwnaorzmq
64+
lucjygudpvsbhfwkxivnaorzmq
65+
lucjygrdpvsbhatkxzwnaorzmq
66+
lucjbgmdpvsbhftkxihnaorzmq
67+
lucjmgedpvpbhftkxiwnaorcmq
68+
lucjygedpvskhfukmiwnaorzmq
69+
lucjygedgvsbhftkxiwnvprzmq
70+
lucjzgedppsbhytkxiwnaorzmq
71+
lfcjypedpvsbhftrxiwnaorzmq
72+
lucjyqldphsbhftkxiwnaorzmq
73+
lucjygedpvsbhftzxewnaorzqq
74+
lucjygeapvsbhftkxiinoorzmq
75+
lucjygedpvszhftguiwnaorzmq
76+
luojygedpvsbhftkxawnaornmq
77+
lucjygedpcsboetkxiwnaorzmq
78+
lufjygedpvfbhftaxiwnaorzmq
79+
luciygedpvsbhftkxhwaaorzmq
80+
lucjygedpvnbhftkaiwnaorzmc
81+
lucjygedpvsbhftkxiwcaorbdq
82+
lucjygelpvsbhftaxiwsaorzmq
83+
lujjygedpssbhftkxiwnaorzmr
84+
ludjygedpvsbhftkxiynaorzmj
85+
lukjygeedvsbhftkxiwnaorzmq
86+
lucjqpedpvsbhftkxiwnaozzmq
87+
jucjygedpvsbhftkxgwnaorqmq
88+
llwjygedpvsbhetkxiwnaorzmq
89+
rucjygedpvsbhftkxiwndorymq
90+
lucjygedpvsbhftvxswnaorwmq
91+
lucjygerpvsbhfykxiwnaormmq
92+
lucjynedpvsbhftkxijnaorziq
93+
ljcjygedpvrbhftkeiwnaorzmq
94+
lucjygedpnsbhftkxiwhaornmq
95+
lucjygadpvsbhftkxibnaorzqq
96+
lucjqgedpvsihftkxiwnaorzdq
97+
lucjygedpvsqhfttjiwnaorzmq
98+
llcjygedsvsbhftkxiwwaorzmq
99+
lfckygedpvsbhftkxiunaorzmq
100+
lucjyeedpdsbhftkxiwnaotzmq
101+
lucjygedpvsbhftkoiwnaoqzcq
102+
huwjvgedpvsbhftkxiwnaorzmq
103+
lucjygldpvsbdhtkxiwnaorzmq
104+
lycxygedpvsbhftmxiwnaorzmq
105+
lucjygedpvsbhftyxianvorzmq
106+
lucuygedpdsbhqtkxiwnaorzmq
107+
lucjyggdpvsbhftkxiwnavremq
108+
lucjyggdpvsbkftkxiwnaorbmq
109+
luchyqedpvsbhftixiwnaorzmq
110+
lpcnygedpvsbhftkxzwnaorzmq
111+
lucjygedpvsihftkxiwfaortmq
112+
lucjygvdpvsbhgtkxiwnamrzmq
113+
lucjygodpvrbhqtkxiwnaorzmq
114+
lucjygedpfsbhftkxipnaorzma
115+
lucjygedpvsbhftkxpcjaorzmq
116+
lucjygodbmsbhftkxiwnaorzmq
117+
lucjygedpvsbhftkxipnaogzmb
118+
luxjygjdpvsbhltkxiwnaorzmq
119+
lucxygedpvsbhftkxzwnaorjmq
120+
luajygedpvsbhftzxiwaaorzmq
121+
lhcjygedpvsqhftfxiwnaorzmq
122+
lucjygecphsbhftkxiwnaprzmq
123+
lucjygedpvsbhptkxifnaorqmq
124+
lucjygedpvichftkpiwnaorzmq
125+
lucjygedpcsbhstkxswnaorzmq
126+
kucjygedpvsbhftkxiwbyorzmq
127+
lfpjxgedpvsbhftkxiwnaorzmq
128+
lucjytldpvsbhftkxiwdaorzmq
129+
lufjygedpvfbhftbxiwnaorzmq
130+
lucjygebpvgbhftkxipnaorzmq
131+
luujygedpvdbhftkxiwnaorzmd
132+
lucjygedpvsbhfbyxwwnaorzmq
133+
lucjygedpvsbhftkxiwnaoqpmw
134+
qucgygedpvsbhftkxiwnaortmq
135+
ludjtgedpvsbhftkxiunaorzmq
136+
lucjyiedovsbhftkxiwjaorzmq
137+
lucjygedpysbjftoxiwnaorzmq
138+
lumjygedpvsbuftkxiknaorzmq
139+
lucjygedpvsbhfokxgonaorzmq
140+
lucjygeqpvsbhftkfiwnaorzeq
141+
lucjygedpvskhftkxiwntorkmq
142+
luujygedpvsbhftkxiwraorzmt
143+
lucwygedpvsbjftkxiwnaorzmj
144+
jucjyfedcvsbhftkxiwnaorzmq
145+
luujygedpnsehftkxiwnaorzmq
146+
lucjygedpvszhfckxiwnaorzmi
147+
lucjyredpvsbzftkpiwnaorzmq
148+
lucjygedpvsbwfgkxiwnaorzoq
149+
lucjygedpvgbhftkpiwnaorzms
150+
lucjygedpvjbhftkxzwnaoizmq
151+
vucjycedpvsbhftkxiwfaorzmq
152+
luawygeapvsbhftkxiwnaorzmq
153+
lucjygetpvsbhftkxiwnaafzmq
154+
lucjvgedpvsbhftkxywnavrzmq
155+
luolygedpvsbgftkxiwnaorzmq
156+
likjygedpvsbhftkxiwnabrzmq
157+
lucjygedovsbhftkxirpaorzmq
158+
lucjygedphsshftkxqwnaorzmq
159+
uuqjygewpvsbhftkxiwnaorzmq
160+
lucjygedcvsbhftkxiwoarrzmq
161+
lucnygedpvsbhfakxiwnaorzms
162+
lucjygedpvsbhntkxiwnawrzmb
163+
lucjygedpvsblfxkxivnaorzmq
164+
lucjygedpvsghftkxiwnaawzmq
165+
yucjygedpgsbhftkxiwnaorzbq
166+
lucjyweapvsbhftkxiwnaoezmq
167+
lucjygevpvsbyftcxiwnaorzmq
168+
luejygedovsbhftkxiwnqorzmq
169+
lucjyqedpvsbhfbkxiwnaorzms
170+
lucjypedpvsbhftwxiwnhorzmq
171+
lucjygedpvsbhmtkviwxaorzmq
172+
lucjogedpvpbhftkxiwnaorqmq
173+
lucjygedpvsbhztkxkwnaoazmq
174+
lucjyaedpvsbcftkxiwnaorzhq
175+
lucjygbdpvkbhftkxiznaorzmq
176+
lucpygedpvzbhftkxfwnaorzmq
177+
lucjmgedpcsbhftkxiwnaoezmq
178+
lucjygedyvsbbftkxiwnnorzmq
179+
lucjyyedpvsbhftuxiwnaonzmq
180+
lucjygfdpvsbhutkxiwnaorzmt
181+
uccjygedpvschftkxiwnaorzmq
182+
lusjygedpvbbhqtkxiwnaorzmq
183+
ducuygedpvsbhftkxiwnaorzyq
184+
lucjygkdvwsbhftkxiwnaorzmq
185+
cucjyyedpvsbhftkxiwnaerzmq
186+
lucjygedavsbhftkxiwnkorzbq
187+
lucjygedmvsyhftkxiwiaorzmq
188+
lucjygeipvsbhfpkxiwnaorzpq
189+
vucjugedvvsbhftkxiwnaorzmq
190+
lucjyzedpvsbhftkxpwnaoozmq
191+
lucjygedpvgbhftkxiwtaorzqq
192+
lecjygedpvcwhftkxiwnaorzmq
193+
lucjyghdpvsbhfcyxiwnaorzmq
194+
lucjygedpvesqftkxiwnaorzmq
195+
lucjyjehpvsbhftbxiwnaorzmq
196+
lucjygedpvtbhdtkxignaorzmq
197+
lucjygxdpgsbhftkxivnaorzmq
198+
lucjygvdpvsbhftkpiwnaorzqq
199+
lucjysedpvsbhftkxiwnalrzmc
200+
lucjygedpvkbhjtkxiwnaorsmq
201+
lucjygedpvsbvfgkxiwnaerzmq
202+
lucjygedpvsihftkxilnaorzmu
203+
lvcvygndpvsbhftkxiwnaorzmq
204+
lucjysedpqsbhftkxiwnaordmq
205+
lucsygeypvsbhftkwiwnaorzmq
206+
lucjygewpotbhftkxiwnaorzmq
207+
lucjysedpvsbhftkxiwnanrzmv
208+
lucjygedpvsbhutkxiwnaoplmq
209+
wucjygedpvsqbftkxiwnaorzmq
210+
lacjygeepvsbhftkxiwnjorzmq
211+
lucjygedpusyhftkxicnaorzmq
212+
qucjyredpvsbhftkxiwnworzmq
213+
lucjygedevsbhftkgiwnayrzmq
214+
lucjygedpksbrftkliwnaorzmq
215+
lucjygedpvsbhfgkxisnaorzeq
216+
lucjygedpvhdhftkeiwnaorzmq
217+
lucjsgedpvsboftkxiwnaorumq
218+
luctygedpvsbhftouiwnaorzmq
219+
lucjygedpvsjhfukjiwnaorzmq
220+
lucjagrepvsbhftkxiwnaorzmq
221+
lucjkgerpvsbhftkxiwnairzmq
222+
turjygedpvsbnftkxiwnaorzmq
223+
lbcjygedpvsbhftkdpwnaorzmq
224+
lucpygedpvsbhftkxnwnoorzmq
225+
jucjygedpvsbhbtkxicnaorzmq
226+
lecjygedpvsbhftkriwnaogzmq
227+
licjyvcdpvsbhftkxiwnaorzmq
228+
lrcjygewpnsbhftkxiwnaorzmq
229+
ltcxygedpvlbhftkxiwnaorzmq
230+
luctygedpvhbhztkxiwnaorzmq
231+
lucwygedplsbhfakxiwnaorzmq
232+
lucjygedpnsbhftkxiwjaoezmq
233+
lucpygedptsbhftkxiwnaorzmo
234+
lucjygedpvibhqtkxiknaorzmq
235+
lucjwgqdpvrbhftkxiwnaorzmq
236+
lucjmgkdpvsbhftkxiwraorzmq
237+
lucjygwupvsbhftkxiznaorzmq
238+
lucjhgedpvobhftkxiwncorzmq
239+
lucjygedpvsbhftkxiwnaohtmj
240+
lucjygedpvsbeftkfiwnaorzyq
241+
lucjygcdpvsbpftkhiwnaorzmq
242+
lucjygedpmsbhftkxiwnkouzmq
243+
oucjygedpvsbyftkximnaorzmq
244+
lucjcgedpvsbhftkxywnforzmq
245+
lfcjygedfvsbdftkxiwnaorzmq
246+
ducjygedevsbhfttxiwnaorzmq
247+
ldcjdgedpvsbhftkxiwnavrzmq
248+
lucjymedmvsbhqtkxiwnaorzmq
249+
lucjygedpvabhftkxiwnasrlmq
250+
lucjygefpvsbhftkxmwnaorkmq
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package eu.sim642.adventofcode2018
2+
3+
import scala.language.implicitConversions
4+
5+
object Day2 {
6+
def letterCounts(id: String): Map[Char, Int] = id.groupBy(c => c).mapValues(_.length)
7+
8+
implicit def bool2Int(b: Boolean): Int = if (b) 1 else 0
9+
10+
def checksum(ids: Seq[String]): Int = {
11+
val (cnt2, cnt3) = ids.foldLeft((0, 0)) { case ((cnt2, cnt3), id) =>
12+
val idCounts = letterCounts(id).values.toSet
13+
(cnt2 + idCounts.contains(2), cnt3 + idCounts.contains(3))
14+
}
15+
cnt2 * cnt3
16+
}
17+
18+
lazy val input: String = io.Source.fromInputStream(getClass.getResourceAsStream("day2.txt")).mkString.trim
19+
lazy val inputLines: Seq[String] = input.lines.toSeq
20+
21+
def main(args: Array[String]): Unit = {
22+
println(checksum(inputLines))
23< D2EF /code>+
}
24+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package eu.sim642.adventofcode2018
2+
3+
import org.scalatest.FunSuite
4+
import Day2._
5+
6+
class Day2Test extends FunSuite {
7+
8+
test("Part 1 examples") {
9+
assert(checksum(Seq(
10+
"abcdef",
11+
"bababc",
12+
"abbcde",
13+
"abcccd",
14+
"aabcdd",
15+
"abcdee",
16+
"ababab"
17+
)) == 12)
18+
}
19+
20+
test("Part 1 input answer") {
21+
assert(checksum(inputLines) == 4712)
22+
}
23+
}

0 commit comments

Comments
 (0)
0