this repo has no description
at master 7.4 kB view raw
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}} -->