this repo has no description
at master 7.6 kB view raw
1<!-- livebook:{"persist_outputs":true} --> 2 3# Day 03 4 5```elixir 6Mix.install([ 7 {:kino_aoc, git: "https://github.com/ljgago/kino_aoc"} 8]) 9``` 10 11<!-- livebook:{"output":true} --> 12 13``` 14:ok 15``` 16 17## Setup 18 19<!-- livebook:{"attrs":{"day":"3","session_secret":"ADVENT_OF_CODE_SESSION","variable":"puzzle_input","year":"2022"},"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 20 21```elixir 22{:ok, puzzle_input} = 23 KinoAOC.download_puzzle("2022", "3", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) 24``` 25 26<!-- livebook:{"output":true} --> 27 28``` 29{:ok, 30 "gfWpjRRQffQGCHHJsGqjsj\nSclzJZZvmmnPbJtVSqqNBqVCBdSCsd\ntlbvZJDZtmtPcJmlPnhMFQWWpMRFTfLDRRTWRp\nHjMPgSWjVrjgbHRRSSMRgjRdpdbGdlcdCvQfcCdlwQJfdf\nLNDnhtNtLNFFZDtFnhzvdldDflvvDCdlJfldpJ\nZFLFZZmFtFtTNTSPRrVPWWMpRP\nqLBSBLRwmgzqCbzCffDlrfCV\nTFFFHNWFMFFMpHpGHMTHGNhrldWZCsdZsslZlZfrflDVss\nPTMcPGntTThHhTGctnMvSwjjvmmqLBmnjqqgCR\nnClJtMwwntqVVPJcgZqq\nmjpsDcrcSSFFPZqFBWWgVP\nvQcjsvhrvvrmhbmNHMNnlHbNMtCtNM\nbgvvhnTQtjrrrhsDDf\npLSMltLzLLSjFrSSjrSJHD\nzNWRLBdZPllPQtCvttgCqb\nDRlDrrFTNDNlgzsGTBfcnqhhcnJfcrCSqc\nMMmmdWtdLmvtldHjMmQfPBqSJWnfCCCqcWSSPJ\nvjHMjLmjpLtHptQLmHvwTRgNVVpTzZFZgZRlsVTN\nrzpMpDCGFCFFjRFsRPFRNFPv\nfWclbHCHtSmfvjnmfsvZ\nwTcTlSwwtQtWclBQBLGMLMCLVzVLwJGqLd\nMQSjLNjPPLLSBPjfQhSPHjDVCjDtVVpDHwbwVpbD\nRcmWzsRrzZrmTszWRqWlmRJscbtHwCbndCtcDVddDpdnVnbt\nJTsrGGTqmwTlWmTzJzWmhhPLLGgPFgBffSSPhFFM\nqMMRNZMDDNWLPqfzCgDcGncVDCgG\nwwBFhwhhBgmcVzhghG\ntbJbjjtJvwtdtwjpFtlbvtdTLNSMqNqMMgqNHPlZRTNggL\nqmjMHsZmZSbjbZMjSLFFFFwgsgvFswpwww\nhRJBhmnhhvFFwhcv\nllfWDWzrzBNTRfNBrWzzTmZbGTMjPqMmZPjVbSZGSP\nCRRPLwwcclcGVppQ\nSHFjDjjHDTfSDNTTHfSHjQVGrpmllQQWltVVVZGp\nHFlqzDTfqlzwbgPJLwCP\nWRCNLphpLppSCWVHNfLRzVnQMnBnMddPMQDFQgrhPQFM\njTjJqvqjvPVJFJFBJF\nqTsZbvGqqZlstsmZVljtwqwSHHNWczHSSRcWNSRHzzNfbW\nglgzDzHjSrVHcVgbrjmNsscNGmNWssGNNtst\nhHPQLHJpwdLpdHfQQtnZmNMwnZGZWwsFZM\nQpdhPJRTJfPphJfhCBlVqVvgvVDBbvVqDbHD\nVtHzjZpjVtHrprgGmjHsGHNdSJFQRcLJqCdQcSqJNpcq\nbBWfTPwhbfDlMnhffRwQJQNdqJcLFQLSdR\nbhBhvfMWTnlDnTBfPSmvmjsjmmGtzHtsHm\npcRPRPWrSDcJGZSStmwZZS\nVnLfCfTlfVzfnMMBCqVNZJdtjNtJjhJdGNNbwT\nBLvqCCMVsnRQsPQgDcZH\ncQbqqQhDGhlQfQlhQrqGsTNgLgCpRgLTPPPLNbpg\nwtHVddVFwSHznZwwznCpRBdjppNBNTTdCjRR\nZtWFwWtSmvVnwZDrCMGfQlDDJQmD\nPzPZGCZzrZrlhdjdCqfCsqQdRD\ncbvZLVVFvbbNSNFHSDnsDQdnfqNQDRngsR\nFJHSLSFSScJJbWHFmFVFSZmrrzBmhtBwmzBMPMPzPh\nnlpFcLBgcVcLbssGVBGGrlpGPhJJJJJqPBZPDNMQMJJhJQZZ\nSSTjHzfHwtZSPVQVQMRQ\nTzVHwWfTtzwdVzsbFnGgsbdcGrLc\nFppVBRVZDdLmrDGmmfrQ\nNtNMPNshJCzznLGJSrqRrRrr\ntRssthhPlCWhPzsWtzhzCbVVjwTpVwdZZTpwjbdBbwBc\nTTWblHWScvPCCHTWFzSrqqsNNSmdmqrrpz\nRLRwjjnjZNprzmmZcq\nQQgtQnccQDGjgLDRRcLthQhFBvCbMtMHTWlBFllBbFCMTW\nWnBVNvDnVsNvZWdrWDLVDMbsHpTjpHCSSClsbSCCMH\nGPFtmztzgPhRFtJTdbTwjppSCjpgSl\nhJcfPtQhdtWNVZqNnqNQ\nGLcqZPPsnqQcFsmBBrqRvrddNqrC\nMtHthJwLllwvjRvvtrvBRS\nVHMfDLbpfznszZQG\nWBSdPlQPRfBtGQPfBGPBJgzgjwsJzsszJwCrdwCT\nZpppVpMVpnVHMVVbZRJrCgwRzTJrwNJw\nMvhmnpLqLmhVmBlftRQBFSlR\nhhQlSJqhtCSnqZJnqShSlNDwRzpvdwRlMBMMdcjRjMpMRc\nfrrGmLmWbfFrsmFHmBzBvBcwdJbvpjzbMM\nmmgFrVGLWJLFGsgfhSVtVPqntqnnSStN\nSFJTJTSqswwFQbwf\ncDtcWPclrtPwVsfssQmN\nHDtwWCgWdggdzSGJMSzGMq\nJpqJtWRJMhCMJpMQCWtFrjgHdgdlgllwNjlQjldH\nfBzPZcZvnBmDnZvZBZDmPvglVVVdgHHSwrNRgVgwNPRH\nGbZnZccfvcsZmccsmnnZTRbCCMWFTWJqFCCMJFRT\nvrrFqrFTBTmLmNrLMqMTHddJbHpWnhdWdWbHhJGM\nwBzfwzcQSzWSSshpdWGp\ngwjPPPDQtzQlzQDPqTgLBRmRqZBvqFNR\nbWVptFFsbPcZsGLhsZGmLB\nqnWrnrHdMCDCNqfWmvRRZSSRLdRGZGRG\nnNqqNDfMrMWHDQNHzWfHNDnwzblpzFlbwtFbVVlwVcPJpP\nBHJhlHdJQggvddglJBBhglhQzZHPZpFFPDMzFDDRDFZZDFZD\nrSTfqnCffMfCVfCLNqbzbjWNDbbWDPFpPFbP\nnfnnrSfCTVSwrqSLCGfTGlgQhlvsGMJQJBhhssJhGc\ntBjjDjjqfDjLfJlrLgglvmrlmrcc\nTwNNTVhwwpgvGSNNSssS\nTbwhnvvChhbVRTPPRJBJQQfJttMQQJCQfW\nmWSvSQVgmWQsQvspQJlrlLnJLLpCClhhlp\nbFHRjZdNjjBZzFzhtnCllCcJLrCBll\nHFFNHbdZZLZjfPFjHVQmWDDVsvsmTqVqDf\nJJPllQQClqgBCgdHwHbpjVTwHd\ntmGZtjGjHZpVbfMT\nShGjNGWmDSNcNRtGmshDRzzCvzQJJRBLrvlrBPJv\ncTpqsTWqVVpsNLfvCDFlMFDVFL\nJnndJPddQgzHlvMJFDhLCG\nBjtntgdRnQgzjdBRQBlpNWrTTlNTSwNpWS\nqHmqLVLjmVqsDBLtmjmbtPwCTwwPzGWRgGwGwMwW\nZhcCNCSprRTWTwSnWW\nhflhZvvQhppZfcNpvrhpQHjVjLmbVmmVHVCFDvqVFb\nnnNrwDnZrspwDNnZsNSDsNbCmpjvMTPQjLMmPmmQPGBTQP\nFdVtRdRfctBQPmTtTLQB\nqhzWVWJqVHwbhlLSsS\nhtWmhDhFztnztDhtBmBtghPRSrpfjVwPdfPwpwnRSVrr\ncbCHvgJGcTqbqcbqqqcqsMsRVrSCwffdRPPpVpwCRSwfjj\nGlgGQqTqbgQzttmBNNFz\nNWQNQgdTgjQNddTZfrCQWRDnnnbqnLqnRcjJlqqvDj\nFtSSmSmJhpllcclDvpln\nJBVVSsSFBVBttShFGSPQfCGNdrMfZZTQTZNNdC\nHgHthMhphcbfbMMfHhsGGDCRRVlcVSScsCRz\nnWvPFqLqPNdjnNLnjdJnPdWjGlssDPSsllVCRzlTCTGlSDzS\nRvddJRJQHwQwpZZb\ngdZwgpjZZQtHTdrWrwdpWRnlhNBRlLbFthNhflhBnL\nCVzDCPGMVqVmGsGGbJCmCDvMcRcqnBFFFnRBBNRBBNqhnFfF\nDsmSGsGPzvMGJvdbgTSTbjbSSdgH\njBGmbNBQGdBNNDJNQRLLVDsHtDRzHHZZcH\nwCWPFWPCrPhPrplvprhwpCHHtszttqZslRVHLtzVlJZL\nvprMMvMnJCwnnPShNGSTfGSfNmmgdNff\nbPtLbvVWWztbLSVVnbszpzQsrcDDBdpRcDrs\nllZmgCZqgCFgmdRdJcscBdJsmQ\nFZlgfqCFfgZHlqCMCglwCFGWntLLSMRSPGPVttWRtVGL\nvtnDsDtrnrSvrMVmbrrJg" <> ...} 31``` 32 33```elixir 34rucksacks = 35 puzzle_input 36 |> String.split("\n", trim: true) 37``` 38 39<!-- livebook:{"output":true} --> 40 41``` 42["gfWpjRRQffQGCHHJsGqjsj", "SclzJZZvmmnPbJtVSqqNBqVCBdSCsd", 43 "tlbvZJDZtmtPcJmlPnhMFQWWpMRFTfLDRRTWRp", "HjMPgSWjVrjgbHRRSSMRgjRdpdbGdlcdCvQfcCdlwQJfdf", 44 "LNDnhtNtLNFFZDtFnhzvdldDflvvDCdlJfldpJ", "ZFLFZZmFtFtTNTSPRrVPWWMpRP", "qLBSBLRwmgzqCbzCffDlrfCV", 45 "TFFFHNWFMFFMpHpGHMTHGNhrldWZCsdZsslZlZfrflDVss", "PTMcPGntTThHhTGctnMvSwjjvmmqLBmnjqqgCR", 46 "nClJtMwwntqVVPJcgZqq", "mjpsDcrcSSFFPZqFBWWgVP", "vQcjsvhrvvrmhbmNHMNnlHbNMtCtNM", 47 "bgvvhnTQtjrrrhsDDf", "pLSMltLzLLSjFrSSjrSJHD", "zNWRLBdZPllPQtCvttgCqb", 48 "DRlDrrFTNDNlgzsGTBfcnqhhcnJfcrCSqc", "MMmmdWtdLmvtldHjMmQfPBqSJWnfCCCqcWSSPJ", 49 "vjHMjLmjpLtHptQLmHvwTRgNVVpTzZFZgZRlsVTN", "rzpMpDCGFCFFjRFsRPFRNFPv", "fWclbHCHtSmfvjnmfsvZ", 50 "wTcTlSwwtQtWclBQBLGMLMCLVzVLwJGqLd", "MQSjLNjPPLLSBPjfQhSPHjDVCjDtVVpDHwbwVpbD", 51 "RcmWzsRrzZrmTszWRqWlmRJscbtHwCbndCtcDVddDpdnVnbt", "JTsrGGTqmwTlWmTzJzWmhhPLLGgPFgBffSSPhFFM", 52 "qMMRNZMDDNWLPqfzCgDcGncVDCgG", "wwBFhwhhBgmcVzhghG", 53 "tbJbjjtJvwtdtwjpFtlbvtdTLNSMqNqMMgqNHPlZRTNggL", "qmjMHsZmZSbjbZMjSLFFFFwgsgvFswpwww", 54 "hRJBhmnhhvFFwhcv", "llfWDWzrzBNTRfNBrWzzTmZbGTMjPqMmZPjVbSZGSP", "CRRPLwwcclcGVppQ", 55 "SHFjDjjHDTfSDNTTHfSHjQVGrpmllQQWltVVVZGp", "HFlqzDTfqlzwbgPJLwCP", 56 "WRCNLphpLppSCWVHNfLRzVnQMnBnMddPMQDFQgrhPQFM", "jTjJqvqjvPVJFJFBJF", 57 "qTsZbvGqqZlstsmZVljtwqwSHHNWczHSSRcWNSRHzzNfbW", "glgzDzHjSrVHcVgbrjmNsscNGmNWssGNNtst", 58 "hHPQLHJpwdLpdHfQQtnZmNMwnZGZWwsFZM", "QpdhPJRTJfPphJfhCBlVqVvgvVDBbvVqDbHD", 59 "VtHzjZpjVtHrprgGmjHsGHNdSJFQRcLJqCdQcSqJNpcq", "bBWfTPwhbfDlMnhffRwQJQNdqJcLFQLSdR", 60 "bhBhvfMWTnlDnTBfPSmvmjsjmmGtzHtsHm", "pcRPRPWrSDcJGZSStmwZZS", 61 "VnLfCfTlfVzfnMMBCqVNZJdtjNtJjhJdGNNbwT", "BLvqCCMVsnRQsPQgDcZH", 62 "cQbqqQhDGhlQfQlhQrqGsTNgLgCpRgLTPPPLNbpg", "wtHVddVFwSHznZwwznCpRBdjppNBNTTdCjRR", 63 "ZtWFwWtSmvVnwZDrCMGfQlDDJQmD", "PzPZGCZzrZrlhdjdCqfCsqQdRD", "cbvZLVVFvbbNSNFHSDnsDQdnfqNQDRngsR", 64 ...] 65``` 66 67```elixir 68defmodule Day03 do 69 def count(list) do 70 list 71 |> Enum.map(fn sets -> 72 sets 73 |> Enum.reduce(&MapSet.intersection/2) 74 |> Enum.at(0) 75 end) 76 |> Enum.map(fn 77 c when c in ?a..?z -> c - ?a + 1 78 c when c in ?A..?Z -> c - ?A + 27 79 end) 80 |> Enum.sum() 81 end 82end 83``` 84 85<!-- livebook:{"output":true} --> 86 87``` 88{:module, Day03, <<70, 79, 82, 49, 0, 0, 9, ...>>, {:count, 1}} 89``` 90 91## Task 1 92 93```elixir 94rucksacks 95|> Enum.map(fn rucksacks_pair -> 96 size = byte_size(rucksacks_pair) 97 half = div(size, 2) 98 99 {b1, b2} = String.split_at(rucksacks_pair, half) 100 101 [MapSet.new(to_charlist(b1)), MapSet.new(to_charlist(b2))] 102end) 103|> Day03.count() 104``` 105 106<!-- livebook:{"output":true} --> 107 108``` 1097845 110``` 111 112## Task 2 113 114```elixir 115rucksacks 116|> Enum.map(&MapSet.new(to_charlist(&1))) 117|> Enum.chunk_every(3) 118|> Day03.count() 119``` 120 121<!-- livebook:{"output":true} --> 122 123``` 1242790 125```