Skip to content

Instantly share code, notes, and snippets.

@roman01la

roman01la/day8.clj

Created Dec 9, 2019
Embed
What would you like to do?
AoC 2019, Day 8
(def input
(->> (.trim (slurp "input_2019_8"))
(map #(Character/digit ^char % 10))))
(def image-width 25)
(def image-height 6)
(def pixels (* image-width image-height))
(defn solve-day8-p1 [input]
(->> input
(partition pixels)
(map frequencies)
(sort-by #(get % 0) <)
(map #(* (get % 1) (get % 2)))
first))
(defn merge-pixels [pixels]
(reduce
#(case %2
2 %1
1 (reduced 1)
0 (reduced 0))
2
pixels))
(defn merge-layers [input]
(let [layers (partition pixels input)]
(->> (apply interleave layers)
(partition (count layers))
(map merge-pixels))))
(defn solve-day8-p2 [input]
(->> (partition image-width (merge-layers input))
(map clojure.string/join)
(clojure.string/join "\n")))
(comment
(= 1452 (solve-day8-p1 input))
(= (solve-day8-p2 input)
'((1 1 1 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0)
(1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0)
(1 0 0 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0)
(1 1 1 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0)
(1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0)
(1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0))))
222222222222222222221202222222222122222220222222222222222222222222220020220211022202212200200222202022222202222222222222122221220220212222222222222222222222222222222222222202222222222222222220222222222222222222222222221020220201022202212211220222212022222212222222222222122222220221212222222222222222222222222222222222220202222222222022222221222222222221222222222222222220220200122212212221202222222022222222222222222222022221221221202222222222222222222222222222222222221202222222222122222222202222222221222222222222220220222200222222212222200222222022222212222222222222022222220221222222222222222222221222222222222222221202222222222122222220210222222222222222222222221122221220122212212200212222212022222222222222222222222222022222202222222222222222221222222222222222222222222222222122222222211222222222222222222222222121220221122212202222220222202022222202222222222222222220221222212222222222222222222222222222222222222222222222222122222222202222222221222222222222221120222222222222202212222222202222222202222222222222022220220220222222222222222122222221222222222222222202222222222022222220211222222222222222222222221020221212222222222220200222212022222212222222222222022220022220202222222222222222222220222222222221220222222222222222222220221222222220222222222222222121222202122222212202200222222222222202222222222222022222122221202222222222222122221222222222222222220212222222222222222222210222222222222222222222222121221222022212201222202222202122222222222222222222022222022222212222222222222222222222222222222222220222222222222022222221210222222222222222222222220220221200022202200222202222222022222202222222222222122220021222212222222222222122222222222222222220220222222222222222222222222222222220222222222222221022221220022222221221211222212022222222222222222222122220021221222222222222221022221222222222222220221212222222222122222222220222222222222222222222221220221212022222201201202222222222222212222222222222222222021222202222222222220222221220222222222222221202222222222222222221201222202222222122222222220121220211022222210202221222222222222212222222222222022220022220202222222222221222220220222222222220220222222222222022222222212222212221222022222222222120221222122222201200220222212012222202222222222222222220121210222222222222222222221222222222222222221202222222222222222221212222202222222222222222222221222201222212222210222222202212222202222222222222122221220220212222222222221222220220222222222220220222222222222122222220212222212220212222222222221121221222222202202200212222212102222202222222222222222220022211222222222222220022222222222222222221222222222222222122222220220222222220222022222222221222221210122212220220201222202022222212222222222222022220221222212122222222222222222220222222222222221212022222222022222222202222222220212022222222221121222202222212211200202222202112222222222222222222022221122200222222222222220222220220222222222222220202022222222022222220210222212020222222222222220120221200222222200222201222202122222212222222222222022222221202212222222222220122221220222222222222221202122222222122222220212220212020212222222222222022220212222202202211202222222222222222222222222222022222021221212122222222220122221221222222222222221202122222222022222222222222212220202122222222221022220220222212222202211222222022222222222222222222222220221211212022222222221122220222222222222222222222022222222222222221202222212220202122222202220221220201022222221211200222212212222222222222212222122221221201202122222222222222220220222222222220221202022222222022222222220221212021222222222222222121221202022222211221221222212002202202222222202222220220201211202122222222222022221222222222222220220202122222222022222221210221212220202122222222220020220211222222222220200222222012202212222222202222121220221211222222222222221122221222222222222221221212022222222122222222211220222121202122222202222221221202122202222201212222222102222222222222222222121220022221202022222222220022220222222222222221221212022222222222222220202221202222202122222212221120221221122202202220201222222202222212222222212222122221101202212222222222221222220222222222222221222202022222222122222222220221212222212022222202222021220212122202200210202221202202222202221222202222020221020212212022222222221022221222222222222222221222022222222222222222212221202222202222222202220220222212122202211222220222222012002202220222222222021222110202212122222222221122220221222222222222122212022222222122222221210222222221202022222212221222220210222202200220212221212012212212221222222222020222121220012222222222220222220220222222222220121212222222222222222222202221212222222222222202221022221210122202220222221222202222112202222222202222220221220220222122222222222022222220222222222221122202122222200222222221200220222220222122222202221221220201022202222210202221222112122202222222222222120221210222002122222222220122220221222222222221022202222220222222222220220221202220212122222222222120222200222202212200221220202002122222221222202222222222000220202222222222221222221222222222222220220212022222222022222220201220212220212122222122221021222202022212202220222221222202112202222222212222122221200222112022222222220122222220222222222222021212222220222022222222202220212122202222222212220222221212222211202210200220202112212212220222212202120221002211102022221222221122221221222222222220020202022222202022222221222222202122202122222202221120220220122201210222202221202122102222121222202212120222122202112122220222221122220221222222222221120222022222220122222220201220212221222022220122220121222212222201221202201220212122022212221222222222122120111221102122220222220222222222222222222221121212222220222021222221220222202020202022220112221122220202222220201220222220022012122212020222202222020120112212222222220222221022221221222222202222021212122222201122222220222220222222212122221022222122221202122200200201202221112222102212120222212212020122000200022222221222220122222221222222212221222202222222112022222222200221212220222122220002222122220221002220220212202222002002112202121222222202120220002210112122222222220122221221222222212220122222222222022020222221002220212120212222220012220021222211102200202211212220122002002212122222222212221122100200002022221222220022221221222222202221121212022222101222222221220221202020212222222212221020220201102221220222201221002012102212121222222222020220202212222122221222221222220222222222202220022202022222010222222221112220202220222222201002221220221210022222211222220222122002022212021222222202221021002220212222222222221022222222222222222222220202222220202022222221020221202222202222222012220120222200012220200222210221102102122212220222202212020220111220012222221222222122220221222222202220221212022221201122222220202222222020202022220122220022222211202202222211220221002012022222220222212212120020002210202222221222222122222221222222222221121212022221011120222220121220202021202122222112220120221201012200222200222221202102022202121222212212120021120220112122222222221022221220222222212221222212222221100121222222102220222021222122212122221220222200002222200221202221202002022222021222222202022220121221112122221222202022221222222222222221122222022221120122222222010220222120222022211122221120222212222211211202211222012012022202022222202212022022110211102022221222212222222220222222212221022212122220012022222220210221212021202222201002220220220222122220221211202220122122122212020222202212021221212202122022221222212222210220222222222222122222222220021222222221211221202220222022201012221020222211012211210211200220212022212222222222212222122122211200202122221222202022212220222222222222221222122221012021222221101221202021202222222112221020220210002221221222201220002122202222220222212222122120100200222222220222200122202222222222212220222202222221212121222222000220212020202222221102222020220200022220202222222221202222002202220222222212122222221211122022220222222222222220222222222220020222122222210222222220022220222022202022200002221121220201022222220221200222222012212212022222212212220020012201202022222222211022202221222222212220021202122220011021222221222220212120222222202022221020211202012202222200221222112012122202221222222202020020222222202022221222202022210221222222202210021202122220221021222221101220222121222122200122222221221210012202201222212222212002012210121222212222020022211220212122221222210222200221222222212202222222022222210020222221100221212021202022202022220122222210002222210211201220022122112212121222212212121220110221212222220222202122210222222222222211020202122220121122222220121121222121212122211012221020200201122212220220220222012212122221122222002222120021012212212022220222221222210222222222222212122202222220210122022222022220222221202122211012221020220212102222202222212220002012122201022222022212020121022222222222020222211222210220222222202212221202022221201220222220222020212221202022202112222222220201222221212200211220202212112201021222202202122220101202212122222222222022202220222222202202220222222221212122022222012122212021212222210212221120201210112200222221222221002102002210120222022202220220112222212222221222211122200220222222222211220212022220210020122222012221202021222122210112221120222220002201211211201222212202102221021222012212222222201221002022221222201222212222222022222222122222122022021020122220021120222120222222222002221120212221112210211211202222222002112212120222112222021120220222222122120222221022210220222022202201021222122120121122022222221222222020202222212202220121202211112222200221201221212122222211021222202222222222111220112022220222212222202220222122212210021202122222002220022220201022222021222022201002221221222222112201211220210222102222222222021222012212121222210201202022120222221220212221222122212210221202222122222222022222020221202021202122201012222020200222022221221212220220202122212221220222102222021222201200022122122222212022200221202022202202222212222120222222021220210122222222222022200002211120222221212222201222221222212222102210021222102222220122121202212122120222212221222220222022202200121222122222121122221221111221222220222122221222212220222100112212201220202221202202112201020222112202020220002220002222022222221020211220212122202210020202122121102022220222221122212022212222202122211222201210022202201211211222212002002221222222122212120221101222002022121221201121221220202122222212022202222222020022221222211121212121222222222012201220211120012210200121211220112122022221021222002202220021021201112222022221212122222220212122202222221222022020202221220222001122212020222222201222200121212001122211202001201221122212222200220222212222020120010222112122220221200020202220202112212222022212022221221020120221022221222220222220221112211222200110012200220001200220112200102221021222222212221220010200022122121222220220212220222012102221120212122020122122222220202221202021202221200212201021220002122210200012211220212010102220222222100222122000220212002222221222222122212220202112112211122222222020212220120221110020222222202220210022201021222201121200201200222221112110002212121222200202020111020201102122222222211220200220222022122210120202022022210021220220221220202220222020222212211020220101010200220210202222222211110222020222111202021021121220112122220222211222200222202022022211222222222220110022122222011120202220212021220012220221221211011211211022210220222012101222120222201222120212022221202122122221210022200220012102012211020202122121220120222221102120202122201022222002200222202112222022220120210220112022010221222022012202222102010222222122021221212121100222002212102222020222222022021122221221020120222202202221211002221122202112100112221221212220222011102200221122002222022020100221222022121222200122021220022112212200120202022021110122220222112022212021220120220012212020021221001201200222221222012100022201121022102222120222221211202022020222200021121221222222022202121212022022101121122222022120202122211020202102200121011201101101220112210221002012010200120122002212021102001200210222121220202020220221112221202201020202222221212120220220102021202000210122201012212022112200002102202022210222022110202201022222212202020020001200022122222220212220110220222011122222122012022122010120022220220021222200212220200012220221201220102202202012201221202122212221121122210202020222022210021022122222212022112221222012012201021212122220112122221221011120222202220221200022201022120222001222200211200222202002120201122022000202020111112202010122222220022221202221012001222220020112022020022122221220000122202000222020211022221222112011220022212200212222102222212200201122122222120111110200020022122221111121102221102111012220122112222021121001220020201020212002221221200002210120120002102121200000221222012020010212011122001212220100122222210122120221120222022220002202112211122002222220222120221122110222102021200021200002210222022022000122212012212222122021102220121222010222021100012211111122221220201220220220122100012220120212022121101011221122120221212202200110221022210222112121121210222112201220112021210221122122201212121201120220000022002220122220001220012110012200121102122020122101221122010020022100211121201101220220012121210001200010200221222120000202120222100212220002011202221022110221000221110221012210122202222012222121121000120112120021102201202000220210211221202200001010220000220221012201111200011202102212022201202201122022121222002020202220022102222222221102122222100212021010010022222021221220202210200122021122212022220000201222022121000200010122110212122110200201001022000221222020211220001101212200122112022022201122221111220121122020201011111110211121212221221120210012210220222000100221200212111202022021112212121022101220001121211222220212202211121002122120012021020101110221112121212002012210210020020001001001222220220222022212001220022112210222222201022210210222120221011022110222202221022220222222022220101022122212200120222011210001222211200022122211121102212021210222002101200211012102221222020212222211011222201220010021110220022211002200221202122122202222022010111122102201221012211110212021011021012112222222220221112202002220210102101222120021010202001122100222012220101222122121222222020122222121000202121220000021002000202022101100202121222012111002200110202222122100010211010112022212222222101210100222112220010221112221112100202210020012222221012011121211012020022110210121100001221121222221222200210221212222202110000200221202220222020120122200200122122220111120020220122110002201120022222222212100022200221021012020211012110001221121112022022010202020222221222020212212202222122212020221120200110222002222221120001221112101022212020112122120121211001220012120122121211120211011210022022011211022221202200221122102012212122212212212121201011200010122202222111020002221010201222220120202222220210100102022211020202211211000211201220120020101101222222021222220202022112222210202100212022010221200100022120221212220000221121112022212121001022211122111121021221121001202222202101012220021222010120202210202211222112022010222100002000202221011112200011222110110011022212001101222100121200102110221210001100200101200210222022220112221102012121001011101001021100000121002021101222110221020101111120011201000211002201200
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.