this repo has no description
1<!-- livebook:{"persist_outputs":true} -->
2
3# Day 02
4
5```elixir
6Mix.install([:kino_aoc])
7```
8
9## Section
10
11<!-- livebook:{"attrs":"eyJhc3NpZ25fdG8iOiJwdXp6bGVfaW5wdXQiLCJkYXkiOiIyIiwic2Vzc2lvbl9zZWNyZXQiOiJBRFZFTlRfT0ZfQ09ERV9TRVNTSU9OIiwieWVhciI6IjIwMjAifQ","chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} -->
12
13```elixir
14{:ok, puzzle_input} =
15 KinoAOC.download_puzzle("2020", "2", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION"))
16```
17
18<!-- livebook:{"output":true} -->
19
20```
21{:ok,
22 "5-10 b: bhbjlkbbbbbbb\n3-4 j: hjvj\n8-9 p: pmljtsttp\n3-4 t: hvtttqhdjmmnbqwbgfs\n4-6 m: mblwtzmvmdjkkmmtsckm\n6-9 f: ffffftfff\n1-3 g: xggg\n3-10 k: rwkhttkxxdpnlkq\n3-11 w: wwmwwwwwwwww\n5-7 f: fffffffff\n1-4 l: lglllbc\n2-5 n: njnnn\n6-8 t: tcjtltttttdttjttbt\n10-20 d: djddddccdbdddddddndd\n2-5 z: gzppzhrhzdthnpcr\n13-14 p: plvppptppppzppbkpk\n11-13 t: jjtjvzfhsrtsmkdhj\n11-12 r: rtrdvrrxrrxrzr\n2-6 x: dxsvxgvk\n7-11 x: hcxxpvxrnmxckkq\n12-17 s: sssssssssssrssssss\n2-4 v: vvpvvvjvvjvvqbvv\n15-18 h: thqhhhgjjqhhnhhznz\n8-11 j: jbmgbtmjtbb\n2-4 d: xxdfvp\n2-7 p: fftlppz\n9-13 d: dfddddddsdddds\n5-7 d: ddddddz\n2-3 h: hfbhhh\n1-4 k: rmkvkkkk\n16-17 w: wwwhwwwwwwwwwwwwq\n5-8 l: gllxllnlqlglrplk\n1-7 p: mhnpspp\n5-13 f: qhwffbtfzmdffztfjs\n2-8 f: fkjhvcbflbwhggtbbcb\n2-3 m: bcmldxmdh\n6-7 p: ppcpppw\n3-10 m: mmmmmmmmmj\n4-12 s: ssjssssssssmsss\n2-5 j: rmjnjtjjjj\n2-3 q: qqdqq\n10-15 v: vvvvvvvvvvvvvvdvvvvv\n1-4 w: wwwc\n4-14 m: mmsmmmvmmmmmqqmmmmm\n7-10 d: ddcdddzdddddd\n4-5 h: hhhhh\n9-17 p: ppppppppqppppppppp\n6-7 m: mqtmnms\n4-5 s: pssss\n2-6 t: tdttttpwttt\n7-8 l: llsxsllzlwl\n7-10 f: fflffffkqffffm\n3-4 f: cdfp\n3-4 z: zzzz\n6-7 s: sbssdvs\n3-4 g: ggdv\n11-16 l: lllllnbsqlfzwrfljkh\n3-4 k: tqkxxfk\n3-17 s: xshmvlmzrjdpnvlssn\n1-16 l: lzzvllgktckllmlltl\n5-6 l: qlltvl\n6-7 p: npvbpcp\n4-6 g: gmgvgn\n12-13 r: rrnlrrwrtvrrrrcrrrv\n11-12 h: hhvxhhhhwjhd\n13-14 p: pdppcsjtppppppvtwpj\n10-14 l: hljjkjxlfwzlllclzq\n18-19 z: zzzzzzzzzzzzzzztzhn\n11-12 p: hpspwrkqbnpp\n16-18 h: hhhhhhghhhhhhhhwhbh\n1-2 p: vpxnqqbgrxprmh\n13-19 m: mmmmmmmmmmmmqmmmmqm\n1-2 n: ncndsnl\n9-10 x: xxxxxxxxxgxxd\n9-12 w: wwwwwwwwwwzwwdfgwwp\n3-5 h: nqhvhzb\n4-5 j: jjjns\n10-12 f: ffffffffffff\n7-10 v: mgvrwvvsjw\n3-5 m: wpmmm\n3-10 s: ffsbvjdslsnshqs\n9-10 z: mgzzbjzqsz\n3-13 d: ddjdddddddddnd\n2-4 l: tqkfhpwvvmc\n1-3 z: zzzzzn\n3-5 l: ctljlckdpnlchrzbc\n6-7 v: hqvcvvv\n11-13 v: vvvvcvvvvvvvvvv\n8-9 t: ztndmlwdb\n5-6 v: fdxxrvwpw\n1-4 n: xnkb\n16-17 v: vvvvvvvvvvvvvvvvnvv\n12-14 b: bbbbbxbbbdbgbcb\n1-7 w: wwwwwwrwwjtwk\n3-10 d: bxnhbhrmgd\n4-5 k: kkknkk\n2-4 n: bndln\n3-10 p: vpkppcppppcplpksp\n9-10 d: fhbzbdzqsdxlhnbt\n11-13 z: zzmzzzzwzpzzz\n12-17 b: hkbcbbhthbrbbdgbl\n11-13 c: cpccnxccxbjtm\n5-6 n: nnrmnfnsnn\n3-8 l: sslkllwljcgl\n1-9 p: fpppzzpppppphtrhppp\n4-11 h: kskbvrqhdjph\n3-9 r: rsrvxnrchtrrrr\n4-5 n: nwbln\n3-4 g: gjgv\n13-14 r: rrrrrrsrtrrrrrrrr\n10-15 m: mmmmmmmmmtmmgmm\n5-6 k: wkpkkqk\n10-11 l: wlbllglkbltblrqlllm\n6-7 d: ddddsrddd\n17-18 v: vvvvvvvvvvvfvgvvsvv\n6-10 n: nngnnnnvnknn\n7-8 t: qdztnrnt\n5-11 d: dfbdxqbmsdd\n1-6 n: znnvqdnx\n7-9 k: kkkkkkkkl\n5-6 m: mmmszmtmmks\n1-5 l: wlllllll\n13-14 m: mcmmmmmlmmmmjmmm\n1-7 k: kklkjvckb\n14-15 d: ddddmddddmddddddd\n18-19 k: kfkkkkkkkkkkkkkkkpkk\n3-4 z: czjzc\n17-18 t: btttttjmltrttxctgt\n1-4 c: cccscqcccc\n9-14 k: tcwcstszkvhjfmrqpkp\n3-8 c: ccccccjcscncp\n10-11 d: dddddddddmdd\n3-5 m: rgmfmkmd\n1-5 k: mfhnk\n4-5 x: cwnxftlt\n1-3 n: flnqmnnhnn\n2-5 f: vwlcnsfd\n4-8 c: cccccccbc\n10-12 v: dhfvlvbvspjldzch\n7-16 f: ffsmffffjffqfpffff\n10-13 n: njtrrnnqntjtn\n13-17 f: frffcfffrjffffdfpff\n5-10 m: mmmmvfmmmmmmmmdm\n5-6 v: vvvvvzvvvvv\n6-12 r: dqrrcrhrhjsrrr\n8-14 z: zzzzzzzlzzzgzsz\n5-9 q: qkwzsvwdg\n12-13 d: vzjfvddgctfdrr\n6-7 f: mgndffb\n2-5 x: nxxmx\n7-9 c: cmxsccccf\n1-7 n: nnnnnnnnnn\n6-8 g: gggglfgp\n2-13 v: kvwxcrfmpfcfdrgv\n5-7 p: tpplpffpccpp\n8-12 m: mmmmmmmmmmmxm\n9-10 v: vvvvvvvvvcv\n4-5 m: mbnmmkknmmwshmkthj\n8-9 t: cltntrtpqwtcsftttf\n8-16 f: ffffrffpffffffffff\n6-8 t: sttcctttdttdwjdndtt\n5-9 k: ckkkkvdkvkk\n1-3 f: ffczfpgmf\n2-4 w: wwlwwd\n1-9 d: lddbhdddmtfdmdzdrdhd\n16-17 h: xfqlbhhpbnclvztzzzx\n2-7 r: rrbntqrrsrkrm\n1-4 r: qwrr\n12-14 b: tvbbzjbbbbbbbn\n5-7 h: hhjvghth\n2-3 d: dndrcx\n8-9 c: ccccscccpc\n5-8 s: srcsszcsp\n13-15 g: gggggggglggggglggggg\n11-13 b: bbbbbfrbfbbgbb\n1-8 b: jbbkqbbbpbbbbbbp\n11-14 n: nnnnnnnnnnmnnnn\n1-4 g: qsggg\n14-15 l: sllslllggllljkdlm\n1-5 s: pvssbspdsshsssssrs\n7-10 c: ccccccmcpgcc\n6-14 m: bcfkpmvmcmmjml\n1-3 n: ncnnnnn\n12-14 j: bjfjxjjpjrjjjxjjk\n10-12 v: vfvvvvvvqjvvvwvwt\n6-13 d: stddxdnjrddhwgdhrfjf\n5-6 w: qcwhnwwk\n2-3 x: mcxfxckptzvw\n12-20 b: lvgvbxsxxlvbhfcxbtzr\n1-2 d: ddbdqd\n5-10 h: mhtnjvhhhs\n2-6 z: ztzzdxzzzqbvg\n2-7 t: ttjkqztr\n3-4 g: bgvggrxrhtlklfj\n4-5 q: qqqvq\n1-3 c: ccpc\n4-6 j: jjrdjj\n8-11 c: ncvshccccccsb\n" <> ...}
23```
24
25```elixir
26data =
27 puzzle_input
28 |> String.split("\n", trim: true)
29 |> Enum.map(fn input ->
30 [spec, pass] = String.split(input, ": ", parts: 2)
31 [range, char] = String.split(spec, " ", parts: 2)
32
33 [min, max] =
34 range
35 |> String.split("-", parts: 2)
36 |> Enum.map(&String.to_integer/1)
37
38 {min..max, char, pass}
39 end)
40```
41
42<!-- livebook:{"output":true} -->
43
44```
45[
46 {5..10, "b", "bhbjlkbbbbbbb"},
47 {3..4, "j", "hjvj"},
48 {8..9, "p", "pmljtsttp"},
49 {3..4, "t", "hvtttqhdjmmnbqwbgfs"},
50 {4..6, "m", "mblwtzmvmdjkkmmtsckm"},
51 {6..9, "f", "ffffftfff"},
52 {1..3, "g", "xggg"},
53 {3..10, "k", "rwkhttkxxdpnlkq"},
54 {3..11, "w", "wwmwwwwwwwww"},
55 {5..7, "f", "fffffffff"},
56 {1..4, "l", "lglllbc"},
57 {2..5, "n", "njnnn"},
58 {6..8, "t", "tcjtltttttdttjttbt"},
59 {10..20, "d", "djddddccdbdddddddndd"},
60 {2..5, "z", "gzppzhrhzdthnpcr"},
61 {13..14, "p", "plvppptppppzppbkpk"},
62 {11..13, "t", "jjtjvzfhsrtsmkdhj"},
63 {11..12, "r", "rtrdvrrxrrxrzr"},
64 {2..6, "x", "dxsvxgvk"},
65 {7..11, "x", "hcxxpvxrnmxckkq"},
66 {12..17, "s", "sssssssssssrssssss"},
67 {2..4, "v", "vvpvvvjvvjvvqbvv"},
68 {15..18, "h", "thqhhhgjjqhhnhhznz"},
69 {8..11, "j", "jbmgbtmjtbb"},
70 {2..4, "d", "xxdfvp"},
71 {2..7, "p", "fftlppz"},
72 {9..13, "d", "dfddddddsdddds"},
73 {5..7, "d", "ddddddz"},
74 {2..3, "h", "hfbhhh"},
75 {1..4, "k", "rmkvkkkk"},
76 {16..17, "w", "wwwhwwwwwwwwwwwwq"},
77 {5..8, "l", "gllxllnlqlglrplk"},
78 {1..7, "p", "mhnpspp"},
79 {5..13, "f", "qhwffbtfzmdffztfjs"},
80 {2..8, "f", "fkjhvcbflbwhggtbbcb"},
81 {2..3, "m", "bcmldxmdh"},
82 {6..7, "p", "ppcpppw"},
83 {3..10, "m", "mmmmmmmmmj"},
84 {4..12, "s", "ssjssssssssmsss"},
85 {2..5, "j", "rmjnjtjjjj"},
86 {2..3, "q", "qqdqq"},
87 {10..15, "v", "vvvvvvvvvvvvvvdvvvvv"},
88 {1..4, "w", "wwwc"},
89 {4..14, "m", "mmsmmmvmmmmmqqmmmmm"},
90 {7..10, "d", "ddcdddzdddddd"},
91 {4..5, "h", "hhhhh"},
92 {9..17, "p", "ppppppppqppppppppp"},
93 {6..7, "m", ...},
94 {4..5, ...},
95 {...},
96 ...
97]
98```
99
100## Part 1
101
102```elixir
103Enum.count(data, fn {range, <<char>>, pass} ->
104 count = for <<^char <- pass>>, reduce: 0, do: (n -> n + 1)
105
106 count in range
107end)
108```
109
110<!-- livebook:{"output":true} -->
111
112```
113439
114```
115
116## Part 2
117
118```elixir
119Enum.count(data, fn {a..b//1, char, pass} ->
120 char_1 = binary_part(pass, a - 1, 1)
121 char_2 = binary_part(pass, b - 1, 1)
122
123 char_1 != char_2 and char in [char_1, char_2]
124end)
125```
126
127<!-- livebook:{"output":true} -->
128
129```
130584
131```
132
133<!-- livebook:{"offset":7223,"stamp":{"token":"XCP.hfrcfr0pT-nj7-j4nWaJo4YFPkw0SkyS5kkbU0031loYsccpQ9B5PfrwwU0eiuPMlC2H5sN-qI3EDIk0RJZEkgYu4EvABNl_2k4g0_4hLnQxFsTtp8-IrIUPuzEQJLdGAJ4","version":2}} -->