├── README.md ├── day1 ├── default.nix ├── general.nix ├── input.nix └── part2.nix ├── day10 ├── input.nix ├── part1.nix └── part2.nix ├── day11 ├── input ├── input2 ├── part1.nix └── part2.nix ├── day12 ├── input ├── part1.nix └── part2.nix ├── day13 ├── input ├── input2 ├── part1.nix └── part2.nix ├── day2 ├── input ├── part1.nix ├── part1_2.nix └── part2.nix ├── day3 ├── input ├── part1.nix └── part2.nix ├── day4 ├── input ├── part1.nix └── part2.nix ├── day5 ├── input ├── part1.nix └── part2.nix ├── day6 ├── input ├── part1.nix └── part2.nix ├── day7 ├── input ├── part1.nix └── part2.nix ├── day8 ├── input ├── part1.nix └── part2.nix ├── day9 ├── input.nix ├── part1.nix └── part2.nix └── utils.nix /README.md: -------------------------------------------------------------------------------- 1 | # GitHub Advent of Code in Nix 2 | I decided I wanted to see how well [nix](https://nixos.org/nix) works as a general purpose programming language. 3 | 4 | This is because most people consider nix to be a DSL for packaging applications, but I want to prove people wrong as much as I can! 5 | -------------------------------------------------------------------------------- /day1/default.nix: -------------------------------------------------------------------------------- 1 | # use `nix eval -f ./default.nix output` to view output 2 | let 3 | inherit (builtins) elem elemAt filter length map toString toFile; 4 | input = import ./input.nix; 5 | negatives = map (x: 2020 - x) input; 6 | pair = filter (x: elem x negatives) input; 7 | output = elemAt pair 0 * elemAt pair 1; 8 | in 9 | { inherit output pair; } 10 | 11 | -------------------------------------------------------------------------------- /day1/general.nix: -------------------------------------------------------------------------------- 1 | { input ? import ./input.nix, elements ? 3}: 2 | let 3 | inherit (builtins) elem foldl' filter head map; 4 | inherit (import ../utils.nix) quickElem fix flatten sum product; 5 | potentials = fix (f: left: potential: 6 | let 7 | new = 8 | if potential == [] 9 | then map (x: [x]) input 10 | else flatten (map (x: map (y: x ++ [y]) input) potential); 11 | newPotential = filter (x: sum x <= 2020) new; 12 | in 13 | if left <= 0 then potential else f (left - 1) newPotential) elements []; 14 | goals = filter (x: sum x == 2020) potentials; 15 | output = product (head goals); 16 | in 17 | { inherit goals output potentials; } 18 | 19 | -------------------------------------------------------------------------------- /day1/input.nix: -------------------------------------------------------------------------------- 1 | [ 2 | 1946 3 | 1859 4 | 1654 5 | 1806 6 | 1648 7 | 1873 8 | 1216 9 | 1831 10 | 1610 11 | 1779 12 | 1626 13 | 1332 14 | 1713 15 | 1919 16 | 1353 17 | 1720 18 | 1818 19 | 1976 20 | 1993 21 | 1617 22 | 1678 23 | 1655 24 | 1725 25 | 1686 26 | 1737 27 | 1696 28 | 1046 29 | 1814 30 | 1909 31 | 1618 32 | 2006 33 | 1903 34 | 1528 35 | 1635 36 | 1457 37 | 1924 38 | 1734 39 | 1723 40 | 1735 41 | 1984 42 | 1846 43 | 1921 44 | 1587 45 | 2009 46 | 1607 47 | 1987 48 | 1910 49 | 1571 50 | 1898 51 | 1869 52 | 1537 53 | 1446 54 | 1535 55 | 1802 56 | 1847 57 | 1966 58 | 1944 59 | 1793 60 | 1383 61 | 1850 62 | 1274 63 | 347 64 | 1208 65 | 1748 66 | 1906 67 | 1771 68 | 1849 69 | 1773 70 | 1792 71 | 1705 72 | 1538 73 | 1564 74 | 2003 75 | 1994 76 | 1545 77 | 1704 78 | 1657 79 | 1483 80 | 1701 81 | 1724 82 | 1293 83 | 1834 84 | 1712 85 | 1950 86 | 1844 87 | 1290 88 | 1692 89 | 1820 90 | 1585 91 | 1986 92 | 1328 93 | 1841 94 | 1709 95 | 1232 96 | 1945 97 | 1684 98 | 1787 99 | 1991 100 | 1914 101 | 16 102 | 1977 103 | 1620 104 | 1825 105 | 1866 106 | 1615 107 | 1832 108 | 496 109 | 1932 110 | 1819 111 | 1559 112 | 1870 113 | 1677 114 | 1650 115 | 1594 116 | 1664 117 | 1600 118 | 1622 119 | 1862 120 | 1937 121 | 1624 122 | 1580 123 | 1931 124 | 1803 125 | 1839 126 | 1755 127 | 1952 128 | 1473 129 | 1694 130 | 1864 131 | 1178 132 | 1163 133 | 1790 134 | 393 135 | 1776 136 | 1871 137 | 1999 138 | 1923 139 | 1174 140 | 1557 141 | 1646 142 | 1200 143 | 1842 144 | 1432 145 | 1573 146 | 1913 147 | 1954 148 | 1599 149 | 1980 150 | 1948 151 | 1430 152 | 1298 153 | 1835 154 | 1643 155 | 1742 156 | 1609 157 | 1649 158 | 1382 159 | 1343 160 | 1263 161 | 1908 162 | 1703 163 | 1922 164 | 1764 165 | 1603 166 | 1330 167 | 588 168 | 954 169 | 1772 170 | 1553 171 | 975 172 | 1499 173 | 1552 174 | 1214 175 | 1829 176 | 1698 177 | 1797 178 | 1807 179 | 1961 180 | 1947 181 | 1845 182 | 1881 183 | 1821 184 | 1815 185 | 1623 186 | 1675 187 | 1478 188 | 1886 189 | 1951 190 | 1700 191 | 1890 192 | 1876 193 | 1781 194 | 1853 195 | 1983 196 | 1901 197 | 1939 198 | 1292 199 | 853 200 | 1879 201 | 1652 202 | ] 203 | -------------------------------------------------------------------------------- /day1/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? import ./input.nix }: 2 | # to run, use `nix eval -f ./part2.nix -I 'input=./input.nix' output` 3 | let 4 | inherit (builtins) elem head map filter tail; 5 | inherit (import ../utils.nix) flatten fix quickElem; 6 | sorted = builtins.sort builtins.lessThan input; 7 | allPairs = flatten (map (x: map (y: [x y]) sorted) sorted); 8 | positives = filter (quickElem (i: i 0 > i 1)) allPairs; 9 | positives2 = filter (quickElem (i: i 0 + i 1 < 2020)) allPairs; 10 | allTriplets = flatten (map (x: map (y: x ++ [y]) sorted) positives2); 11 | triplets = filter (quickElem (i: (i 0 + i 1 + i 2) == 2020)) allTriplets; 12 | output = quickElem (i: i 0 * i 1 * i 2) (head triplets); 13 | in 14 | { inherit allPairs triplets output; } 15 | 16 | -------------------------------------------------------------------------------- /day10/input.nix: -------------------------------------------------------------------------------- 1 | [ 2 | 105 3 | 124 4 | 42 5 | 52 6 | 71 7 | 41 8 | 1 9 | 85 10 | 148 11 | 90 12 | 155 13 | 112 14 | 35 15 | 134 16 | 145 17 | 39 18 | 161 19 | 160 20 | 34 21 | 54 22 | 15 23 | 165 24 | 8 25 | 20 26 | 46 27 | 49 28 | 108 29 | 151 30 | 60 31 | 7 32 | 48 33 | 154 34 | 63 35 | 147 36 | 132 37 | 98 38 | 158 39 | 33 40 | 137 41 | 45 42 | 140 43 | 121 44 | 22 45 | 62 46 | 111 47 | 141 48 | 167 49 | 131 50 | 74 51 | 93 52 | 2 53 | 142 54 | 113 55 | 21 56 | 162 57 | 61 58 | 3 59 | 19 60 | 101 61 | 9 62 | 102 63 | 115 64 | 70 65 | 12 66 | 84 67 | 6 68 | 114 69 | 107 70 | 97 71 | 133 72 | 64 73 | 80 74 | 78 75 | 91 76 | 79 77 | 14 78 | 168 79 | 87 80 | 159 81 | 30 82 | 94 83 | 77 84 | 40 85 | 125 86 | 47 87 | 27 88 | 38 89 | 166 90 | 86 91 | 26 92 | 23 93 | 67 94 | 127 95 | 28 96 | 16 97 | 169 98 | 13 99 | 92 100 | 106 101 | 57 102 | 118 103 | 126 104 | 83 105 | 146 106 | 29 107 | 130 108 | 53 109 | ] 110 | -------------------------------------------------------------------------------- /day10/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? import ./input.nix}: 2 | let 3 | inherit (builtins) length elemAt sort head tail; 4 | inherit (import ../utils.nix) fix max; 5 | sorted = [0] ++ (sort (a: b: a < b) input) ++ [(max input + 3)]; 6 | output = fix (f: oneCount: threeCount: input: let 7 | e0 = elemAt input 0; 8 | e1 = elemAt input 1; 9 | in 10 | if length input == 1 then oneCount * threeCount else 11 | if e1 - e0 == 1 then f (oneCount + 1) threeCount (tail input) else 12 | if e1 - e0 == 3 then f oneCount (threeCount + 1) (tail input) else 13 | f oneCount threeCount (tail input) # pretty sure this part doesn't happen 14 | ) 0 0 sorted; 15 | in 16 | { inherit sorted output; } 17 | -------------------------------------------------------------------------------- /day10/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? import ./input.nix }: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) sorted; 4 | inherit (import ../utils.nix) product fix max; 5 | inherit (builtins) head elemAt tail length filter toString; 6 | # the AoC input has number ranges of size 1-5, these all have a different amount of ways to be split up 7 | trib = fix (f: a: b: c: n: if n == 1 then c else f b c (a + b + c) (n - 1)) 0 0 1; 8 | ranges = fix (f: ranges: currentRange: input: let 9 | last = xs: elemAt xs (length xs - 1); 10 | comparator = last currentRange; 11 | e0 = head input; 12 | in 13 | if input == [] then ranges else 14 | if e0 - comparator == 1 then f ranges (currentRange ++ [e0]) (tail input) else 15 | f (ranges ++ [currentRange]) [e0] (tail input)) [] [0] (tail sorted); 16 | output = product (map (x: trib (length x)) ranges); 17 | in 18 | { inherit ranges output; } 19 | -------------------------------------------------------------------------------- /day11/input: -------------------------------------------------------------------------------- 1 | LLLLLLLLL.LLLLLLL.LLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLL.L.LLLLLL..L.LLLLL.LLLLLLLLLL.LLLLLLLLLLL 2 | LLLLLLLLL.LLLLLL..LLLLLLLLLL.LLLLL.LLLLLLLL.LLL.LL.LLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL 3 | LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LLLLLLL 4 | LLLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLL.LLLLLL.LLLL.LLL.LLLLLLLLL.LLLLLLL.LLLL.LLLLL.LLLLLLLLLLL 5 | L.LLLLLLL.LLLLLLL.LLLL.LL.LLLLLLL..LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLL 6 | LLLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLL.LLLLLL.LLL.LLLL.LLLLLLLLL.LLLLLLLLLLL.L.L.LLLLLLLLLLLLLL 7 | LLLL.LLLLLLLLLLLLLLLL.LL.LLLLLLLLL.LL..LL.LLLLLLLL..LLLLLL.L..LLL.LL.LLLLLLLLLL.LLLLLLLLLLL 8 | LLLLLLL.LLLLLLLLL.LLLL.LLLLL..LLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLL 9 | LLLLLLLLL.LLLLLLLL.LLL..LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLL 10 | .L.....L......L.L.L...L...LL..........L....L..LL.....L.L....L.....L......L.......L...L..L.L 11 | LLLLLL.LL.LLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLL 12 | LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLL.LLLLLLLLL.LLLLLLLLL.LLLLLL 13 | LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLL.LLLLLLLLLL.LLLLLLL.LLL 14 | LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LL.LL.LLLLLL.LLLLLLLLLLLL.L.LLL.L.LLLLLLLLLLL.LLLLLLLLLLLLLLLL 15 | LLLLLLLLL.LLLLLLL.LLLL.LLLLL.LLLLL.LLLLLLLLLLL.LLL..LLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLL 16 | LLLLLLLLL.LLLL.LLLLLLL.LLLLL.L.LLL.LLLLLL.LLLLLLLL.LLLLL.LLL.LLL.LLL.LLLLLLLLLL..LLL.LLLLLL 17 | LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL..LLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL 18 | ..LLL.....L...L.L....L.L.L.L.LL...L.LL.L..LLL......L.....L.L...L..LL.LL...LL..L....L....... 19 | LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLL..LLLLLLLLLL. 20 | LLLLLLLLL.LLLL.LLLLLLL..LLLLLL.LLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLL 21 | LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL 22 | LL.LLLLLL.LLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LL.LLLLL.L.LLLLLLLLLL.LLL 23 | LLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLL.LLLLLLLLLLL 24 | ......L...LL.L.LL.....LL...L.L.L..L.........L..LLL.L..L.L.LLL..L..L...L...L..L....L.LL.L... 25 | LLLLLLLLL.LLLLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL 26 | LLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLL.L.LLLLLL.LLLLLLLL.L.LLLLL.LLLLLLLLL.LLLLL.LLL..LLLLLLLLLLL 27 | .LLLLLLLL.LLLLLLL.LL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL..LLLLLL.LLL.L.LLL..LLLL.LL.LLL 28 | LLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL..LLLLL.LLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLL 29 | LLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.L.LLLLLLLLLLLL.L 30 | LLLLLLLLL.LLLLLLL.L.LL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL..LLLLL.LLLL.LLLLLLLLLLL 31 | LLLL.LLLL.L.LLLLL.LLLL.LLLLL.LLLLL.L.LLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLL 32 | LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LL.LLLLLLLLL.L.LLLLL.LLLLLL.LLLLLLLLLLLL.LL 33 | .LLLLLLLL.L.LLLLL..LLL.LLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLLLLL 34 | .LL...LL.L..LL.LL....L..LL....L..L..L......L.....LLL....L.LLL..L..LLLLL..L.......L.....L..L 35 | LLLLLLLLL.LLLLLLL..LLL.LL.L.LLLLLL.LLLLLL.L.LLLLLLL.LL.LLLLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLLLL 36 | L..LLLLLLLLLLLLLL.LLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLL.LLLLLLLLLLL 37 | LLLLLLLLL..LLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLL 38 | LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LLLLL.LLLLLL.LL.LLLL..LLLLLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLL.LLLL 39 | .LLLLLLLLLL.LLLLL.LLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLL.LLL.LLLLLLLLLLLLL.LLLLLLLL..LLLLLL 40 | LLLLLLLLLLLLLLLLL.LL.LLLLLLL.LLLLL.LLLLL..LLLLLLLLLLLLLL.LLL.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLL 41 | .....LL...L..L.LL........L.......L.LLLLL..L.LLL...L..L....L.L..L.....L.L.........L..L.L...L 42 | LLLLLLLLLLLLLLLLL.LLLL.LL.LL.LLLLL.LLLL.L.LLLLLLLL.LLLLLLL.L.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLL 43 | LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LL.LLLLLLLLLLLLLLLLLL.LLL.LLLLL.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLL 44 | LLLLLLLLL.LLLLLLLLLLLL.LL.LL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.L.LLLLL.LLLLLLLLLLLLLLLLLLLLLL 45 | LLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LL.LLLLL.L.LLLLL.LLLLLLLLLLL.LLLL 46 | LLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL.L.LLLLLLLLLLL 47 | LLLLLLLLL.LLLLLLL.LLLL..LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLL.L 48 | LLLL.LLLL.LL.LLLL.LLLL.LLLLL.LLLLL.LLLLLLLLLLLL.LL.LLLLLLLLL.LLLLLLL.LL.LLLLLL.LLLLLLLLLLLL 49 | LLLLLLLLL.LLL.LLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLL.L.LLLLLLLLLL.LLLLLLLLLLL 50 | L.L.L.L..LLLL.....LL.LL...L......LL..LLL.L.L.LL.LL....L.L....L..LL.L.......LLLLLLL.L....LL. 51 | LLLLLLLLL.LLLLLLLL.LLL.LLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLL 52 | LLLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLL.LL.LLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL 53 | L.LLLLLLLLLLLLLLL..LLLL.LLLLLLL..L.LLLLLL.LLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLL 54 | LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLL.LLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 55 | LLLLLLLLL.L.LLLLL.LLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL 56 | LLLLLLLLLLLLLLLLL.LLLL.LLLLL.LL.LL.LLLLLLLLLLLLLLL.LLL.LL.LLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL 57 | LLLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL..LLLLL.LLLLLLLLLLLLLLLL 58 | LLLLLLLLLLLLLLLLL..LLL..LLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLL..LL.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLL 59 | ...LL........L..L......L.LL.....L........L.L.L.L.L.L....L.L...L......LL.......L..L..LL.L... 60 | LLLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLL 61 | LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLL.LLLLL.LLLLLLL.LLLLLLLLLL.LLLLLLLLLLL 62 | LLLLLLLLL.LLLLLLL..LLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLL.LLLLLLLLL.LLLL.LLLLLLLLLLL 63 | LLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLLLL 64 | LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLL.L.LLLLL.LLLL.LLLLLLLLLLL 65 | LL.......L...LLL.....L...L........L...LL....L....L.L...L..LL.LL...LL.L.LL...L......LLL.LLL. 66 | LLLL.L.LL.LLLLLLL.LLLL.LLLLLLLLL.L.LLLLLLLLLLLLLLL.LLLL.LLLL.LLLLLLL.LLLLL.LLL..LLLLLLL.LLL 67 | LLLLLLLLL.LLLLLLL.LLLL.LLLLL.LLLLL.LLLLLL.LLLLLL.L.L.LLLLLLLLLL.LLLLLL.LLL.LLLLLLLLLLLLLLLL 68 | LLLLLLLLL.LLLLLLL.LLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLL.LLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLL 69 | LLLLLLLLL.LLLLLLL.LLLL.LLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLL 70 | LLLLLLLLL.LLLLLLLLLL.L.LLLLL..LLLL.LLLLLL.LLLLLLL..LLLLLL.LLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL 71 | L..L.LLLL.LLL..L...LLL.LL.LLL...L.L.......L.L.....L...LL.LL..L.LL..LL....L......LLLL....... 72 | L..LLLLL.LLLLLLLL.L.LLLLL.LL.LLLLL.LLLLLL.LLLLLLLL..LLLLLLLLLLLLL.LL.LLLLL.LLLLLLLL..LLLLLL 73 | LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL 74 | LLLLLLLLL.L.LLLLL.LLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLL.L.LL.L.LLLLLLLLLLL 75 | LLLLLLLLL.LLLLLLL.LLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLL. 76 | LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLL.LLL.LLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLL..LLL.LLLLLLLLLLL 77 | LLLLLLLLL.LLLLLL..LLLL.LLLLL.LLLLL.LLLL.L.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLL..LLL 78 | LLLLLLL.L.L.LLLLLLLL.LLLLLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.L..L.LLLLLLL.LLL 79 | LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLL.LL..LLLLLLLLLLLLLL.LLLLLLLLLLLLL..LLLLLL.LLLLLLLL 80 | ......L...L..L..L.....LLL.L.L..L..LL..............L....L.LL.......L..L....L..........LLL... 81 | LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.L.LL.LLLL..LLLLLLLLL. 82 | LLLLLLLLL.LLLL.LL..LLL.LLLLL..LLLLL.LLLLLLLL.LLL.L.LLLLLLLLLLLLL.LLL.LLLLL.LLLL.LLLLLLLLLLL 83 | LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLL.LLLL.LL.LLLLLLLLLLLLLLL.LLLL.LLLL.LLLLL.LLLL.LLLLLLLLLLL 84 | LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLL.LLLLLLL.LLLLLLLLLLL 85 | LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.L.LLLLLLLLLL.LLLLLLLLLL.L.LLLL.LLLL.LLLLLL 86 | LLLLLLLLL..LLLLLL.LLLL.LLLLL.LLLLLLLLLLL..LLLLLLLLLLLLLLLLLL.LLLLLLL.LL.LL.LLLLLLLLLLLLLLLL 87 | LLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL..LLL.LLLLLLLLLLL 88 | LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLL 89 | LLLLLLLLL.LLLLLLL.LLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLL..LLLLL.L.LLLLL.LLLLLLLLLLLLLLLL 90 | LLLLLLLLLLLLLLLLL.LLLL.LLLLL.LLL.L.LLLLLL.LLLLLLLL...LLLLLLLLLLLLLLL.LLLLL.LLL..LLLL.LLLLLL 91 | -------------------------------------------------------------------------------- /day11/input2: -------------------------------------------------------------------------------- 1 | L.LL.LL.LL 2 | LLLLLLL.LL 3 | L.L.L..L.. 4 | LLLL.LL.LL 5 | L.LL.LL.LL 6 | L.LLLLL.LL 7 | ..L.L..... 8 | LLLLLLLLLL 9 | L.LLLLLL.L 10 | L.LLLLL.LL 11 | -------------------------------------------------------------------------------- /day11/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input, seats ? 4 }: 2 | let 3 | inherit (builtins) concatStringsSep foldl' genList elemAt length head tail filter; 4 | inherit (import ../utils.nix) simpleSplit fix charList take drop sum; 5 | shiftUp = xs: tail xs ++ [(genList (_: 0) (length (head xs)))]; 6 | shiftDown = xs: [(genList (_: 0) (length (head xs)))] ++ take (length xs - 1) xs; 7 | shiftLeft = map (x: tail x ++ [0]); 8 | shiftRight = map (x: [0] ++ take (length x - 1) x); 9 | zipWith = f: xs: ys: let 10 | x = head xs; 11 | y = head ys; 12 | in if xs == [] then [] else 13 | if ys == [] then [] else 14 | [(f x y)] ++ zipWith f (tail xs) (tail ys); 15 | lines = simpleSplit "\n" input; 16 | chars = map charList lines; 17 | charsToInts = map (map (x: {"#" = 1; "L" = 0; "." = -1;}.${x})); 18 | intsToChars = map (map (x: elemAt ["." "L" "#"] (x + 1))); 19 | neighbours = xs: let 20 | up = shiftUp xs; 21 | down = shiftDown xs; 22 | left = shiftLeft xs; 23 | right = shiftRight xs; 24 | upleft = shiftLeft up; 25 | downleft = shiftLeft down; 26 | upright = shiftRight up; 27 | downright = shiftRight down; 28 | combineSingleList = zipWith (x: y: let 29 | newX = if x == -1 then 0 else x; 30 | newY = if y == -1 then 0 else y; 31 | in newX + newY); 32 | combineListList = zipWith combineSingleList; 33 | in foldl' combineListList up [ down left right upleft downleft upright downright ]; 34 | finalChairs = intsToChars (fix (f: chairs: let 35 | chairsNeighbours = neighbours chairs; 36 | coords = x: y: l: elemAt (elemAt l y) x; 37 | rangeY = genList (x: x) (length chairs); 38 | range = map (y: genList (x : [x y]) (length (head chairs))) rangeY; 39 | updated = map (map (pair: let 40 | e0 = elemAt pair 0; 41 | e1 = elemAt pair 1; 42 | coord = coords e0 e1; 43 | in if (coord chairs) == -1 then -1 else 44 | if (coord chairsNeighbours) == 0 && (coord chairs == 0) then 1 else 45 | if (coord chairsNeighbours) >= seats && (coord chairs == 1) then 0 else 46 | coord chairs)) range; 47 | in if updated == chairs then chairs else f updated) (charsToInts chars)); 48 | chairsNeighbours = neighbours chars; 49 | finalChairString = concatStringsSep "\n" (map (concatStringsSep "") finalChairs); 50 | output = sum (map (xs: length (filter (x: x == "#") xs)) finalChairs); 51 | in 52 | { inherit chars finalChairs chairsNeighbours output finalChairString; } 53 | -------------------------------------------------------------------------------- /day11/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) chars; 4 | inherit (import ../utils.nix) fix any sum; 5 | inherit (builtins) elemAt length head genList filter; 6 | coords = x: y: l: elemAt (elemAt l y) x; 7 | xmax = length (head chars) - 1; 8 | ymax = length chars - 1; 9 | directions = [[(-1) (-1)] [(-1) 0] [(-1) 1] [0 (-1)] [0 1] [1 (-1)] [1 0] [1 1]]; 10 | charsToCoords = genList (y: genList (x: [x y (coords x y chars)]) (length (head chars))) (length chars); 11 | coordsToChars = map (map (x: elemAt x 2)); 12 | neighborF = chars: coord: directions: let 13 | x = elemAt coord 0; 14 | y = elemAt coord 1; 15 | char = elemAt coord 2; 16 | found = elemAt (coords x y chars) 2; 17 | dx = elemAt directions 0; 18 | dy = elemAt directions 1; 19 | newx = x + dx; 20 | newy = y + dy; 21 | in if any [(x < 0) (x > xmax) (y < 0) (y > ymax)] then 0 else 22 | if found == "L" then 0 else 23 | if found == "#" then 1 else 24 | neighborF chars [newx newy char] directions; 25 | finalChars = coordsToChars (fix (f: coordChars: let 26 | neighbor = neighborF coordChars; 27 | updated = map (map (coord: let 28 | localx = elemAt coord 0; 29 | localy = elemAt coord 1; 30 | char = elemAt coord 2; 31 | transform = direction: let 32 | dx = elemAt direction 0; 33 | dy = elemAt direction 1; 34 | in [(localx + dx) (localy + dy) char]; 35 | neighbors = sum (map (d: neighbor (transform d) d) directions); 36 | in if char == "#" && neighbors >= 5 then [ localx localy "L" ] else 37 | if char == "L" && neighbors == 0 then [ localx localy "#" ] else 38 | [ localx localy char ])) coordChars; 39 | in if coordChars == updated then coordChars else f updated) charsToCoords); 40 | output = sum (map (xs: length (filter (x: x == "#") xs)) finalChars); 41 | 42 | in 43 | { inherit charsToCoords finalChars output; } 44 | -------------------------------------------------------------------------------- /day12/input: -------------------------------------------------------------------------------- 1 | W2 2 | N4 3 | R90 4 | E3 5 | N2 6 | W4 7 | S5 8 | F83 9 | E5 10 | F53 11 | S3 12 | L90 13 | E1 14 | S2 15 | N2 16 | W5 17 | E4 18 | L180 19 | E4 20 | N1 21 | F27 22 | L90 23 | F9 24 | E3 25 | N2 26 | N3 27 | R90 28 | N5 29 | F57 30 | W5 31 | R180 32 | R180 33 | W5 34 | F44 35 | L90 36 | E5 37 | F87 38 | R180 39 | F61 40 | E4 41 | F37 42 | E2 43 | F39 44 | L180 45 | F53 46 | S1 47 | W1 48 | S2 49 | E2 50 | L90 51 | W4 52 | N5 53 | E1 54 | S1 55 | F31 56 | L90 57 | W5 58 | L180 59 | W1 60 | N5 61 | R90 62 | N5 63 | R90 64 | F94 65 | S5 66 | R90 67 | S2 68 | F94 69 | S3 70 | E1 71 | E5 72 | F9 73 | L90 74 | W5 75 | F83 76 | N2 77 | N5 78 | L90 79 | F33 80 | W4 81 | L90 82 | E5 83 | S5 84 | F23 85 | W5 86 | N1 87 | E3 88 | S1 89 | N1 90 | F59 91 | N1 92 | E1 93 | S2 94 | F56 95 | S2 96 | E5 97 | R180 98 | S4 99 | R180 100 | F46 101 | L90 102 | F78 103 | E5 104 | L180 105 | S4 106 | F22 107 | S5 108 | F32 109 | L90 110 | F68 111 | L90 112 | S3 113 | F76 114 | E3 115 | F71 116 | R90 117 | F34 118 | L90 119 | W5 120 | R90 121 | F12 122 | F65 123 | N4 124 | W5 125 | F65 126 | R270 127 | F13 128 | W2 129 | S2 130 | R90 131 | N1 132 | F14 133 | L180 134 | W4 135 | N5 136 | R180 137 | N2 138 | R90 139 | S3 140 | F1 141 | W2 142 | F8 143 | L90 144 | F98 145 | N5 146 | E3 147 | R90 148 | N3 149 | F39 150 | L180 151 | F87 152 | E3 153 | R180 154 | E4 155 | R90 156 | W4 157 | L180 158 | W2 159 | L90 160 | S1 161 | W2 162 | R180 163 | N3 164 | L90 165 | W4 166 | S4 167 | L90 168 | S4 169 | F75 170 | R90 171 | R180 172 | N4 173 | E5 174 | F9 175 | F40 176 | S3 177 | R90 178 | S2 179 | F26 180 | E2 181 | L180 182 | S4 183 | N5 184 | W1 185 | S5 186 | W3 187 | F11 188 | E2 189 | N5 190 | W3 191 | S5 192 | R90 193 | N2 194 | E4 195 | L90 196 | R90 197 | F8 198 | E4 199 | R90 200 | N2 201 | L90 202 | N3 203 | F8 204 | E2 205 | F67 206 | W5 207 | F19 208 | S3 209 | L90 210 | S3 211 | L90 212 | W1 213 | F54 214 | S1 215 | R90 216 | S4 217 | E1 218 | S3 219 | L90 220 | F14 221 | W4 222 | W3 223 | F36 224 | E5 225 | R90 226 | F10 227 | W2 228 | S1 229 | W2 230 | N5 231 | W4 232 | F64 233 | W5 234 | S4 235 | F13 236 | E5 237 | N1 238 | F87 239 | E3 240 | S4 241 | E5 242 | W3 243 | F46 244 | S5 245 | R270 246 | S4 247 | E3 248 | R90 249 | F97 250 | F92 251 | E2 252 | F17 253 | R90 254 | F5 255 | N1 256 | F89 257 | N5 258 | F55 259 | R90 260 | F51 261 | S3 262 | F97 263 | L90 264 | W5 265 | R90 266 | F7 267 | L180 268 | L180 269 | W5 270 | F88 271 | W2 272 | F26 273 | R180 274 | S4 275 | F54 276 | S1 277 | R90 278 | F66 279 | R90 280 | F6 281 | L90 282 | N5 283 | L90 284 | R90 285 | F58 286 | E3 287 | F67 288 | S1 289 | R90 290 | W4 291 | N4 292 | L90 293 | F63 294 | E3 295 | R90 296 | E4 297 | N4 298 | L180 299 | N3 300 | F34 301 | E5 302 | R90 303 | W1 304 | R90 305 | N3 306 | F73 307 | N5 308 | R90 309 | F28 310 | W1 311 | W3 312 | F38 313 | N3 314 | E1 315 | S5 316 | S2 317 | F72 318 | R90 319 | F25 320 | N3 321 | E2 322 | S3 323 | F63 324 | L270 325 | N3 326 | E5 327 | R90 328 | N4 329 | E3 330 | S1 331 | F32 332 | S5 333 | W3 334 | F98 335 | E2 336 | S5 337 | L90 338 | N5 339 | W4 340 | L90 341 | F68 342 | E2 343 | F81 344 | N2 345 | E4 346 | L90 347 | E1 348 | L90 349 | E1 350 | L180 351 | W3 352 | F99 353 | R90 354 | W1 355 | S4 356 | L90 357 | S4 358 | R90 359 | N2 360 | F17 361 | E3 362 | F78 363 | W1 364 | S2 365 | L180 366 | N5 367 | L90 368 | N2 369 | E4 370 | L90 371 | W1 372 | N2 373 | F97 374 | W3 375 | S5 376 | L180 377 | S4 378 | F77 379 | L90 380 | F55 381 | W3 382 | N4 383 | E4 384 | R90 385 | E5 386 | S3 387 | L90 388 | E1 389 | R90 390 | F54 391 | L90 392 | N5 393 | E4 394 | R90 395 | F41 396 | L90 397 | N1 398 | R90 399 | E5 400 | R180 401 | W2 402 | F74 403 | L90 404 | F88 405 | N3 406 | F25 407 | L180 408 | E2 409 | S1 410 | W4 411 | N1 412 | W5 413 | R180 414 | F31 415 | E1 416 | R180 417 | F17 418 | N1 419 | W2 420 | R180 421 | F61 422 | L270 423 | W4 424 | L180 425 | F66 426 | E4 427 | F68 428 | L90 429 | W4 430 | L180 431 | E4 432 | S1 433 | F30 434 | S3 435 | E1 436 | F93 437 | L90 438 | F33 439 | N3 440 | L90 441 | F58 442 | R90 443 | R90 444 | F23 445 | N5 446 | W2 447 | N3 448 | W4 449 | L180 450 | N1 451 | F84 452 | W5 453 | E5 454 | F36 455 | W3 456 | N3 457 | W3 458 | R180 459 | W2 460 | S3 461 | E4 462 | F62 463 | L90 464 | S2 465 | W4 466 | F28 467 | E1 468 | S5 469 | F54 470 | S5 471 | R270 472 | F35 473 | N4 474 | R90 475 | F38 476 | W4 477 | S3 478 | W2 479 | R90 480 | N2 481 | L270 482 | F21 483 | R90 484 | W5 485 | R180 486 | F7 487 | W1 488 | F72 489 | E3 490 | L180 491 | E1 492 | F42 493 | L270 494 | F1 495 | R90 496 | E4 497 | F72 498 | W3 499 | R90 500 | E4 501 | S4 502 | W4 503 | R90 504 | F98 505 | R90 506 | F100 507 | R90 508 | E1 509 | F9 510 | N1 511 | F81 512 | S5 513 | L90 514 | L90 515 | W3 516 | L90 517 | F75 518 | L90 519 | F27 520 | E3 521 | L90 522 | F49 523 | F53 524 | L90 525 | F26 526 | W1 527 | F48 528 | W1 529 | L90 530 | W1 531 | L90 532 | F71 533 | S1 534 | F34 535 | S1 536 | L90 537 | S2 538 | N3 539 | L180 540 | E1 541 | F52 542 | S5 543 | R90 544 | E4 545 | F58 546 | W2 547 | R90 548 | E5 549 | N3 550 | R180 551 | F56 552 | L90 553 | F92 554 | S1 555 | E2 556 | F68 557 | F24 558 | N3 559 | F29 560 | S4 561 | L90 562 | N5 563 | L90 564 | F48 565 | S5 566 | F80 567 | R90 568 | F34 569 | S5 570 | F23 571 | F36 572 | W2 573 | F57 574 | W5 575 | N1 576 | S2 577 | R90 578 | F94 579 | L90 580 | N2 581 | F95 582 | R180 583 | N1 584 | W1 585 | F59 586 | N5 587 | F62 588 | S4 589 | L90 590 | N4 591 | E2 592 | F55 593 | L90 594 | F21 595 | E2 596 | F52 597 | W2 598 | R90 599 | N3 600 | W5 601 | S1 602 | L90 603 | W1 604 | R90 605 | R90 606 | F21 607 | E4 608 | F47 609 | E5 610 | N5 611 | W3 612 | F34 613 | F2 614 | N1 615 | L90 616 | S3 617 | R90 618 | W1 619 | N4 620 | F49 621 | W1 622 | F15 623 | E5 624 | R90 625 | S4 626 | F39 627 | N4 628 | R90 629 | N4 630 | F69 631 | E2 632 | N5 633 | R90 634 | F21 635 | W5 636 | S5 637 | E4 638 | S3 639 | F67 640 | E3 641 | S2 642 | R90 643 | F51 644 | L90 645 | N5 646 | F73 647 | S1 648 | F18 649 | R180 650 | W2 651 | N1 652 | W5 653 | L90 654 | W2 655 | R90 656 | E2 657 | L90 658 | W3 659 | L90 660 | F13 661 | L90 662 | F45 663 | R90 664 | F85 665 | E2 666 | F44 667 | F65 668 | L90 669 | F82 670 | W2 671 | L270 672 | F65 673 | N3 674 | W3 675 | R90 676 | E3 677 | F20 678 | R90 679 | S2 680 | S3 681 | R180 682 | N4 683 | F98 684 | W5 685 | S2 686 | F63 687 | R90 688 | F88 689 | W3 690 | F1 691 | S4 692 | F39 693 | R180 694 | N3 695 | F84 696 | N4 697 | F51 698 | E1 699 | N5 700 | E3 701 | F70 702 | L90 703 | N3 704 | L180 705 | F63 706 | S2 707 | L90 708 | F16 709 | F11 710 | R180 711 | F70 712 | E2 713 | L90 714 | F46 715 | N2 716 | E1 717 | S1 718 | F19 719 | N5 720 | W1 721 | F67 722 | R90 723 | F79 724 | S2 725 | W5 726 | F96 727 | N1 728 | F53 729 | E3 730 | R90 731 | E1 732 | F78 733 | L90 734 | F61 735 | E5 736 | F85 737 | L90 738 | W4 739 | F72 740 | W1 741 | S5 742 | F49 743 | W1 744 | N1 745 | E2 746 | R90 747 | E2 748 | L90 749 | S5 750 | R90 751 | E2 752 | S4 753 | E3 754 | F8 755 | R90 756 | N3 757 | L90 758 | W1 759 | F56 760 | E1 761 | W4 762 | N5 763 | R90 764 | F47 765 | R90 766 | W1 767 | R90 768 | W5 769 | F5 770 | -------------------------------------------------------------------------------- /day12/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) filter isList split elemAt foldl' length fromJSON; 4 | inherit (import ../utils.nix) fix mod quickElem; 5 | navigation = filter isList (split "([A-Z])([0-9]+)" input); 6 | directions = ["E" "S" "W" "N"]; 7 | # legend: [ x y direction ] 8 | initialPosition = [ 0 0 0 ]; 9 | abs = x: if x < 0 then -1 * x else x; 10 | move = nav: quickElem (i: let 11 | x = i 0; 12 | y = i 1; 13 | dir = i 2; 14 | heading = elemAt nav 0; 15 | amount = fromJSON (elemAt nav 1); 16 | options = fix( self: { 17 | N = amount: [ x ( y - amount ) dir ]; 18 | S = amount: [ x ( y + amount ) dir ]; 19 | E = amount: [ ( x + amount ) y dir ]; 20 | W = amount: [ ( x - amount ) y dir ]; 21 | F = amount: self.${elemAt directions dir} amount; 22 | # our current version of mod doesn't support negative numbers :/ 23 | L = amount: [ x y (mod (dir - (amount / 90) + (length directions)) (length directions)) ]; 24 | R = amount: [ x y (mod (dir + (amount / 90)) (length directions)) ]; 25 | }); 26 | in 27 | options.${heading} amount); 28 | finalDestination = foldl' (a: b: move b a) initialPosition navigation; 29 | output = quickElem (i: (abs (i 0)) + (abs (i 1))) finalDestination; 30 | in 31 | { inherit abs directions initialPosition finalDestination output navigation; } 32 | -------------------------------------------------------------------------------- /day12/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit ( import ../utils.nix ) fix sum quickElem; 4 | inherit (import ./part1.nix { inherit input; }) navigation directions initialPosition abs; 5 | inherit (builtins) length fromJSON foldl' elemAt; 6 | initialWaypoint = [ 10 (-1) ]; 7 | move = nav: position: let 8 | waypoint = elemAt position 0; 9 | coord = elemAt position 1; 10 | heading = elemAt nav 0; 11 | amount = fromJSON (elemAt nav 1); 12 | wx = elemAt waypoint 0; 13 | wy = elemAt waypoint 1; 14 | x = elemAt coord 0; 15 | y = elemAt coord 1; 16 | dir = elemAt coord 2; 17 | options = { 18 | N = [ [ wx (wy - amount) ] coord ]; 19 | S = [ [ wx (wy + amount) ] coord ]; 20 | E = [ [ (wx + amount) wy ] coord ]; 21 | W = [ [ (wx - amount) wy ] coord ]; 22 | F = [ waypoint [ (x + amount * wx) (y + amount * wy) dir ] ]; 23 | L = if amount == 0 then [ waypoint coord ] else 24 | (move ["L" (toString (amount - 90))] [ [ wy (-wx) ] coord ]); 25 | R = if amount == 0 then [ waypoint coord ] else 26 | (move ["R" (toString (amount - 90))] [ [ (-wy) wx ] coord ]); 27 | }; 28 | in options.${heading}; 29 | finalDestination = foldl' (a: b: move b a) [ initialWaypoint initialPosition ] navigation; 30 | output = quickElem (i: sum (map abs (i 1))) finalDestination; 31 | in 32 | { inherit finalDestination output; } 33 | -------------------------------------------------------------------------------- /day13/input: -------------------------------------------------------------------------------- 1 | 1001612 2 | 19,x,x,x,x,x,x,x,x,41,x,x,x,37,x,x,x,x,x,821,x,x,x,x,x,x,x,x,x,x,x,x,13,x,x,x,17,x,x,x,x,x,x,x,x,x,x,x,29,x,463,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,23 3 | -------------------------------------------------------------------------------- /day13/input2: -------------------------------------------------------------------------------- 1 | 893021 2 | 67,7,59,61 3 | -------------------------------------------------------------------------------- /day13/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) foldl' filter head isList fromJSON split; 4 | inherit (import ../utils.nix) mod quickElem simpleSplit min; 5 | lines = simpleSplit "\n" input; 6 | data = quickElem (i: { 7 | timeStamp = fromJSON (i 0); 8 | busses = filter isList (split "([0-9]+)" (i 1)); 9 | busString = i 1; 10 | }) lines; 11 | busNumbers = map (x: fromJSON (head x)) data.busses; 12 | busInfo = (foldl' (a: b: 13 | let 14 | arrivesIn = b - mod data.timeStamp b; 15 | in 16 | if a.lowest > arrivesIn 17 | then { lowest = arrivesIn; bus = b; } 18 | else a) 19 | { bus = 0; lowest = 1000; } busNumbers); 20 | output = busInfo.lowest * busInfo.bus; 21 | in 22 | { inherit data busNumbers output; } 23 | -------------------------------------------------------------------------------- /day13/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) data busNumbers; 4 | inherit (import ../utils.nix) fix product mod take lcm; 5 | inherit (builtins) elemAt genList length foldl' filter isList split head tail; 6 | busStrings = map head (filter isList (split "(x|[0-9]+)" data.busString)); 7 | offsets = filter (x: elemAt busStrings x != "x") (genList (x: x) (length busStrings)); 8 | period = foldl' lcm 1 busNumbers; 9 | zipWith = f: xs: ys: 10 | let 11 | x = head xs; 12 | y = head ys; 13 | in 14 | if xs == [] then [] else 15 | if ys == [] then [] else 16 | [(f x y)] ++ zipWith f (tail xs) (tail ys); 17 | combos = zipWith (x: y: [ x y ]) busNumbers offsets; 18 | start = head busNumbers; 19 | match = fix (f: number: idx: let 20 | current = elemAt combos idx; 21 | updated = number + (product (take idx busNumbers)); 22 | bus = elemAt current 0; 23 | offset = elemAt current 1; 24 | trueOffset = mod offset bus; 25 | check = mod (number - trueOffset) bus == 0; 26 | in 27 | if (length combos) == idx then number else 28 | if check then f number (idx + 1) else 29 | f updated idx) start 1; 30 | output = period - (mod match period); 31 | in 32 | { inherit busStrings period offsets output; } 33 | -------------------------------------------------------------------------------- /day2/input: -------------------------------------------------------------------------------- 1 | 2-5 l: fllxf 2 | 4-5 r: rrrjmrrrrrrh 3 | 1-4 k: kkksk 4 | 7-8 k: tknsqknzkckrwkjkk 5 | 2-3 p: mpbstpxmsxmpnhbwlb 6 | 2-7 j: xkjjtjjjj 7 | 2-7 m: gczbmgk 8 | 15-16 q: qqqqqqqqqckqqqfqqq 9 | 7-14 d: dgdddlddddddrvfddnsd 10 | 7-12 r: rrrrrrrrbrrrl 11 | 2-11 p: zppjpwpqppbnppd 12 | 6-8 w: wqhwwnpwwwr 13 | 4-10 m: fmkmrrrdkmr 14 | 1-2 n: nnjvtnzk 15 | 3-8 t: tdxmzslxtvft 16 | 13-14 m: mmmmmhmmmmmmmm 17 | 9-10 l: lljllllllll 18 | 12-16 t: vdtbdtxtttttrctttkt 19 | 2-6 q: nqghxqgjqvzswbxww 20 | 4-6 k: khkkkkvrkgfwvbd 21 | 4-5 r: hrrpv 22 | 5-8 g: gggggggg 23 | 5-8 f: fjsfftfs 24 | 9-12 p: ppfpnxpvppfspp 25 | 14-19 x: lrxxxtxxxxxxxzxxxxx 26 | 4-6 b: pqbqbbx 27 | 10-12 x: mlxkxxxzctrkz 28 | 2-7 b: tmbzmsb 29 | 16-19 k: kkkdkkkkkkkmklhkkkkk 30 | 4-11 h: lpnhfccshxhg 31 | 4-5 n: nsnhgnk 32 | 1-7 j: jjjjjwsjd 33 | 9-12 s: snsssssskssss 34 | 7-8 w: wwlwwwhww 35 | 3-12 h: znhvqgfgjvlh 36 | 9-11 d: dddfddddddg 37 | 2-5 j: jjkkrndpdmscjfwvx 38 | 1-10 v: vfgbvzlwvvcc 39 | 6-15 q: mcqqqqbqcgltqqjz 40 | 5-9 q: qprqvzkqsqqt 41 | 4-6 l: kldtxl 42 | 6-14 j: jjjjjjjjjjjjjjjj 43 | 3-6 m: mmmjwwsm 44 | 6-15 p: pffpppppdqpfppbpppk 45 | 12-14 s: sssssssssssssz 46 | 7-13 b: xmbblmsksbbbwbb 47 | 4-5 q: dfqfmtqjcvqrq 48 | 3-5 l: kvrll 49 | 2-4 w: wsww 50 | 8-10 f: bfffzfpcfjhw 51 | 9-10 c: ccccjcccckc 52 | 11-14 q: vqqqpqtqqqlqqqqqxsft 53 | 2-4 l: xrzlkmcfl 54 | 7-17 c: cccccsccccccccccg 55 | 6-8 z: jzzljvmzzvzzgvzz 56 | 5-10 w: fwwwwxwmqwz 57 | 10-12 d: dddddddddmddd 58 | 1-2 k: lzptzkccbmnpqpc 59 | 3-5 j: bjmzzjt 60 | 4-10 q: qrjtfzgqdt 61 | 8-14 m: mmmmmmsmmmmmmm 62 | 12-13 b: bbbbbbbbbbbrz 63 | 2-4 p: vppzp 64 | 4-8 q: tqqqnvhqprdqrqd 65 | 6-8 r: gcrwjcrq 66 | 9-13 p: pgppvppppppsp 67 | 8-10 n: npnngnndvndn 68 | 3-9 h: hwmkhhhnnh 69 | 4-12 l: lnllwtrsctgl 70 | 3-4 b: bpbbkqddb 71 | 1-3 d: dbdsfhnzp 72 | 9-10 l: lllllftlllll 73 | 3-5 v: vvvvvv 74 | 3-5 p: dpvppp 75 | 1-4 z: zzzfz 76 | 6-7 q: qqqqqcq 77 | 4-6 p: pcppppbbfrcfbp 78 | 3-8 x: qqxfbxjtmqk 79 | 4-5 m: tmmmrmm 80 | 9-10 h: hhshhhhhhhhhhh 81 | 3-4 b: dbbvbx 82 | 2-5 s: sspzssckbzrjjsbbw 83 | 5-11 w: wbbzkwnnbpggqprbmzg 84 | 5-10 d: dddxdddddtdgdsdd 85 | 9-13 p: pnkrpxcspctmwphsh 86 | 17-18 b: bbbbbbbhbbbbbbqbbqb 87 | 1-3 r: blfcfnrrqkfh 88 | 2-5 j: jvjsjj 89 | 8-15 x: fxvxkxxxxvxxlxzxb 90 | 4-10 k: kkkktkkkkpkkkk 91 | 4-5 j: sjjjj 92 | 4-6 b: mbbtbb 93 | 2-12 p: ppfspvgmvzzpcf 94 | 4-5 h: crzbh 95 | 13-17 d: qdddddddddddddkdd 96 | 6-7 n: pnfzhbg 97 | 9-11 x: xpxxxtfhbxxxxt 98 | 5-7 d: ddzdxdw 99 | 12-18 j: zjlsrtflbpjjljfjjh 100 | 2-4 l: qclk 101 | 7-8 w: wwwgwwrw 102 | 4-5 q: qqqwq 103 | 3-6 z: fczcjzpsdddqmbqkz 104 | 7-8 z: mkhzjzzl 105 | 2-3 k: kdkp 106 | 11-12 d: qdqddxdwdbdddddddktw 107 | 13-16 w: wwwwcwwwwwwmwwwwpw 108 | 6-7 s: sxsjstsss 109 | 15-16 c: cccccwccccccccvc 110 | 13-14 v: xvdtvghjvkvmvbvvx 111 | 5-6 g: gggggpg 112 | 6-7 l: lllllzljl 113 | 4-10 z: nkczdqzhfz 114 | 2-10 x: xlxxxxxfxx 115 | 1-7 t: jttglvttttm 116 | 7-8 k: hkkkrkkk 117 | 9-12 n: wrnnnnnnpnnnnn 118 | 3-4 l: llgk 119 | 6-7 h: vhzhhghh 120 | 8-9 h: hhmhhhhjhmhz 121 | 3-4 m: gmrsmm 122 | 12-14 s: ssstxhsssssssjnsssf 123 | 10-19 l: lllllllllllllllllll 124 | 14-16 m: mmcmmmmmmmmmmqmm 125 | 11-12 p: fppppptppppqpp 126 | 7-16 s: ssssdssssssssssh 127 | 2-6 c: zcxcpm 128 | 5-10 h: hhhrhjjhhhhnhhhwl 129 | 14-15 x: xxxxxxxxxxnxxtxtx 130 | 3-8 f: fpffpfkzff 131 | 3-7 x: xxxxkxkx 132 | 8-9 n: nnnnnnnnnn 133 | 6-9 c: pccccqcccc 134 | 7-13 s: sssspsrsssssfss 135 | 3-6 q: qqqqqq 136 | 5-6 d: ddddfz 137 | 4-5 p: gpqppdbpcptfpczlpcbm 138 | 2-4 b: xbtbjmmxrbfbwbxb 139 | 1-7 w: vwwwwwx 140 | 9-20 w: wwwwwwwwwwwwwwwwwwww 141 | 4-6 d: cdwtdddwtqs 142 | 8-15 r: rrlrrndprzrrrrklr 143 | 4-19 h: rhhhhcxhhctknztthhf 144 | 2-11 r: pvchfrzhgcqxsjx 145 | 8-12 m: mqfmqmmmpmmmpmkvzsm 146 | 2-5 b: fbmnkrxh 147 | 4-5 q: qqrlp 148 | 3-4 r: kprrr 149 | 2-3 q: qzql 150 | 8-16 t: ctktlttttcktxqtqht 151 | 10-14 z: zzzzzzzzzpzzzzzzzz 152 | 9-12 z: zrvjkzzgkzzrzzqzzfm 153 | 2-4 c: ccdcp 154 | 4-6 z: zpzrzh 155 | 7-10 n: wnnlhdpntvsmrnbmps 156 | 14-15 v: vbvsvvvnvvvfvvfvvvv 157 | 6-10 w: xwwwwvwwww 158 | 1-6 n: nnnnnnn 159 | 2-12 g: pgmdgpgggsngpwgvjkg 160 | 12-13 g: ggggmgmggggggg 161 | 4-7 q: vthqqchfn 162 | 2-4 q: qpmqq 163 | 10-11 j: pjhjjjjjjjjjvj 164 | 1-10 l: lgdgqqgvmnscl 165 | 12-13 l: rlmnkmnltzlmlq 166 | 4-9 l: lllllgllh 167 | 10-16 v: xjjvvvdvvvvvvvvvvvv 168 | 1-6 x: glxzxfcxglrcwrwcgl 169 | 2-4 t: tttntd 170 | 9-16 w: wwwhmwwwwwwmwwwxww 171 | 9-11 m: mnmsmmmmmmmm 172 | 8-16 h: pnrsxhrhhjlqchnh 173 | 9-15 c: cxwmcpnjtrccrcn 174 | 8-9 s: rsssnsshnsksd 175 | 2-6 s: cfklcdd 176 | 6-9 m: qmmmmmmvxmwm 177 | 3-6 c: cwctccshc 178 | 3-4 x: xpkxffbfkzvjrxb 179 | 4-5 r: rrrnrr 180 | 10-12 j: jjjjjjbjjkjj 181 | 3-17 d: sndddlgljdjckpbldb 182 | 5-6 x: wzrxxgxwvdfxnq 183 | 7-9 l: hhlflqhxknlnbllkl 184 | 8-11 m: wmhmmmmnmmmmm 185 | 13-14 k: kknkfkkkhzkkkkkxkkk 186 | 2-4 s: skss 187 | 2-4 m: mmgtm 188 | 2-8 r: qrrdpppvgrrcrrvs 189 | 12-16 d: dddddddddrdddddczd 190 | 19-20 x: xxxxxxxxcxxxxxxxxxxl 191 | 7-10 b: bcfpbmlqnrpcnx 192 | 1-14 d: fdpddhdrddqdddqdd 193 | 5-7 d: ddddxdvdd 194 | 11-18 j: fjxjjjjjjjkmjjjjjgjj 195 | 3-4 t: zjtp 196 | 2-4 r: rrrdr 197 | 9-11 b: bbbbbqbjqgbbbbbhbjq 198 | 6-7 f: ffbfffgf 199 | 4-5 x: xxxqf 200 | 1-7 c: jcnbqbcwcc 201 | 13-15 q: qqwqqqqqqqgqrqj 202 | 13-14 h: kxkjzplvmhrrhl 203 | 6-10 j: jjjjjtjjjmj 204 | 4-8 v: vvvnvmvrhb 205 | 1-12 k: kkkdrkqhkkdkkhdk 206 | 2-5 n: lnfjb 207 | 10-12 q: qqqqqqcfqlqqqq 208 | 1-16 s: ssssssssssssssscs 209 | 12-14 l: nlllsllltllcllll 210 | 4-5 p: ppppcxwngtcgkjmpb 211 | 16-17 h: hhhhhhlhhhhhhhhnhh 212 | 3-4 x: xxxx 213 | 3-4 f: ffhff 214 | 5-6 t: tntthtth 215 | 15-18 f: jffffffnffffffffff 216 | 14-18 z: zzzzzszzzzzgmszzzzzz 217 | 3-4 n: nfnnnn 218 | 1-8 q: bmfhqhqqqqmqqqdz 219 | 4-7 q: kqqhtqqjqkqqrxvjzqc 220 | 4-5 j: jsjjjjj 221 | 12-18 v: vvvvvvvvvvvsvvvvvnv 222 | 2-10 f: nfffffffmmhn 223 | 1-7 z: zzzxzczzc 224 | 1-8 l: jpflllcllqdllckwvrb 225 | 7-10 x: xxxxxxxxxz 226 | 3-6 t: stftpt 227 | 1-5 t: tttzt 228 | 2-4 g: gggsgggggggwg 229 | 4-7 l: xlllvvlmrlrqfzx 230 | 8-11 q: qqqqqqzrqqq 231 | 1-9 f: ffcltnxdrdnfnk 232 | 1-13 f: ffffffffffffhfffff 233 | 13-18 g: gsggggggggggtggggg 234 | 6-12 c: xrcrcccccxckgcch 235 | 2-9 f: pfcdmnfzjdqjnl 236 | 4-15 r: wxrlrfrrgrrbrdvrr 237 | 8-9 l: llllllllxlll 238 | 1-2 d: dpdddd 239 | 4-6 w: wwwpwdnww 240 | 1-3 s: vhkzssg 241 | 10-13 x: xxxxxxxxxxxxxx 242 | 1-7 n: nnnnnnjnn 243 | 3-8 x: xvxxnxzx 244 | 12-13 l: lllllllllllll 245 | 15-17 l: lllzllllllllllklll 246 | 10-14 m: hmmmmmmmmmmmmm 247 | 2-9 m: mmmvmsntmmmn 248 | 6-8 z: zzzzzqzz 249 | 1-4 h: gqlhh 250 | 2-5 q: wqksgtqxgqgdhgqwcq 251 | 17-19 q: qpqqqqqqqqqqqqqqhqq 252 | 1-4 z: jzzzz 253 | 2-5 z: gznrz 254 | 1-5 j: wjjjjj 255 | 4-5 h: hhmglhh 256 | 2-12 w: nhqwwwtwdbwwmwwwzhw 257 | 10-13 x: xxxxxxgxxlrxmtxxpm 258 | 7-15 w: ktwhswwhwwwhsqwfw 259 | 1-3 h: hnwthhcd 260 | 2-5 c: rdcvh 261 | 10-13 x: fwxqxxzxnxtbx 262 | 3-10 m: dmjmzmqmhbml 263 | 8-15 s: wcsswxxbrsdsrpss 264 | 4-5 c: cjccvc 265 | 9-10 z: zzzzzzzzzz 266 | 2-3 h: hhhz 267 | 6-7 w: wwgzsjwwvwlgww 268 | 3-8 g: gtxgggggcgfg 269 | 2-3 m: gmmrsgkmsvslw 270 | 10-11 x: xmxxxxxxxmxx 271 | 2-17 r: bcrtchxrgrqvrqgnm 272 | 7-18 r: rrrxrrrrzfrjrwrrrrmk 273 | 7-11 z: zzzwzzwzzzzrz 274 | 2-5 j: jmrjj 275 | 7-11 g: gkgggqgglmggnggqglqg 276 | 2-5 l: rlbkllxctprqflhll 277 | 4-13 p: mppprjpnxhrzpbp 278 | 14-16 p: pkppppzpppppjppg 279 | 13-15 n: jdndnxnnhntnnndsnn 280 | 1-2 m: pqmm 281 | 4-13 j: jjwjfmmjjjjjjpg 282 | 3-4 j: nfht 283 | 7-11 f: vfffffzffcff 284 | 10-12 p: pppppppppjpj 285 | 3-4 b: bbbb 286 | 5-9 p: ppqppppppppt 287 | 5-7 g: ggggggvg 288 | 11-14 z: zvzzfzzzqzkzzzzzzzf 289 | 2-5 c: hcgpjqjkpvgcxxrf 290 | 9-11 v: vvkvvcfqqvvffgvvvvs 291 | 8-9 d: rldntbdcz 292 | 15-19 p: ppppppppnpppppppgppp 293 | 7-8 w: wwwzwpwzmkxcwwtgw 294 | 4-8 z: zzrzzfdzk 295 | 8-9 g: gggggggqn 296 | 1-7 c: czcccngw 297 | 3-12 t: btdtgfclmpttqttctstt 298 | 2-3 n: jjglbnnzrjgd 299 | 7-10 h: hmhhpxhhhhh 300 | 4-6 v: vvvvnv 301 | 9-11 m: mmdbmmmqgmrh 302 | 2-3 r: rjrrrrrrrl 303 | 1-5 q: qjjqfzfq 304 | 4-5 z: zbzzc 305 | 9-12 c: ccccccccqccc 306 | 6-8 d: kdfkdtrv 307 | 4-12 r: rrrzrrrrrrrmrrrrr 308 | 1-5 h: hhhhxh 309 | 9-10 t: cztttttttttttt 310 | 15-17 j: jjjjjjrjcjvjfjjjcjdj 311 | 4-5 t: tftvt 312 | 2-4 d: qddvrp 313 | 7-13 p: pdrspdzpcxdcpzzxpwtg 314 | 12-13 l: llllllljllllll 315 | 13-14 s: sssssssssssssn 316 | 5-7 f: lnfsffrfg 317 | 2-8 r: krtrhgqnn 318 | 3-5 j: jxjjjnflwcjj 319 | 6-7 r: rrrrrrmrxrr 320 | 8-9 t: tsttqcctx 321 | 4-5 v: vvvvcv 322 | 10-17 j: jjjjcjjjjwjjjjjjkzj 323 | 15-16 t: nttttsttttzttttt 324 | 5-7 c: cccclccc 325 | 3-4 x: kxkx 326 | 4-9 l: zslllldlnql 327 | 13-18 f: fffmflfffffhdffffwf 328 | 8-10 m: mvmmmmhmmvmh 329 | 4-6 j: jsjjjmfs 330 | 11-13 h: hfnhhhhhhhthhh 331 | 5-13 g: gsqgcgqggfggl 332 | 7-8 p: ppjqppppp 333 | 11-12 b: tbbbbbbbbbbdb 334 | 1-4 q: qqqzq 335 | 8-9 s: xssssssns 336 | 6-9 p: pppppppppp 337 | 3-8 j: jvjjjjjjrjj 338 | 6-17 b: bbbbblbfbvbxbbbbbt 339 | 3-7 j: jjgjmhjjj 340 | 4-6 v: njvgsq 341 | 17-18 h: hhhhhhhhvhhhhhlhshhh 342 | 8-9 m: mmmmmmjdbm 343 | 2-11 x: xxxjdgxpxxwxtvkxxxlm 344 | 9-16 n: nnnnnnnnnnnnnnnsnn 345 | 17-19 w: wwbwwwwwwwwwtwwwwwww 346 | 7-8 n: qwbxqsbmpnj 347 | 5-6 j: jjjjqjjjjj 348 | 2-4 s: fssg 349 | 5-12 l: dgnzdllptvvlx 350 | 7-12 x: xwxxxxgxxtxbkx 351 | 6-12 x: xkmxzgxlnnxq 352 | 2-6 h: vnshjh 353 | 2-5 x: dxxqxpvsm 354 | 13-14 p: pppppppptpppjp 355 | 7-8 h: hthhhxhph 356 | 5-12 j: jtjrjcnjjjjxjjjj 357 | 1-5 j: jfjjwjj 358 | 5-6 q: qqqqqq 359 | 6-8 t: ttnttvttt 360 | 3-5 n: gksnnn 361 | 6-9 j: jjjjjljjj 362 | 3-4 d: dbdh 363 | 1-5 n: hjhfhrgbcnqn 364 | 10-13 l: llwllllllllll 365 | 2-3 s: dqss 366 | 1-3 l: lwqbqdml 367 | 10-11 r: rrvdcgrrwhrpsrzjtrl 368 | 1-2 d: bcdd 369 | 10-11 v: vvvvvvvvvcq 370 | 5-15 z: qcgsnhcrzzdfzpp 371 | 1-15 w: cfwzjwcgpwwwwwgwxw 372 | 11-12 t: gttfknrmtkbwt 373 | 2-4 h: blhhhcgfgmh 374 | 5-7 v: vjczvqsjzvpjvplhtdvl 375 | 1-2 d: tdjdb 376 | 5-6 m: mmzmzg 377 | 3-8 n: vwjfpdrn 378 | 2-9 c: ccccccccm 379 | 8-14 w: jxmpsswkhdpqrw 380 | 5-6 q: qqrfcj 381 | 7-13 g: hgwgqgrkgwggxggmqq 382 | 3-5 h: hnhhvhpjsh 383 | 1-12 k: hkkmkkkpkkjk 384 | 5-6 m: mmcmfm 385 | 12-13 w: wwwwwwwwwwwxw 386 | 8-10 q: qwbsdnqqlznvqjqqzqqv 387 | 5-7 j: jgjfjwmqmtsszf 388 | 4-5 c: cctcmc 389 | 18-19 v: vvvvvvvvvvvcvgvvvfq 390 | 1-8 j: qjbsjsjghj 391 | 14-18 b: bbbbbbbbbbbbbbbbbg 392 | 9-15 w: wwwwwvwwhwwnwwcwvw 393 | 6-9 d: ckvddldddp 394 | 3-12 k: qrnchpsjfcckrjx 395 | 6-10 c: ccccctccccc 396 | 5-6 z: hzzzzzsz 397 | 3-5 l: rvwlf 398 | 18-20 r: rrrrrrrrrrrrrrrrbhrf 399 | 3-4 c: cccvcc 400 | 11-17 s: jssssgszsbtsssslss 401 | 5-14 k: kkksxkkkxkxknkkkk 402 | 1-3 q: qxgsmqxdgx 403 | 12-13 q: qqnbqqqqqqhbqqqq 404 | 7-13 s: ksrskrslsjfss 405 | 3-8 n: nfnnnndsnnnnxs 406 | 4-8 g: lglggflgglgnf 407 | 6-14 b: bbdkbbmbgbbrlb 408 | 3-7 w: wqwrdpw 409 | 5-6 j: mdmjjj 410 | 13-16 k: kkkkkxkkkkkkqkdk 411 | 4-6 h: jmthbwhhfh 412 | 16-19 p: ppppppppppppppppppv 413 | 15-16 k: fkzkkkkkpkcrkhkklbkr 414 | 10-11 k: sjkkgkhkqfk 415 | 12-15 l: jjnlvmsppvlglllvljb 416 | 3-13 l: llcdlfllqllqjl 417 | 3-7 f: ggfgbvfqlrffxrflchx 418 | 13-14 d: ddddddddddcddqd 419 | 7-18 d: wdjdtdrdddfndkdddddd 420 | 8-10 v: rvvzvvvrvb 421 | 9-13 n: rlnnnnlnmbnqwlnmlnn 422 | 14-15 h: hwrhcmhwbjhcbhc 423 | 6-13 t: ttwtkrrtttdbtt 424 | 3-5 w: wkwww 425 | 1-6 h: fghcxhwldmnb 426 | 1-9 f: ffffffffffffff 427 | 10-11 k: kkkkkkkkkkvkkkk 428 | 2-3 s: sssw 429 | 3-6 v: vzvqmdgrnkvcvz 430 | 3-4 j: jztw 431 | 4-5 b: bbbbb 432 | 1-9 l: wllmxlbxfllllcr 433 | 14-15 q: pqgqqngpjzhmmqq 434 | 4-7 n: jnznczd 435 | 2-8 m: cmpmcmshpbmxb 436 | 6-9 r: rrrrrhrrr 437 | 15-18 t: ttttktmtttttttvtttt 438 | 1-5 s: sssxf 439 | 9-17 f: zfmkpffpwqfqffffffh 440 | 16-19 d: dddddvddddbdddkdddpd 441 | 8-10 w: dwwrpwwwxx 442 | 6-11 w: wmdmzzcwwpkkwwwqwnww 443 | 4-5 s: zssgf 444 | 2-8 v: vvpvvvvvqjv 445 | 17-18 s: sssssssssssssvsssj 446 | 1-3 d: tddd 447 | 1-3 s: tssdbfvnlmtspmwlxxl 448 | 6-11 k: kkkkkkkkkkkk 449 | 1-5 d: dddddgqddmdkdk 450 | 6-11 l: nzgwkmqlpnl 451 | 2-6 v: kvzlqgzr 452 | 1-2 f: xkqzbcrsdswpf 453 | 14-15 x: xxxxxxxxxxxxxwx 454 | 16-17 j: jjjvhgjzjwjzjmjnj 455 | 5-6 p: ppvppcjp 456 | 1-4 w: lwpwwh 457 | 15-16 s: ssscsssssssssssd 458 | 3-7 b: rpqkbbbb 459 | 3-6 d: dddddf 460 | 10-15 k: kkckzkbpdfkkckl 461 | 2-4 v: wvrvkgfpvvm 462 | 15-18 v: vvvmvvvvvvvvvvgvvl 463 | 1-2 l: hdfll 464 | 1-4 v: wtvd 465 | 5-6 v: vvvvzmv 466 | 6-8 l: llnllmlns 467 | 4-5 b: bbkblbsbnbbbbbbgbbbb 468 | 5-6 d: xnjmdwddtfdbzdb 469 | 4-10 q: qqlqqqqqhq 470 | 4-9 c: rcvctlmccccc 471 | 3-5 f: fffmnf 472 | 9-14 n: xnznnnnnrnrdlzfsn 473 | 6-7 w: wdwkrvwww 474 | 10-15 v: vvvvvvvvvnvvvvz 475 | 10-11 k: hnjzdwqkmskkx 476 | 4-8 c: ccqcqfrcnffbncfkc 477 | 5-12 c: cclsmccgcccccxnvcckc 478 | 5-6 z: cwhbkskzhnzztzzlhz 479 | 3-5 v: vkvjvv 480 | 3-4 j: jjjj 481 | 13-16 h: khxhhhrhkhhhhhhhwhhh 482 | 1-3 f: jxdxffjfprs 483 | 1-11 l: gllslllllxqlltlmh 484 | 8-11 g: kggggvnbkqgbfbgdsgwg 485 | 6-7 z: zzzxzfz 486 | 3-7 x: xqxjjxxlb 487 | 3-4 v: vtdv 488 | 7-10 w: wwwwwwwwnww 489 | 4-8 w: kgwwwwwwpx 490 | 3-5 g: ggggggs 491 | 4-8 w: gwwwgzxb 492 | 9-10 t: ttttttttmp 493 | 3-8 f: fpjdffffzflffmlxfq 494 | 11-13 g: gggtgggsggbbzggg 495 | 1-5 p: pptcp 496 | 13-14 c: cccccccccccccnc 497 | 3-13 n: gbjnnqxnjprnhn 498 | 5-6 x: qxxdknx 499 | 8-9 q: kmlfqxcvqqsqkvtm 500 | 3-6 n: xndnvn 501 | 6-7 s: scxccsjssstw 502 | 14-18 d: dddddddttddddfpddbd 503 | 18-20 d: sgljbkdxhvckddpbjdld 504 | 5-8 m: dpmnmfmmpm 505 | 6-9 w: rfdwwwplw 506 | 5-7 b: vbdrcbbgqbspbbv 507 | 18-19 b: bbbjbbbbbbbbbbbbbsb 508 | 11-12 x: xxxxxxxxxxzjx 509 | 6-8 d: dqhgrddhddxdn 510 | 6-16 p: dppbbzbpxxpphjppkpp 511 | 3-4 k: khkkt 512 | 1-2 x: xpwkvcxxqrn 513 | 1-4 n: lnnngnnnns 514 | 1-11 c: cczvdcgcpcrccpzw 515 | 15-17 h: hhhhhhzhhhxhhhshhhh 516 | 7-8 t: fttttttt 517 | 5-19 z: zczzczmczwzpzblzvxzz 518 | 4-8 l: zlpdjnsllkgkjglmnll 519 | 9-12 s: spwssjsssdstjssf 520 | 8-10 h: hhhhfhhchh 521 | 4-11 q: qqqqsqqqqqdqqqq 522 | 14-15 w: wwwqwwwwwwwwwmjww 523 | 1-2 b: blcbhdqfsbmnq 524 | 1-5 m: mlrdhdkfjnknxlw 525 | 8-9 r: rrrrrrlhc 526 | 9-13 d: ddddddddddddd 527 | 2-3 p: tpxpjgpcf 528 | 1-2 f: ffff 529 | 5-8 k: cdkkgbvfwkkskkw 530 | 2-3 r: rrrp 531 | 6-10 b: bbbbbdbbbbbbbbbbb 532 | 10-12 t: tttttttttgdxt 533 | 3-4 k: kjkrkmcmvr 534 | 8-10 b: zbbpcwgbsbwdz 535 | 2-10 v: zqvdtnxvvcvlrvq 536 | 3-4 b: bbbbb 537 | 13-16 t: ttttmttttttttttwttt 538 | 16-17 n: nbnnnnnnnnnnnnnsgx 539 | 8-10 f: fmfsffhjcfzffcxw 540 | 7-13 m: mmvmrlmtzmbtmmxcsmm 541 | 8-9 m: mmmmmmmmm 542 | 1-7 n: nnnnwnpnnn 543 | 6-7 z: xzzzhpz 544 | 3-4 n: bnnn 545 | 5-17 r: rrlrrbwzmkrrhrrrrhnr 546 | 9-13 t: ttntttttttttc 547 | 11-12 w: wwwwwwwwwcwsw 548 | 1-10 j: ljhjjjdgjmj 549 | 9-10 c: cccccccccx 550 | 3-5 h: hfhhh 551 | 18-19 q: qqqqqqqqqqqqqlqqqbqq 552 | 1-4 b: pnjntrscpklzfcdl 553 | 9-11 c: nrxscrjjcrzc 554 | 9-12 q: nqpqqqqqqqqqqc 555 | 5-15 k: phmcmnhbckwkvwkb 556 | 2-4 t: dtrtmtb 557 | 4-5 j: jjjjp 558 | 8-9 m: mmhjmmrsqmm 559 | 4-5 r: rrsrrrr 560 | 6-10 w: wwwwwgwwww 561 | 13-18 m: mgmmvmmmkmmmmmgpmfm 562 | 10-11 d: ddxdldwdddddzdvrd 563 | 3-15 k: mxxgjklzzdbtgddzwrx 564 | 9-11 q: qqqqfgqqqqwqqq 565 | 2-4 g: gdhthpp 566 | 1-11 r: srrrrrrrrrrr 567 | 13-14 x: xxxxxxxxxxxxxs 568 | 6-17 f: ffvffkffffffffffjf 569 | 3-12 m: kmmmvbjlmmmf 570 | 9-20 n: nnnplnnnnnnnnnlpjntn 571 | 8-14 f: cjflffftftnffd 572 | 2-7 b: kbzbbbbbbqb 573 | 10-12 n: nnnnnnnnnnnk 574 | 7-8 z: zxzdzzzclnjzj 575 | 3-11 l: llldlsmltklz 576 | 2-5 s: swwxrpscmmhzsgrvnl 577 | 1-13 p: kzwjlpfhpskzpsrp 578 | 13-15 f: gffffdffkhfffvffjffb 579 | 6-7 d: drddddd 580 | 4-6 p: pppphpj 581 | 12-18 k: jkkkkkkktkzkkxkkfgkn 582 | 8-9 j: jjjjjjjpc 583 | 5-7 d: ddlkxdmndmdkkhwd 584 | 10-11 l: vlllhllfhll 585 | 5-6 b: bbjbvbqrjb 586 | 17-18 d: dxdnddddddlddddddl 587 | 15-18 d: dddxddwwddddddnddd 588 | 1-12 x: sxxxxxxxxxxtxxxxx 589 | 3-9 k: rfkrnjxxkkm 590 | 9-12 n: xnnnnnnggnnln 591 | 5-8 w: nwpwqwwwlfwmj 592 | 3-11 p: sgprfdprpmqpwvps 593 | 5-6 x: sxxhxxkx 594 | 11-14 h: hhhhhchhhhhhhh 595 | 2-3 p: kxpllmpvfxq 596 | 4-14 k: qkpfkskhglhkzkck 597 | 3-6 q: jsqbdqq 598 | 8-9 n: nnnxnnnnpnnn 599 | 12-14 h: stshhhwxhcvhhg 600 | 5-8 j: jjjjjjjj 601 | 10-14 h: hqlqhxzmdnfzhhhwxnwj 602 | 1-8 r: qmlvfqvrbgfrrmppkzwv 603 | 3-9 v: hhvnpvvvdvktgbcrr 604 | 6-8 q: qqqqqqqp 605 | 9-12 l: lxklkwplllvlmljlfll 606 | 11-14 w: wwwwwwwwwwwwwpw 607 | 6-7 c: cccqrccc 608 | 3-6 d: wddgdzd 609 | 3-8 d: dddppddddddddfd 610 | 5-9 g: jlxgxgkggpg 611 | 6-14 b: jbljlvjtqkbbzlpvxmf 612 | 2-3 x: nnbx 613 | 6-7 q: qqqqqbfqqqq 614 | 2-3 n: xnmnnfb 615 | 13-14 p: pppppppppppphr 616 | 8-11 k: kkkkkkkkkkk 617 | 4-5 r: rrrsr 618 | 13-19 t: ttttttvtttmttttttbt 619 | 8-9 r: rrrlrrrwr 620 | 3-6 c: flfhnccccwvtmqz 621 | 8-12 s: xshssnnsskcsjsssgs 622 | 1-4 r: vzkpphvtwrxgr 623 | 11-13 c: ccccccccccqcc 624 | 3-5 v: fvvjvzgt 625 | 1-4 j: sjjnsjjj 626 | 3-6 s: sxsqnfbmssbfnjs 627 | 12-15 p: pnppppppppppkpp 628 | 9-13 l: wlldrllklllllkl 629 | 2-3 s: swsrljzrns 630 | 8-9 b: bbbbbbrwb 631 | 16-20 f: ffffffhffffffffsffff 632 | 5-9 w: wwwwswwwww 633 | 7-9 q: qbqqqtqqkd 634 | 6-8 z: zzzzzzzz 635 | 5-10 m: zlmmnmrgkmtm 636 | 1-5 n: mnnflnn 637 | 4-8 c: cpccbgccc 638 | 9-12 j: jjjjjjjjwjjjj 639 | 3-4 s: tdhzbsqsb 640 | 15-19 t: tthrqtttttttmtttttx 641 | 11-12 b: bbbbbbbbmbjcb 642 | 1-13 f: ffqfkfftfjrwfkfm 643 | 14-15 v: vvvvvvmvvvvvvdv 644 | 4-6 h: qvchkhhccnxwpvhhhb 645 | 2-8 k: kskkkxkkkkk 646 | 3-10 j: jjjbjjjjjpd 647 | 4-13 z: svkjzrfrtftftqhhc 648 | 18-19 p: pppppppppppmpppppmd 649 | 5-14 b: bbbbcbbntbbfbpbd 650 | 5-7 q: qqqqqqq 651 | 2-17 j: jbjjjjjjjjjjjjjjcj 652 | 1-5 z: zvztgv 653 | 4-5 k: kkkrkp 654 | 3-5 c: kgmccc 655 | 2-8 h: rhhhnhhxh 656 | 1-18 s: sbrblpcrxsvdsjrnwwws 657 | 6-10 q: qbqqzqqhbdq 658 | 1-3 d: sdwgdn 659 | 3-6 s: ssssssss 660 | 2-13 f: ffffrrfffflbvffff 661 | 5-7 w: pxwnfnwzj 662 | 17-18 z: zzzzzzzzzzzzzzzzbzzz 663 | 7-8 p: pplplpbfppp 664 | 1-8 x: xxkzdxzx 665 | 3-4 p: jppxp 666 | 4-6 j: jthbzjmqjzj 667 | 1-12 x: xxxxxxxxxxxxxx 668 | 8-19 g: ggggggqgwmgggwggmlg 669 | 5-9 b: bxbbbgwbbnxbhbbb 670 | 5-6 n: nnnnnd 671 | 5-9 b: bwjxbbwbb 672 | 4-14 d: ddlddkdddddddl 673 | 2-3 t: jqjt 674 | 2-3 h: shhp 675 | 12-14 p: ppppppxppjfmpdzppp 676 | 7-10 f: lnffvfcfzffffft 677 | 3-8 s: lqhrstvsr 678 | 15-16 v: vvvvvvmvvvvvvvvvv 679 | 2-4 h: hhhh 680 | 5-8 g: wmtxgdgg 681 | 3-6 r: rfrrrg 682 | 8-12 q: qqqqqqqqqqqq 683 | 4-9 z: zzzzzpzzw 684 | 14-19 g: gdggggggggbggtcggggg 685 | 5-11 n: nnnktnnlndgnnnnn 686 | 5-6 n: nznnnqn 687 | 3-4 q: qqlq 688 | 12-13 g: ggggggggggggg 689 | 16-18 w: wwwwwwwwwwwwmwwxwv 690 | 6-10 b: bbbbbmblbg 691 | 8-13 m: mwmmmcrmmmtsm 692 | 12-17 h: rhhhhnhhhhhlhstkhhh 693 | 9-10 q: qqqqqzqqgt 694 | 2-6 v: vvfvpgw 695 | 8-13 w: mwlxrpbwwwgcwwgn 696 | 1-10 m: mmmmmmmrmxm 697 | 6-8 f: fgvfgfftfffq 698 | 2-6 g: gcggrg 699 | 1-6 x: zxxxvxx 700 | 1-3 t: txtt 701 | 1-2 q: qdqn 702 | 6-7 j: jjjjtjjj 703 | 13-14 r: rrwrrwrrrrrrrfrr 704 | 3-4 j: jjjpj 705 | 12-13 v: vvvvvvvvvvvvv 706 | 4-5 t: tttcw 707 | 4-6 s: sssnxs 708 | 9-11 x: xxxxxxxxcvx 709 | 1-4 d: lpddds 710 | 1-9 t: hbtttttthtt 711 | 1-4 z: bsjzz 712 | 2-5 t: xrtptqt 713 | 1-3 l: lllll 714 | 7-8 m: mmmmmmmj 715 | 11-13 f: ftffqffffgfszfff 716 | 4-5 j: ljjbjbjjjj 717 | 3-11 n: nhnnnnnnjnnnnnbmnqnn 718 | 3-12 s: swgnlssszsqsvfjwxt 719 | 8-9 f: ffffffffn 720 | 3-4 t: gtmt 721 | 8-9 s: spsmnswlt 722 | 7-8 j: jjjnmjjjdjjjqj 723 | 9-10 j: jnjljjjjfgj 724 | 3-7 x: xrxlbhcxmswlpx 725 | 9-11 x: xxwrxxbxxxn 726 | 16-17 d: dbddddmtddddddddddd 727 | 5-17 n: cnnnhnnnjnnvnsnnwgnn 728 | 7-8 m: mmmmmmmm 729 | 11-12 l: lllklllltltmllllll 730 | 4-5 r: rrrrr 731 | 7-8 j: jjjjjjqqjj 732 | 10-12 g: gggtkggggggkggg 733 | 1-5 h: fxxphhz 734 | 1-3 q: jlnq 735 | 4-5 s: fssss 736 | 16-17 c: cccccccccccccccqc 737 | 12-19 q: qqqqqqqqqqpqqqqqqqpq 738 | 7-13 s: gmzvssjsfssjssssx 739 | 3-4 s: ssxs 740 | 15-19 d: ddddddddddtddddddqdd 741 | 5-7 l: lllxqlkl 742 | 10-11 x: xmxxxxxxxfk 743 | 9-14 q: qqqqqtqczqqqqq 744 | 4-8 w: zwmllrwmwmwqwww 745 | 1-4 l: llllz 746 | 14-15 j: jjjjjjjjjjcjjjrjj 747 | 10-13 x: xxxxxxxxhbxlzx 748 | 6-7 f: fffffdj 749 | 9-10 w: msdcwqzwhj 750 | 4-8 c: ccccxccccckcccccccc 751 | 5-11 r: xffrjsvrjzfrrcrpfbr 752 | 2-5 z: zzfwrn 753 | 10-13 r: rrrrrfrrrhrrh 754 | 5-10 d: dddddddddddd 755 | 4-5 z: zzzfs 756 | 9-12 t: ttttttttlttt 757 | 3-4 r: lpjrr 758 | 2-9 v: kkxvvxkvgjtsjtvv 759 | 1-8 v: lprgtpvvv 760 | 4-6 h: hhhnhfb 761 | 2-4 h: hhpxh 762 | 4-9 d: bhqdmddrd 763 | 2-5 w: wwgtwt 764 | 6-7 z: zzzzzszz 765 | 4-5 z: zzzzm 766 | 12-14 d: mddrddddddrdddddd 767 | 9-11 h: sdhzhvhhhkhhhb 768 | 2-3 b: zbbtbbqhm 769 | 4-11 b: bnbqqbjbbzp 770 | 9-10 n: nnnnnmnntj 771 | 11-17 w: wwvwwwwwwwrtwwwwdw 772 | 1-4 t: svbtbxvptfp 773 | 4-5 w: vsbjw 774 | 2-7 m: mmpmmmg 775 | 11-12 j: jjjjjjjfjjxjjm 776 | 6-8 r: rrzrcmrvrr 777 | 1-3 n: nqxnzhq 778 | 3-4 n: nnnkj 779 | 3-5 f: kfffhfthfhf 780 | 3-5 m: gwszmmm 781 | 1-7 c: tbscmrfbmccrqxzdb 782 | 13-14 l: lllllllllllllnll 783 | 4-10 k: pfbwsjvfxkxhfzktdj 784 | 2-6 f: ffffbf 785 | 4-7 w: wwgrwnpbswnz 786 | 5-6 z: zzszzzz 787 | 8-13 p: zpppppgbjpppcpp 788 | 6-7 q: gpqqvwtkxwqjtqdqq 789 | 14-15 n: nnnnnnnnnnnnnkn 790 | 3-6 q: rkqmjqg 791 | 5-6 t: ttttkq 792 | 4-6 r: srrsrrprr 793 | 1-8 v: kvvvvvvxvvvvvvvb 794 | 5-6 z: zzzzzz 795 | 3-4 c: cccccbpsp 796 | 3-12 c: stvxclcbrcjjcgcxlwtq 797 | 13-14 r: nrrrrxrfrrrrrzd 798 | 2-3 r: rmfwl 799 | 1-4 q: qqhq 800 | 11-13 z: zzzmvzzzzzkzzzzzzzz 801 | 4-8 h: hhhxhhhh 802 | 2-3 b: fpbhn 803 | 7-10 v: vgwvvvgvvvvvj 804 | 1-4 m: msmk 805 | 11-12 d: ddddddddfddddd 806 | 15-16 k: kkkkkkkkkkkkkkkk 807 | 8-14 m: mmmmmmmwmvmbmmv 808 | 10-12 m: mmmmmmmmmlmm 809 | 2-7 w: cgbmsww 810 | 6-8 t: ttktttgw 811 | 4-14 z: vsvmwzvhfzxkfzz 812 | 2-4 f: ccgmfhrls 813 | 10-11 k: kfxlsfdkbdkmjptqhh 814 | 6-16 x: nbxxdxwsxxsqmfxqrxmk 815 | 9-17 j: vjjjjvpjgfjxffjxjd 816 | 6-9 g: gvpxggggqgg 817 | 6-8 t: tttttztft 818 | 5-11 q: prklqxrfxjdvgsq 819 | 8-9 k: kkkkkjknk 820 | 2-4 c: chccl 821 | 2-3 x: fxpr 822 | 1-4 v: rzvvpvxp 823 | 3-5 j: cjfrjldr 824 | 3-8 t: zbptntzp 825 | 2-7 c: cccqkcfzgcffssgrcsc 826 | 5-6 q: qqqqdr 827 | 2-6 h: hxfhhghhhk 828 | 1-3 v: lvnhv 829 | 5-6 r: prrrrw 830 | 11-18 z: zfzzzzzzzzdgzzzmzzxz 831 | 5-10 x: kxrncghxldxffzbx 832 | 17-19 k: kkkkkkkkkkkkkkkkjkkk 833 | 7-9 h: hhmhhhdhh 834 | 15-16 x: xxxxxxxxxxxxxxxx 835 | 4-5 c: nzjchwccgbd 836 | 5-6 r: rrrrjrrrr 837 | 9-13 c: ccccccjclcccc 838 | 6-7 z: zjzfzzzszvzz 839 | 6-7 l: llllljll 840 | 6-8 m: mmmmmmms 841 | 3-5 p: pppppp 842 | 14-15 m: mmmmmmmmlmmmnwmm 843 | 6-11 b: bbbbbbbbbwb 844 | 8-10 g: ggjgbgpgggggggdcgb 845 | 9-16 b: bbbbbbcbkbbbbbnbbbbb 846 | 10-11 f: dfbffxfnfksfffrw 847 | 10-11 h: hhhhhhhhhhq 848 | 5-17 v: vvvvjvvwvvvvvvvvvvvv 849 | 2-14 x: xgxxxvfcxxxxtbgxkx 850 | 1-3 k: kkjbm 851 | 18-19 d: dddddddddddddddddxx 852 | 5-9 h: vhjzhkjbhl 853 | 1-4 k: kskk 854 | 7-12 l: lcljknlllclvlldrlpls 855 | 14-15 w: wwwwhwwwwrhwwvq 856 | 5-6 t: wtvdtmqfbnt 857 | 1-4 v: vhvvvv 858 | 8-10 n: nnqcnzrnndnjnnnkn 859 | 6-8 h: hshhqhhdhhfcj 860 | 10-15 j: jjtjjjjjjfzjjjj 861 | 3-5 m: mmdmm 862 | 10-11 n: nnnnnnnnnng 863 | 6-8 p: fzpgppzpthqcthhst 864 | 1-7 p: hzxthvpfnpnrzfpvmv 865 | 10-11 l: llllvswlllll 866 | 1-2 q: jffqfzd 867 | 1-3 x: xljxfw 868 | 5-6 z: fmzzgl 869 | 2-6 v: vbvvvzv 870 | 8-10 r: rrrrrrrnsr 871 | 1-3 c: crctc 872 | 8-10 m: mcmdgxhmhnmmwmzmmg 873 | 4-5 h: hdhhhh 874 | 1-2 z: vzzm 875 | 5-10 z: zzzvnzzzpz 876 | 2-5 f: gfffdff 877 | 1-4 g: lgfgg 878 | 2-4 w: swww 879 | 2-6 c: ccscdz 880 | 6-7 b: bbsbbbjb 881 | 11-16 s: bssrqsslssbcssjrxjk 882 | 5-8 c: ccjmcqcglj 883 | 13-18 l: lllllmvllllxlllllz 884 | 6-7 l: lllllll 885 | 5-6 v: vvvtvvvv 886 | 4-11 v: vvmvwhvvrkd 887 | 4-7 n: knlwnmnnnn 888 | 5-6 p: cqmfxppptplkpp 889 | 7-11 c: clccnptxmcncrccjcc 890 | 1-7 h: fhhfhhzd 891 | 1-11 l: llflllllllllll 892 | 3-4 g: gmgl 893 | 15-16 j: wjjjjjjjjjjjjlhjcjj 894 | 2-8 v: gtvvmgvvbtf 895 | 3-4 t: fpttgzttwt 896 | 4-8 k: klkkkgkkkk 897 | 2-8 p: wsdgtplp 898 | 9-11 q: qqqqqqqqzqv 899 | 1-2 n: nswlnnngxsj 900 | 4-5 p: dgpppkjhvgpgppp 901 | 10-17 j: jjjjjjjjjfjjjjjjk 902 | 2-3 l: lbll 903 | 6-7 n: nhwnnnc 904 | 3-4 s: ssws 905 | 3-9 v: szrvvcxzv 906 | 2-4 p: pgzph 907 | 4-6 g: rxnjtpggwggglp 908 | 10-16 v: vvvvvvvvvvvvvvvjvv 909 | 7-9 j: jljjjmjjj 910 | 6-11 w: wwwwwqwgmwfwwkw 911 | 12-15 w: wqwwwwtwwxwwwfwww 912 | 8-11 v: vvvvvvvvvvd 913 | 7-11 g: dcgpcggpgxggdphgm 914 | 3-5 w: wwrwg 915 | 9-16 b: bbbqbbbbbbbbbbbbb 916 | 7-8 n: tnnnnnnnnn 917 | 3-5 c: ccsctcm 918 | 10-17 f: rfsfffffvffjfnkfq 919 | 6-11 f: fffhffffffp 920 | 10-11 n: hbsnnnntnppdnnzj 921 | 3-4 x: ngxbxxx 922 | 6-11 t: ttbwkznllhtntbdtltt 923 | 5-6 s: sssssms 924 | 15-16 c: ccccccccccccccqc 925 | 3-5 h: jzslhlhh 926 | 7-12 m: mxmjmjmmmmhkm 927 | 7-9 r: mtbfxlrvrddrvgxrxxr 928 | 14-20 m: gmmlpvclmkvfkmjdslvm 929 | 11-17 v: rqvvtmktpvckpvvvv 930 | 15-16 b: bbbbbbbbbbbbjblbbc 931 | 3-5 z: vpsgzfzvxczbnzw 932 | 5-6 j: shlfjc 933 | 10-16 b: bbbbbbbbbbbbbbbsn 934 | 1-7 j: jjjrkrdq 935 | 14-16 x: xbxxxxxxxxxxxjxxx 936 | 2-6 b: vzpnbbpqfbbvcbmbchm 937 | 10-16 x: xxxrxxxvxxxxxqxxxxk 938 | 10-12 j: jjrkjjjjjjjjj 939 | 1-5 l: lxfslmj 940 | 10-16 s: ssssssssssssssszsss 941 | 12-15 r: rrgrrrrrrrrcrrr 942 | 10-11 c: ccctccccccj 943 | 13-14 f: fqgsffffqffffvfffff 944 | 14-15 f: ffffffjffffffqff 945 | 8-14 q: gtqqjqqwwxqvprdqpcqq 946 | 8-11 f: lqqfqpmffffgcs 947 | 6-8 f: frfshkfklf 948 | 10-11 w: wlwwwwwwwwrw 949 | 2-5 q: qqmmqmmqqq 950 | 8-9 g: cjgscgwtg 951 | 1-3 w: wljwwvjdcwnkmn 952 | 4-5 q: qcqqxq 953 | 11-18 g: gqgggvgggghgkggggggg 954 | 8-12 z: tbmbzbzhnppz 955 | 2-3 t: tzttt 956 | 2-5 s: zjlsssssmsss 957 | 8-16 w: mwwqwrwwskwcwwbww 958 | 3-7 t: ttwttttt 959 | 1-4 p: ppclpbpppp 960 | 7-9 c: cccccckcxccccc 961 | 9-13 g: dgggggcgrrggggggg 962 | 4-5 v: vvvvvvvvvvvvvv 963 | 15-16 l: lllllllllnlllsqkl 964 | 2-6 p: pppjptvpkxp 965 | 11-18 j: jjjjjjjjrjcjgjkjjhjj 966 | 2-6 x: znkxkc 967 | 14-15 b: bbbbbbbbtbbbbssbt 968 | 3-8 b: bszbbvbb 969 | 15-16 t: dtttttttxtpttttrttt 970 | 10-11 b: bwbkqbvdbvj 971 | 14-17 k: krjwkfgsqkzjklkkkvxg 972 | 13-16 d: ddddddddddddqddd 973 | 3-15 s: jmsnpmldstjngfmrp 974 | 1-6 s: stssssn 975 | 8-12 b: bbbbbthpwlbb 976 | 3-4 r: rdrf 977 | 10-11 l: glllllllllk 978 | 7-16 m: vxjgnbmmbzsxlhblj 979 | 4-7 b: bsthbwjrkbmptb 980 | 5-7 q: qqdmjqqqq 981 | 2-16 v: rvvvvvvvvvrvvvvvvvv 982 | 2-3 n: nnnbm 983 | 13-16 v: vvvvlvvvvvvxwvvv 984 | 4-6 c: nccccccs 985 | 10-14 q: qdgsqqqqqqqqqqqnq 986 | 4-5 g: gjghg 987 | 2-7 f: fffffqdf 988 | 15-18 f: fxffffdfhflffbfxff 989 | 7-9 w: gpwwcwwwlwbwfkdw 990 | 14-17 q: qqjqqqqqqqqnqhqqrhqq 991 | 1-4 d: djdqkdkddlvdqdt 992 | 4-9 w: qwsvpbwdcngsww 993 | 4-9 b: bbbbbbbbb 994 | 6-15 g: gmdhggngqdfgqsggsvg 995 | 9-16 b: bbbbbbbbdmtbbdbbc 996 | 8-9 k: kkxkkkdkkkzkdp 997 | 1-8 b: bbxbdbnbjcbbb 998 | 15-19 q: qqqqqqvqqqqqqsqqqqq 999 | 3-4 t: tttt 1000 | 2-5 j: bjjjj 1001 | -------------------------------------------------------------------------------- /day2/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) filter foldl' match map elemAt split; 4 | inherit (import ../utils.nix) charList quickElem toInt; 5 | passwordPairs = filter (x: x != []) (split "\n" input); 6 | # parse the passwords into different sections 7 | passwords = filter (x: x != null ) (map (x: match "([0-9]+)-([0-9]+) ([a-z]): ([a-z]+)" x) passwordPairs); 8 | parsedPasswords = map (quickElem (i: [ 9 | (toInt (i 0)) 10 | (toInt (i 1)) 11 | (i 2) 12 | (i 3)])) passwords; 13 | isValid = quickElem (i: let 14 | min = i 0; 15 | max = i 1; 16 | char = i 2; 17 | password = charList (i 3); 18 | charCount = foldl' (a: x: if x == char then a + 1 else a) 0 password; 19 | in 20 | min <= charCount && max >= charCount); 21 | output = foldl' (a: x: if isValid x then a + 1 else a) 0 parsedPasswords; 22 | 23 | in 24 | { inherit quickElem charList parsedPasswords output; } 25 | -------------------------------------------------------------------------------- /day2/part1_2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) filter foldl' fromJSON isList match map split; 4 | inherit (import ../utils.nix) charList quickElem; 5 | passwords = filter isList (split "([0-9]+)-([0-9]+) ([a-z]): ([a-z]+)" input); 6 | parsedPasswords = map (quickElem (i: [ 7 | (fromJSON (i 0)) 8 | (fromJSON (i 1)) 9 | (i 2) 10 | (i 3)])) passwords; 11 | isValid = quickElem (i: let 12 | min = i 0; 13 | max = i 1; 14 | char = i 2; 15 | password = charList (i 3); 16 | charCount = foldl' (a: x: if x == char then a + 1 else a) 0 password; 17 | in 18 | min <= charCount && max >= charCount); 19 | output = foldl' (a: x: if isValid x then a + 1 else a) 0 parsedPasswords; 20 | 21 | in 22 | { inherit quickElem charList parsedPasswords output; } 23 | -------------------------------------------------------------------------------- /day2/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) elemAt foldl' tryEval; 4 | inherit (import ./part1.nix { inherit input; }) quickElem charList parsedPasswords; 5 | isValid = quickElem (i: let 6 | fst = (i 0) - 1; 7 | snd = (i 1) - 1; 8 | char = i 2; 9 | password = charList (i 3); 10 | xor = a: b: a && !b || !a && b; 11 | # account for OOB error 12 | in 13 | (xor ((elemAt password fst) == char) ((elemAt password snd) == char))); 14 | output = foldl' (a: x: if isValid x then a + 1 else a) 0 parsedPasswords; 15 | in 16 | { inherit parsedPasswords output; } 17 | -------------------------------------------------------------------------------- /day3/input: -------------------------------------------------------------------------------- 1 | ...#..............#.#....#..#.. 2 | ...#..#..#..............#..#... 3 | ....#.#.......#............#... 4 | ..##.....##.........#........## 5 | ...#...........#...##.#...#.##. 6 | ..#.#...#....#.....#........#.. 7 | ....##.###.....#..#.......#.... 8 | .#..##...#.....#......#..#..... 9 | ............##.#...#.#.....#.#. 10 | ..........#....#....#.#...#...# 11 | ..##....#.#.#......#.........#. 12 | #.#.........#..............##.. 13 | ....##.##...................... 14 | ....##..#...........#.......... 15 | ..#..#.#........##....#......#. 16 | ..............#..#....#.....#.. 17 | .............#...#.....#...#... 18 | .#...........#..........#...#.. 19 | .#......#.......#......#....... 20 | #..#.............#..#....##.### 21 | ........#.#...........##.#...#. 22 | ......#..#.....##......#....... 23 | .....#.....#....#.............. 24 | #...##.#......#......#...#..... 25 | ...........................#... 26 | ...#....................#.....# 27 | ..#.....#...#.....##.....#..... 28 | ....................#......#..# 29 | .......#.....##......##....#... 30 | #........##...#.....##..#...#.. 31 | ........#..#.#......#..###..#.# 32 | ##.....#.............#.#....#.. 33 | ..#.................#....###### 34 | .#.#..#.....#.#..........#.#... 35 | .........#....#...#............ 36 | ........#..#.....#............. 37 | ............#.#.............##. 38 | ...#....#..#......#............ 39 | .##....#.....#...#.#........... 40 | ..#..............#...........## 41 | .....#.#.##...#................ 42 | ..........#..#.#..........##..# 43 | ..#....#...#...#.....######.... 44 | ....#.#..#........#....#.###... 45 | .......................#....... 46 | ..#.....#.##................#.. 47 | .....#......#..#.....#........# 48 | .#...###.......#.#.........#..# 49 | ............#.................. 50 | ..#.........##.........##...... 51 | #...........#.#.......###.#.... 52 | .#...#.....#.........###.....#. 53 | .#............#........#..#.... 54 | ...##.#......##................ 55 | ........#...#...#...#.......... 56 | .......#.##......##.#.......... 57 | ....##.......#..#....#....#.... 58 | ......#.........###........#... 59 | #....#....####....##......#.... 60 | ......................#....#.#. 61 | ...#.#.#....#.#...#...#......#. 62 | ......#.....##.#...........###. 63 | #........#.........##......#.#. 64 | ....##.....#.....#..#.......... 65 | ......#...#...#.........#...##. 66 | ..#........#..................# 67 | .........#..##.#..#..#...#.#..# 68 | .....#.....#...#.....###.....## 69 | .............#....#...#........ 70 | ..........#.#.#...#..#...#....# 71 | #...............##.......#..... 72 | #...#.............#..#...#....# 73 | ..#...#...##...##...#..#....... 74 | ..#..#........#.#...........#.. 75 | .....#.....#..................# 76 | ....#....##....###..###...##... 77 | ..#......###.........##....#.## 78 | .......#.##...#.......#..#..... 79 | ...#.#.#.#.....##..#..#........ 80 | ................##....#.#...... 81 | ..#...#...#...#.....##.#...#..# 82 | ..#..#.....#..##....#....#..... 83 | .###...#......#........#.....## 84 | ##......#..#........#.......... 85 | ....#...#..#....##..#......#### 86 | .#.....##....#..........#...... 87 | .#...#....#.........#...#....#. 88 | .....#..#.#..#......#..##....#. 89 | ...#.##...#...#........#......# 90 | .#..#...#.#..#.........#...#... 91 | #....#......##.....#.......#... 92 | ..##............##..#.#.#...#.. 93 | ##.......#.......##............ 94 | #......#.##........#...#...#... 95 | .#.#.......##.........#..#.#... 96 | .............##.#........#..... 97 | .#..#...###...#..#............. 98 | .....#...#..#....#.......#..... 99 | #.#.........#.#.#...#...#.#.... 100 | .....#.......#.##.##...#....#.. 101 | .#.##..#.....#...#.#.#.#.#..#.. 102 | ..........#...................# 103 | .....#.#.#...##.........#..#..# 104 | .#..#....##......#...#......... 105 | .##......#......#...#........#. 106 | .....##.#......#............#.# 107 | .#.....##..#...........##...... 108 | .....#......#.......##....#.... 109 | ..#..##..........#.#..........# 110 | #.#.......##..#..##.#....#..... 111 | .......#..#.#.......##......#.# 112 | ....#...##...#..............#.. 113 | .....#.........#......#...##... 114 | #.........#........##..#.....#. 115 | .#.#..#.....##.......#......#.. 116 | ........#..#....#.....###..#... 117 | #.#..#.#..........#............ 118 | ..#......##..#....#.........#.. 119 | #.............................. 120 | .......#............#..#..#.#.. 121 | .#.....#.#....#..#.##.#........ 122 | .......#.###.#........##.#..#.. 123 | ..............#....#.....##.#.. 124 | #..............#....#.###...... 125 | .#..#..#...###............#...# 126 | .#.##...#....#..#...#...#...... 127 | ......##..#..#......#..#....#.. 128 | .........#.......##............ 129 | ...........##...#..#....####... 130 | .#..................#.......... 131 | #...#..#..................#.... 132 | ..............#.....##.....#... 133 | ..#.#..#...##..#.....#.....#..# 134 | ....#....#.#.........#.....#... 135 | .#.......#...#....#...#.#..#..# 136 | #.........##.....##.......#...# 137 | #..#............#....#........# 138 | ..........##...#......#....#... 139 | .......#..##...............#... 140 | #............#.#.#.....#....... 141 | .#........##...#............... 142 | ..##....#.....#..#.##.#......#. 143 | .#...#.............#...#.....#. 144 | ...##....#.......#......#.#..#. 145 | #......................#..#.##. 146 | ...#..........#..#.........#... 147 | ..#......#.......#.#....#...... 148 | ....#............#...#......#.. 149 | .....#..#..##...#...#.........# 150 | .....#......#....#....#........ 151 | .............#..#..........#... 152 | ....#..............#.....#.#... 153 | ....#.................#.#...#.# 154 | .........#.#...........###.#.## 155 | #...........#..##.#....#.##.#.. 156 | #.#.....#...................... 157 | ##.#.........#....##.#.#..#.#.. 158 | #..........#.#.#.#.#..#..##..#. 159 | ..#...#..###.........#......#.. 160 | .....#......#..#.#............# 161 | ...........#...#.#.#.###....#.. 162 | #....#..#.......##.#.......##.. 163 | ..............#.....##.#....... 164 | .#.....#.#..#.........#.#.#..#. 165 | ..#..#..#..#................#.. 166 | ...........#..#.#...#.........# 167 | .#..#..#...#........#...#.#..#. 168 | ...#.#..#......#..#............ 169 | ........#......##.....#....#... 170 | #...#......##.#.#.............. 171 | .#........................#.... 172 | #.#.....#.##.....#..#.#........ 173 | #..........##.#.......#....#..# 174 | #...#..#..#.....#....#....#.... 175 | #...........#..#.#....##.##.... 176 | ##......#..#........#.......##. 177 | #........#..#...#..........#... 178 | ...#...#......##....#.#........ 179 | ...##..#..#.##....#...#........ 180 | #.#..#....#...#........#....... 181 | ..........#.......#..........#. 182 | ......##...#....###...#....#... 183 | ........#..#.....#......#...... 184 | ....#.........##...#..##......# 185 | ....#...........#.#..#.#.#.#..# 186 | ..#......#..#......#........#.# 187 | #..#....#.....#.............#.. 188 | ............................#.. 189 | #...#.#.....#...#....#....#.... 190 | ........#...#...#...#...#...... 191 | .###........#....#.##.....##.#. 192 | .........#.....#..........#.... 193 | .#.........#....##.#.....#..... 194 | #..#....................##.#... 195 | ..##.#.............#....#.#.... 196 | ..#.#........#............##.#. 197 | #........#...##.....#...#.....# 198 | .........#.#..........#....#..# 199 | ...###.#..#.#......#.#.....#... 200 | ......#.....#..#...#........#.. 201 | .......#...#.....#....#....#..# 202 | .#.#........#......##.......#.. 203 | #.................###.......... 204 | #........#.#..#....#..#........ 205 | ..##....#.#...##...#...##....#. 206 | ...#.#......##...#.....#..#.... 207 | #..#........#...###....#....... 208 | ##.#....#..#.#..........#...... 209 | ....#...###...#.....#........#. 210 | ..#.#........#....##.#......... 211 | ......##.##.................##. 212 | .#....##...#.#..#.#............ 213 | .#...###........#......#....... 214 | ##..#.#......#..#..#...#....... 215 | .......##..#....#........#....# 216 | ......#..........#............. 217 | ....##..##..#......#.#......... 218 | .....#....................##... 219 | ...###.....#.....#...#.#.##.#.. 220 | ....#.#..#.......#..#......##.. 221 | .......#.#..#.##.#...#......#.. 222 | ...#.#....#.#...#..##...#...#.. 223 | #.##...#....#..#.............#. 224 | ...#...#...#.......#..........# 225 | .#..#.............#..##.#...... 226 | ....#.......#..............#.#. 227 | ..................#..#.....##.# 228 | .#...#..#......#..........#...# 229 | ..#.#.....#..#....#....#####.#. 230 | .......###.......#....#....#... 231 | ......#.#........#...#......... 232 | ......#..#.#.#....#.#.#....##.. 233 | .#...#.#...##.#......#......... 234 | #....#..##....#.#.......#....#. 235 | ..##.#.....#.....#.........#... 236 | ......#......#....#....#.....#. 237 | ...##.....#....#......#......#. 238 | ......#......##............#.#. 239 | .##.#.......#....#...#....#.... 240 | ....#..#..#...##.......#..#.... 241 | ....#....#...#.#........#..#... 242 | ....#.....#..........#..#...... 243 | ....#....#...#.....#..##.....#. 244 | ##...#..##......#....##..#..#.. 245 | .....##.##..............##..... 246 | #.#....#.##..#....#...##....... 247 | ..#.....##.....#.....######...# 248 | ...#.....#.#.#......#......##.# 249 | ...........##.............#.... 250 | ...##......#..#......#...#..... 251 | ....#.##......#..#....#.#..#... 252 | .#..#....#...#..#.....##....... 253 | .....#..#.................#..#. 254 | ................#..#...#......# 255 | ...##....#.....#..#....##...... 256 | ....##...............##...#.... 257 | ......#..........#..##......... 258 | .......###.......#.........#..# 259 | ......................#....#.#. 260 | #.#.....#...##............#.... 261 | ........#......##......#.....#. 262 | ...#....#....#.#..##.#..#.#.#.. 263 | ..#.#....#.##...#..#.....#.#... 264 | ............#....#..#.......#.. 265 | #...#...#.#......#...##.....#.# 266 | ......#....#....#.......#...... 267 | ....#.......#..........#....#.. 268 | ........#####........#....#.... 269 | ......#....##..............#.#. 270 | ....#....#.......#.......#..... 271 | .##.#....##....#............... 272 | #.....##........#..#.#...#.#... 273 | ...#......##....#.............. 274 | .#.....#.....#.......##....##.. 275 | #....#..........#.#..#......... 276 | ......##..........##.......#... 277 | .##......##.....#.#....#......# 278 | ....#......................#... 279 | .#...........###........#...#.. 280 | #.#..#..#..#...##.#....#.#..#.. 281 | ...##...........#.#..........#. 282 | ......#.#..#....#....#......... 283 | ....#....#.#......#.........##. 284 | .#..#...#...##....#...#......#. 285 | #.#......#...#.#.#...........#. 286 | ##.....#..........##....##..##. 287 | ...#.#.....#..##........#...... 288 | ..#........##........#..#...... 289 | .......#...............##..#... 290 | .......#.#....#..###........... 291 | .............#........#...#.... 292 | #.................#......#..#.. 293 | ...#....#..#..............#...# 294 | .............#....##....#..##.. 295 | #........#..........##...##...# 296 | ............#....#.....#.#....# 297 | .....#..............##..#...#.. 298 | ..#....#......###....#.#...##.. 299 | ....##......#.....#....#....... 300 | .....#...............#.....#... 301 | .#.....#.....#..............#.. 302 | #................#..#.......... 303 | .##....#....#.....#............ 304 | #.####...#..#..#....#.......... 305 | ..##........##.....##......#..# 306 | ......#.....#...##.........##.. 307 | ....##..#.....#.#.........#...# 308 | .....##..#....#....#.#...#..#.. 309 | ...#............#...........#.. 310 | .......#.#..#.#.#..#........#.# 311 | ....#.#........#.#.#..#...#...# 312 | ..#....#....#..#......#........ 313 | .#...........................#. 314 | .#..#....####........##......#. 315 | .#.....#..#.#.................# 316 | .#..#...........#...#....#...#. 317 | ......##..#........#..#....#... 318 | ..#.............#....#........# 319 | #.#..........#.##.......#.#..#. 320 | ..#....#...#...............#... 321 | ..............#..........#..#.. 322 | ..#.....#.#.....#...#...#..#... 323 | .........#...###.#...#........# 324 | -------------------------------------------------------------------------------- /day3/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) filter length head split foldl'; 4 | inherit (import ../utils.nix) quickElem mod simpleSplit charList; 5 | lines = simpleSplit "\n" input; 6 | chars = map charList lines; 7 | output = foldl' (a: quickElem (i: { 8 | pos = mod (a.pos + 3) (length (head chars)); 9 | value = if i a.pos == "#" then a.value + 1 else a.value; 10 | })) { 11 | pos = 0; 12 | value = 0; 13 | } chars; 14 | in 15 | output // { inherit chars lines mod quickElem; } 16 | -------------------------------------------------------------------------------- /day3/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) chars mod quickElem; 4 | inherit (builtins) elemAt foldl' head length; 5 | inherit (import ../utils.nix) product; 6 | calculateTrees = tuple: let 7 | j = elemAt tuple; 8 | right = j 0; 9 | down = j 1; 10 | in 11 | foldl' (a: quickElem (i: 12 | if a.down > 1 then a // { down = a.down - 1; } 13 | else { 14 | inherit down; 15 | pos = mod (a.pos + right) (length (head chars)); 16 | value = if i a.pos == "#" then a.value + 1 else a.value; 17 | })) { 18 | pos = 0; 19 | down = 1; 20 | value = 0; 21 | } chars; 22 | outList = map calculateTrees [[1 1] [3 1] [5 1] [7 1] [1 2]]; 23 | output = product (map (x: x.value ) outList); 24 | in 25 | { inherit outList output; } 26 | 27 | -------------------------------------------------------------------------------- /day4/input: -------------------------------------------------------------------------------- 1 | eyr:2024 pid:662406624 hcl:#cfa07d byr:1947 iyr:2015 ecl:amb hgt:150cm 2 | 3 | iyr:2013 byr:1997 hgt:182cm hcl:#ceb3a1 4 | eyr:2027 5 | ecl:gry cid:102 pid:018128535 6 | 7 | hgt:61in iyr:2014 pid:916315544 hcl:#733820 ecl:oth 8 | 9 | hcl:#a97842 10 | eyr:2026 byr:1980 ecl:grn pid:726519569 hgt:184cm cid:132 iyr:2011 11 | 12 | ecl:grn hcl:#6b5442 pid:619743219 cid:69 hgt:176cm eyr:2027 iyr:2012 13 | byr:1980 14 | 15 | ecl:brn byr:1969 iyr:2014 16 | hgt:164cm eyr:2020 pid:982796633 hcl:#602927 17 | 18 | ecl:gmt 19 | iyr:1987 eyr:2039 pid:15115163 byr:2006 20 | hcl:bfab0d 21 | 22 | cid:117 23 | hcl:#efcc98 24 | iyr:2010 pid:322719183 25 | hgt:176cm 26 | eyr:2020 27 | byr:1957 28 | ecl:brn 29 | 30 | byr:1954 hgt:178cm hcl:#38f7fd pid:838813262 ecl:blu 31 | eyr:2029 iyr:2019 32 | 33 | eyr:2023 ecl:amb iyr:2020 byr:1927 pid:242570886 hcl:#18171d hgt:192cm 34 | 35 | iyr:1990 cid:295 hgt:131 pid:187cm byr:2014 36 | ecl:xry hcl:z 37 | eyr:1928 38 | 39 | ecl:hzl 40 | byr:1953 41 | eyr:2023 hcl:#866857 42 | hgt:181cm iyr:2010 pid:568185567 43 | 44 | byr:2030 hcl:#fffffd ecl:#a4a596 hgt:168cm 45 | iyr:1936 eyr:2020 cid:296 pid:168786676 46 | 47 | byr:2030 iyr:2026 eyr:1974 hcl:7fcaa5 ecl:utc 48 | pid:190cm 49 | hgt:67cm 50 | 51 | byr:2023 eyr:2037 hgt:59cm 52 | ecl:lzr hcl:z iyr:2026 pid:#ea9083 53 | 54 | byr:2003 hcl:z hgt:91 iyr:1990 eyr:2024 ecl:#123d73 55 | pid:48494230 56 | 57 | byr:2022 eyr:2020 iyr:2030 ecl:gmt 58 | hgt:191cm pid:3509331253 hcl:#888785 59 | 60 | iyr:1994 61 | ecl:#c3d564 byr:2009 62 | hgt:162cm hcl:336498 pid:#e99d09 63 | cid:288 64 | eyr:1921 65 | 66 | byr:1924 cid:290 iyr:2010 ecl:amb eyr:2020 67 | hgt:156cm hcl:#7d3b0c pid:795497164 68 | 69 | cid:301 iyr:2017 hgt:67cm 70 | hcl:#888785 ecl:#0405b9 byr:1964 pid:707857518 eyr:1976 71 | 72 | ecl:gry pid:474303066 73 | iyr:2011 hcl:#18171d hgt:165cm byr:1921 eyr:2024 74 | 75 | hcl:#6b5442 ecl:amb iyr:2020 hgt:191cm 76 | byr:1949 cid:301 77 | pid:075846582 eyr:2029 78 | 79 | hcl:#a97842 cid:186 iyr:2014 80 | ecl:gry 81 | hgt:191cm eyr:2023 pid:645548969 82 | byr:1956 83 | 84 | pid:154cm hcl:z ecl:gmt iyr:1989 hgt:69in cid:53 byr:2010 85 | 86 | hgt:72cm byr:2023 87 | eyr:2034 hcl:z ecl:#f5249e iyr:1997 pid:#79af7a 88 | 89 | eyr:2038 byr:2015 90 | hgt:70cm ecl:grt hcl:9d58a1 iyr:1926 pid:6290928420 91 | 92 | pid:620857794 eyr:2022 93 | byr:1950 94 | hgt:159cm 95 | hcl:#ceb3a1 ecl:amb iyr:2015 96 | 97 | eyr:1954 ecl:#ab2ce4 pid:#14eedd 98 | iyr:2009 99 | hcl:29e484 100 | byr:2022 hgt:73cm 101 | 102 | hgt:59cm byr:2026 cid:245 iyr:2020 103 | eyr:2029 pid:073943129 ecl:hzl 104 | hcl:#b6652a 105 | 106 | iyr:2014 byr:2015 hcl:#a97842 eyr:2029 107 | pid:#132098 108 | hgt:150 ecl:oth 109 | 110 | hgt:151in ecl:#967d49 eyr:2026 hcl:#18171d 111 | pid:384230726 byr:1934 112 | iyr:2018 113 | 114 | iyr:2020 eyr:2021 byr:1937 pid:735047371 cid:159 ecl:blu hgt:177cm hcl:#22b774 115 | 116 | ecl:brn hcl:#6b5442 pid:117807698 cid:105 iyr:2016 byr:1977 hgt:183cm 117 | 118 | ecl:hzl hcl:#6b5442 byr:1933 119 | iyr:2019 pid:348486702 120 | eyr:2020 hgt:193cm 121 | 122 | byr:1928 123 | ecl:gry 124 | eyr:2028 hcl:#fffffd pid:571149069 125 | iyr:2012 hgt:175cm 126 | 127 | pid:359108298 128 | eyr:2027 hgt:158cm ecl:amb iyr:2016 129 | hcl:#602927 130 | 131 | iyr:2027 byr:2015 132 | hgt:191in pid:102033301 ecl:xry 133 | eyr:2031 hcl:#602927 134 | 135 | ecl:oth cid:163 hcl:z iyr:2014 136 | byr:1944 hgt:173cm 137 | eyr:2027 pid:#0524c1 138 | 139 | ecl:brn 140 | byr:2030 hgt:71cm eyr:1931 cid:165 iyr:2010 hcl:#cfa07d 141 | pid:509642098 142 | 143 | hgt:166 iyr:2020 cid:308 144 | eyr:2022 pid:950463527 145 | byr:2017 146 | hcl:z 147 | 148 | ecl:amb 149 | eyr:2023 byr:1924 150 | pid:901038027 hgt:70in 151 | iyr:2010 hcl:z 152 | 153 | byr:1972 154 | iyr:2013 155 | hcl:d669ad hgt:64cm cid:247 ecl:#19aa26 eyr:2023 156 | 157 | hgt:71 hcl:#fffffd 158 | byr:1976 cid:108 eyr:2038 159 | ecl:grt iyr:2018 pid:190cm 160 | 161 | iyr:2017 162 | byr:1963 ecl:grn hgt:175cm 163 | pid:160915270 eyr:2028 hcl:#cfa07d 164 | 165 | pid:569740130 hgt:171cm hcl:#733820 166 | ecl:gry eyr:2024 iyr:2020 byr:1973 167 | 168 | byr:1937 169 | iyr:2016 ecl:gry hgt:181cm pid:521705827 hcl:#b6652a eyr:2027 cid:295 170 | 171 | hgt:156cm ecl:blu iyr:2019 hcl:#866857 172 | pid:662418718 byr:2000 eyr:2024 173 | 174 | byr:1971 pid:693616099 175 | hcl:#efcc98 176 | hgt:175cm iyr:2016 ecl:gry 177 | eyr:2023 178 | 179 | iyr:2013 180 | eyr:2024 181 | ecl:gry 182 | pid:414295491 byr:1986 183 | hgt:188cm hcl:#b6652a 184 | 185 | eyr:2022 byr:1975 iyr:2020 186 | ecl:grn cid:68 hcl:#a97842 187 | hgt:151cm pid:229803943 188 | 189 | cid:258 iyr:2012 190 | ecl:hzl 191 | byr:2001 192 | eyr:2021 193 | hcl:#866857 pid:990590217 hgt:172cm 194 | 195 | cid:339 byr:1957 hcl:#866857 pid:343480061 eyr:2039 196 | hgt:191cm 197 | iyr:2021 198 | ecl:utc 199 | 200 | cid:281 hcl:z ecl:blu 201 | byr:2020 pid:132694306 eyr:2020 iyr:1953 202 | 203 | hcl:#602927 204 | byr:1933 eyr:2028 205 | hgt:165cm ecl:gry iyr:2018 pid:658484617 206 | 207 | ecl:oth 208 | hgt:188cm cid:110 pid:056975690 iyr:2016 byr:1950 eyr:2023 hcl:#cfa07d 209 | 210 | cid:342 hcl:#fffffd eyr:2024 211 | pid:153555359 byr:1974 212 | ecl:gry hgt:191cm iyr:2020 213 | 214 | byr:2019 ecl:#160ed3 eyr:1999 hcl:z 215 | cid:146 pid:195693972 hgt:159cm 216 | 217 | iyr:2015 eyr:2030 hgt:191cm byr:1979 218 | ecl:#ec4873 pid:994113786 hcl:#cfa07d 219 | 220 | pid:552331609 221 | ecl:grn 222 | hgt:171cm eyr:2022 hcl:#b6652a 223 | iyr:2020 byr:1931 224 | 225 | hgt:177cm iyr:2010 pid:934058099 226 | eyr:2020 227 | ecl:blu 228 | byr:1967 229 | cid:112 hcl:#7d3b0c 230 | 231 | iyr:2028 232 | hgt:138 233 | cid:180 hcl:z 234 | eyr:2022 pid:3286566621 byr:2002 235 | 236 | eyr:2020 237 | iyr:2019 238 | hcl:#a97842 pid:149148750 ecl:brn hgt:159cm 239 | byr:1981 cid:339 240 | 241 | cid:344 242 | eyr:2021 byr:1968 pid:777786047 243 | ecl:grn hgt:192cm hcl:#888785 244 | iyr:2015 245 | 246 | hgt:173cm 247 | eyr:2030 248 | hcl:#733820 pid:610226642 byr:1954 cid:80 249 | iyr:2013 ecl:blu 250 | 251 | byr:1999 eyr:2023 252 | ecl:amb pid:912145128 253 | hgt:181cm 254 | iyr:2015 hcl:#a97842 255 | 256 | eyr:2027 hgt:188cm 257 | pid:080715145 hcl:#341e13 iyr:2013 258 | ecl:oth 259 | byr:1965 260 | 261 | hgt:170cm byr:1950 iyr:2013 262 | pid:010541784 263 | eyr:2027 ecl:zzz 264 | hcl:a3bae8 265 | 266 | hgt:190cm eyr:2024 ecl:#6dcedc pid:909319684 267 | iyr:2011 byr:1959 hcl:z cid:182 268 | 269 | eyr:2028 270 | iyr:2016 hcl:#623a2f pid:208417572 byr:1929 cid:137 ecl:hzl 271 | hgt:167cm 272 | 273 | hcl:#6b5442 274 | ecl:grn 275 | byr:1938 276 | eyr:2023 cid:307 277 | hgt:59in iyr:2014 pid:205268145 278 | 279 | pid:047489285 eyr:2026 280 | hcl:#b6652a byr:1920 281 | iyr:2015 282 | hgt:183cm ecl:gry 283 | 284 | ecl:blu hcl:#508e8b iyr:2016 eyr:1954 hgt:151cm pid:086752750 byr:1920 285 | 286 | iyr:2011 byr:1981 hgt:186cm 287 | cid:117 hcl:#6b5442 ecl:amb 288 | pid:756830713 eyr:2026 289 | 290 | eyr:2037 pid:364464758 hcl:z ecl:grn 291 | hgt:112 iyr:2013 byr:2022 292 | 293 | ecl:hzl 294 | cid:65 pid:679487194 295 | byr:1986 hgt:169cm hcl:#cfa07d eyr:2025 iyr:2013 296 | 297 | cid:192 298 | byr:1921 pid:#5fe831 ecl:#fbb2b9 hgt:62cm eyr:1971 iyr:2024 299 | hcl:z 300 | 301 | hcl:#cfa07d eyr:2026 302 | hgt:74in 303 | iyr:2019 304 | ecl:xry 305 | pid:622690982 byr:1982 306 | 307 | eyr:2026 pid:523515724 iyr:2013 byr:1973 hgt:167cm 308 | ecl:grn hcl:#866857 309 | 310 | byr:2009 311 | eyr:1985 pid:484497014 ecl:#0bfcf2 iyr:1992 cid:131 hcl:39d6b0 hgt:177in 312 | 313 | eyr:2020 iyr:2016 ecl:brn hcl:#ceb3a1 byr:1966 pid:696621560 cid:62 314 | hgt:59in 315 | 316 | hgt:166cm hcl:#7d3b0c 317 | iyr:2016 318 | ecl:brn pid:190cm 319 | eyr:2020 320 | byr:2001 321 | 322 | eyr:2021 323 | iyr:2012 hcl:#6b5442 324 | ecl:amb hgt:169cm 325 | pid:969150085 326 | byr:1925 327 | 328 | ecl:brn hgt:175cm byr:1992 iyr:2016 pid:415209726 eyr:2027 329 | cid:72 hcl:#866857 330 | 331 | iyr:2017 332 | hcl:#733820 byr:1938 eyr:2020 pid:274486958 hgt:163cm 333 | 334 | hcl:4f5dd1 cid:336 ecl:grn iyr:1931 pid:6212280197 335 | byr:2016 eyr:2037 336 | hgt:187in 337 | 338 | iyr:2017 byr:1940 eyr:2025 pid:115098205 hgt:151cm 339 | ecl:grn 340 | cid:122 341 | hcl:#6b5442 342 | 343 | hcl:#efcc98 344 | iyr:2020 pid:709548547 hgt:179cm 345 | eyr:2030 ecl:gry byr:1975 346 | 347 | cid:217 hcl:#888785 eyr:2029 348 | ecl:hzl iyr:2013 pid:160053490 349 | hgt:166cm byr:1992 350 | 351 | eyr:2024 cid:188 iyr:2016 hcl:ff3a59 ecl:xry pid:296357512 byr:2026 352 | 353 | hgt:154cm iyr:2010 354 | ecl:blu pid:717041634 byr:1928 cid:123 355 | eyr:2027 356 | hcl:#a97842 357 | 358 | pid:391011205 ecl:hzl hgt:191cm iyr:2016 eyr:2028 cid:281 byr:1934 359 | 360 | byr:1937 hgt:65in 361 | pid:667975382 ecl:gry cid:270 eyr:2024 362 | iyr:2012 363 | 364 | hgt:179cm pid:065528723 365 | hcl:#888785 byr:1937 eyr:2028 366 | iyr:2013 ecl:hzl 367 | 368 | iyr:2027 cid:261 eyr:2037 ecl:#ced7d5 pid:157cm 369 | hcl:3a80c1 byr:2029 hgt:187in 370 | 371 | eyr:2028 372 | hgt:157cm hcl:#733820 373 | iyr:2012 ecl:blu byr:1952 pid:915063263 cid:335 374 | 375 | eyr:2023 hcl:#efcc98 pid:490625944 byr:1961 ecl:grn hgt:155cm iyr:2018 376 | 377 | cid:247 pid:2807544665 eyr:2021 378 | ecl:oth 379 | hgt:191cm 380 | byr:1928 381 | iyr:2013 hcl:#623a2f 382 | 383 | eyr:2015 384 | byr:2021 385 | hcl:40d2fc hgt:69cm pid:159cm ecl:gmt 386 | 387 | hgt:175cm eyr:1992 cid:328 pid:263110997 ecl:#e53989 byr:2014 hcl:#a97842 iyr:2026 388 | 389 | pid:491396731 eyr:2027 hgt:172cm hcl:#623a2f cid:92 iyr:2017 byr:1983 ecl:grn 390 | 391 | hcl:#fffffd 392 | iyr:2018 byr:1983 pid:714591144 ecl:grn eyr:2021 393 | hgt:160cm 394 | 395 | eyr:2027 396 | hgt:63in ecl:blu byr:1987 pid:397963077 iyr:2018 hcl:#ceb3a1 397 | 398 | eyr:2027 399 | hgt:184cm 400 | hcl:#6b5442 iyr:2012 byr:1984 ecl:blu pid:196287205 401 | 402 | iyr:1998 403 | ecl:hzl 404 | pid:7872103596 byr:1991 405 | cid:275 eyr:2039 406 | hgt:174cm hcl:0d2ad6 407 | 408 | iyr:2010 hcl:#efcc98 409 | byr:1992 hgt:65cm eyr:2038 pid:383236012 cid:68 ecl:lzr 410 | 411 | hgt:190in cid:127 412 | byr:1947 pid:515728209 hcl:#733820 iyr:2014 ecl:amb eyr:2020 413 | 414 | iyr:2017 eyr:2028 415 | hcl:#623a2f 416 | byr:1964 ecl:grn pid:198467794 hgt:169cm 417 | 418 | ecl:utc 419 | hgt:59cm byr:2007 iyr:2030 420 | hcl:7ac4db eyr:2038 pid:#7206c6 421 | 422 | iyr:2010 423 | hcl:z eyr:2021 ecl:brn 424 | hgt:173 cid:86 425 | pid:194240791 byr:1975 426 | 427 | pid:9347286034 428 | hgt:63cm 429 | iyr:1992 eyr:2034 hcl:66031b ecl:grt byr:1929 430 | 431 | pid:593398904 byr:1939 iyr:2019 hcl:#b6652a ecl:gry eyr:2023 432 | hgt:70cm 433 | 434 | byr:1991 435 | iyr:2019 hgt:164cm pid:282852411 cid:340 ecl:amb 436 | hcl:#341e13 eyr:2027 437 | 438 | eyr:2020 439 | iyr:2014 ecl:grn hcl:#866857 hgt:158cm 440 | byr:1931 pid:321748597 441 | 442 | cid:98 byr:2023 iyr:2019 pid:#48f79f 443 | hcl:73c882 eyr:1973 hgt:151in 444 | ecl:utc 445 | 446 | iyr:2023 447 | hcl:#18171d 448 | pid:52221892 eyr:2039 449 | byr:2008 hgt:72cm ecl:#db8d14 450 | 451 | iyr:1966 cid:274 452 | eyr:2034 pid:12256322 453 | byr:2006 ecl:dne 454 | hcl:985c2d 455 | 456 | hcl:#fd033b 457 | eyr:2026 ecl:blu 458 | iyr:2016 459 | byr:1953 hgt:157cm 460 | pid:502619036 461 | 462 | byr:2015 pid:159cm iyr:2025 463 | hgt:158cm eyr:1943 hcl:z ecl:grn 464 | 465 | ecl:blu iyr:2016 466 | pid:842400950 467 | hcl:#733820 468 | cid:266 469 | eyr:2027 byr:1931 470 | hgt:161cm 471 | 472 | iyr:2017 hgt:190cm byr:1994 pid:706570967 473 | ecl:hzl hcl:#18171d 474 | cid:180 475 | 476 | cid:197 pid:204952666 ecl:amb 477 | hgt:70in iyr:2016 byr:1936 hcl:#98cbe3 eyr:2025 478 | 479 | pid:555499128 480 | byr:1971 hgt:71in 481 | cid:83 ecl:blu 482 | hcl:#cfa07d eyr:2027 483 | 484 | ecl:hzl iyr:2014 485 | pid:30428184 cid:237 486 | hgt:171cm byr:1942 hcl:#888785 eyr:1986 487 | 488 | eyr:2025 489 | pid:579385370 hgt:193cm 490 | hcl:#c0946f byr:1979 iyr:2016 491 | ecl:amb cid:284 492 | 493 | eyr:2029 byr:1946 pid:278271295 494 | ecl:grn 495 | hcl:#cfa07d cid:271 496 | hgt:172cm 497 | iyr:2020 498 | 499 | pid:731752614 eyr:2020 byr:1983 500 | cid:248 ecl:oth hgt:179cm 501 | iyr:2017 hcl:#fffffd 502 | 503 | hcl:z 504 | cid:203 eyr:2032 ecl:#3f9d3d hgt:65cm pid:4042846885 byr:2019 505 | iyr:1946 506 | 507 | hgt:171cm ecl:gry eyr:2027 508 | iyr:2013 509 | hcl:#7d3b0c pid:92288579 510 | byr:1955 511 | 512 | ecl:brn hgt:164cm byr:1969 hcl:#cbf9c9 pid:022724981 eyr:2030 iyr:2013 cid:244 513 | 514 | hgt:162cm byr:1974 iyr:2015 pid:927525094 hcl:#3d3011 ecl:blu 515 | eyr:2023 516 | 517 | hgt:157cm 518 | eyr:2020 519 | pid:221286943 hcl:#fffffd ecl:amb iyr:2018 byr:1945 520 | 521 | iyr:2019 522 | eyr:2025 byr:1997 pid:341544323 hgt:174cm cid:113 523 | ecl:hzl 524 | 525 | pid:138492032 hcl:e35302 ecl:#caaede 526 | eyr:1931 527 | byr:2001 hgt:156 iyr:1998 528 | 529 | pid:912182030 cid:189 hgt:162 hcl:#277b39 530 | iyr:2013 eyr:2023 byr:2023 ecl:blu 531 | 532 | eyr:2027 hcl:#fffffd 533 | ecl:brn 534 | cid:304 iyr:2016 byr:1969 535 | pid:866607511 hgt:192cm 536 | 537 | hgt:64in 538 | ecl:amb 539 | byr:1958 540 | pid:720439412 541 | iyr:2015 eyr:2022 hcl:#ceb3a1 542 | 543 | eyr:2024 hgt:159cm 544 | pid:187867283 iyr:2016 545 | ecl:oth hcl:#fffffd 546 | byr:1988 547 | 548 | ecl:#910bf2 byr:1969 iyr:2011 hcl:z eyr:2024 pid:579502502 549 | cid:103 hgt:174cm 550 | 551 | pid:718692455 552 | eyr:2028 553 | iyr:2016 554 | hcl:#602927 555 | ecl:blu byr:1954 556 | cid:251 hgt:182cm 557 | 558 | eyr:2021 hcl:#341e13 ecl:amb 559 | byr:1933 hgt:179cm iyr:2011 pid:083172316 560 | 561 | iyr:1998 hcl:z eyr:1944 562 | byr:2006 pid:453368738 563 | hgt:160 ecl:#9da5f1 cid:261 564 | 565 | hcl:#7d3b0c 566 | iyr:2018 567 | hgt:164cm eyr:2020 byr:1940 ecl:blu 568 | 569 | pid:993701676 eyr:2028 ecl:gry 570 | byr:1951 hcl:#888785 cid:116 571 | iyr:2020 572 | hgt:192cm 573 | 574 | hcl:z eyr:2033 575 | ecl:lzr iyr:2029 cid:326 hgt:68cm byr:2026 576 | pid:96742419 577 | 578 | hcl:#a97842 ecl:brn 579 | byr:1920 580 | hgt:173cm iyr:2015 581 | eyr:2024 pid:176967666 582 | 583 | byr:1930 eyr:2025 pid:792694131 584 | hgt:179cm ecl:brn 585 | hcl:#a97842 586 | iyr:2015 587 | 588 | hgt:167cm byr:1960 eyr:2022 hcl:#efcc98 589 | cid:87 ecl:blu iyr:2012 590 | pid:431515059 591 | 592 | hcl:#cfa07d 593 | eyr:2023 594 | hgt:188cm ecl:grn pid:081575957 byr:1938 iyr:2012 595 | 596 | iyr:2010 byr:1973 597 | cid:108 598 | eyr:2026 599 | pid:880191154 hcl:#888785 hgt:181cm 600 | ecl:brn 601 | 602 | eyr:2021 iyr:2010 byr:1942 hcl:#7d3b0c ecl:hzl pid:886241926 hgt:171cm 603 | 604 | cid:53 byr:1993 605 | pid:150cm eyr:2035 606 | hcl:#888785 hgt:153cm ecl:#128262 iyr:2021 607 | 608 | ecl:gry 609 | pid:555911148 610 | hcl:#733820 eyr:2022 hgt:154cm iyr:2012 611 | byr:1935 cid:338 612 | 613 | hcl:#b6652a 614 | pid:833873846 iyr:2012 615 | hgt:167cm eyr:2023 byr:1984 616 | 617 | eyr:2024 618 | ecl:blu byr:1955 619 | hcl:#b6652a pid:517975316 iyr:2010 hgt:166cm 620 | 621 | pid:133785752 622 | ecl:blu 623 | eyr:2024 624 | byr:1973 625 | iyr:2019 hcl:#fffffd 626 | cid:236 hgt:173cm 627 | 628 | cid:222 629 | byr:2013 hcl:z eyr:2036 pid:7443967478 ecl:brn 630 | iyr:2030 hgt:62cm 631 | 632 | hgt:193cm cid:259 633 | hcl:#18171d 634 | ecl:grn 635 | byr:1995 pid:727880050 eyr:2030 iyr:2010 636 | 637 | hcl:#c0946f cid:275 eyr:1954 pid:772184635 ecl:#76add7 byr:2009 iyr:2018 hgt:151cm 638 | 639 | ecl:#52ed0f eyr:2033 hcl:#18171d pid:475397948 640 | byr:1946 iyr:2028 hgt:178cm 641 | 642 | iyr:2012 hgt:152cm 643 | eyr:2027 byr:1923 ecl:brn 644 | hcl:#18171d pid:513722888 cid:171 645 | 646 | iyr:2029 647 | hgt:111 hcl:z ecl:#33e3bc eyr:1930 648 | byr:1934 pid:94036732 649 | 650 | hgt:154cm eyr:2024 hcl:#6b5442 iyr:2017 651 | byr:1974 652 | ecl:amb pid:470968353 cid:345 653 | 654 | hgt:184cm hcl:#617375 eyr:2028 655 | byr:1975 ecl:oth 656 | iyr:2018 pid:735589126 657 | 658 | cid:261 659 | hcl:#cfa07d pid:213013397 660 | hgt:187cm 661 | ecl:gry iyr:2016 662 | 663 | hcl:#623a2f 664 | ecl:#34964b eyr:2009 pid:169cm byr:2028 hgt:169cm 665 | iyr:2028 666 | 667 | eyr:2029 iyr:2016 668 | byr:1985 669 | hgt:192cm hcl:#602927 cid:167 670 | ecl:blu pid:620818510 671 | 672 | eyr:2029 673 | byr:1968 674 | ecl:blu 675 | hgt:183cm iyr:2011 pid:952376140 hcl:#efcc98 676 | 677 | iyr:2020 678 | byr:1981 pid:850136149 eyr:2028 hgt:159cm hcl:#7d3b0c 679 | ecl:brn 680 | 681 | ecl:brn pid:480452858 hgt:65in cid:340 eyr:2022 682 | byr:1946 683 | hcl:#602927 iyr:2015 684 | 685 | hgt:172 hcl:z eyr:1958 iyr:1941 byr:2019 pid:389995951 ecl:dne 686 | 687 | byr:2025 hcl:4c8dcd 688 | hgt:177in 689 | ecl:#55d635 690 | cid:197 pid:91192572 691 | iyr:1921 eyr:2038 692 | 693 | iyr:2027 pid:154cm 694 | hgt:185in byr:2012 695 | eyr:2036 hcl:efd47d 696 | ecl:#64f98d 697 | cid:86 698 | 699 | eyr:2029 pid:837224515 ecl:grn cid:231 hcl:#733820 iyr:2019 700 | hgt:159cm 701 | byr:1977 702 | 703 | pid:974518338 byr:1964 hcl:#cfa07d ecl:grn eyr:2030 704 | hgt:61in 705 | iyr:2019 706 | 707 | iyr:2019 708 | hgt:192in cid:94 709 | eyr:1922 710 | byr:1925 hcl:z ecl:utc pid:#081266 711 | 712 | eyr:2027 iyr:2019 cid:328 byr:1961 hcl:#6b5442 ecl:blu hgt:177cm pid:235426720 713 | 714 | byr:1959 715 | eyr:2025 716 | pid:890034625 ecl:oth 717 | hgt:62in cid:348 hcl:#733820 718 | 719 | hgt:161cm iyr:2018 pid:916160791 ecl:grn 720 | byr:1951 hcl:#44d03a eyr:2025 721 | 722 | hgt:158cm byr:1942 iyr:2012 hcl:#602927 723 | eyr:2026 ecl:gry pid:651231060 724 | 725 | ecl:hzl cid:340 pid:086942161 byr:1986 hcl:#a97842 iyr:2018 726 | eyr:2028 727 | hgt:181cm 728 | 729 | ecl:blu 730 | pid:278922687 cid:238 iyr:2018 hgt:153cm eyr:2027 731 | byr:1965 732 | hcl:#733820 733 | 734 | eyr:2023 cid:208 hgt:178cm hcl:#341e13 byr:1937 pid:290981079 iyr:2010 ecl:grn 735 | 736 | hcl:#888785 737 | ecl:amb 738 | byr:1943 pid:559804716 eyr:2026 hgt:166cm 739 | iyr:2019 740 | 741 | pid:947831563 742 | ecl:gry 743 | byr:1960 hcl:#341e13 744 | iyr:2016 hgt:173cm eyr:2029 745 | 746 | ecl:blu iyr:2016 pid:724632073 hcl:#623a2f 747 | eyr:2028 hgt:192cm byr:1958 748 | 749 | byr:2021 750 | eyr:2016 hcl:z iyr:1988 pid:65353943 751 | ecl:#bb553b 752 | hgt:125 753 | 754 | hcl:#efcc98 byr:1963 pid:290433211 eyr:2023 ecl:hzl 755 | hgt:172cm iyr:2013 756 | 757 | iyr:2015 ecl:brn 758 | byr:2023 hcl:#18171d 759 | pid:325330679 760 | hgt:190in eyr:2023 761 | 762 | pid:745674970 hgt:160cm eyr:2021 byr:1925 ecl:gry hcl:#341e13 iyr:2015 763 | cid:297 764 | 765 | eyr:2021 766 | pid:596411633 767 | byr:1947 ecl:blu cid:191 hcl:#341e13 hgt:168cm iyr:2019 768 | 769 | eyr:2030 pid:#902a6b iyr:1997 hcl:11f396 hgt:188cm byr:2025 770 | ecl:dne 771 | 772 | eyr:2025 773 | byr:2006 774 | hcl:#888785 ecl:hzl hgt:187cm 775 | iyr:2012 pid:017702828 776 | 777 | byr:1988 hcl:#18171d iyr:2019 778 | pid:110591871 779 | ecl:hzl 780 | hgt:160cm 781 | eyr:2029 782 | 783 | ecl:brn 784 | hcl:#c0946f iyr:2030 pid:264404022 byr:1984 hgt:59cm eyr:2040 785 | 786 | pid:5973803069 787 | hcl:#cfa07d ecl:grt 788 | hgt:153cm eyr:2039 byr:1970 789 | iyr:2025 790 | 791 | hcl:#fffffd 792 | iyr:2022 byr:2026 793 | hgt:180 pid:82035145 eyr:2034 cid:118 ecl:utc 794 | 795 | hgt:186cm eyr:2026 796 | ecl:brn 797 | iyr:2013 hcl:#8f4c9b pid:010260339 byr:1948 798 | 799 | ecl:amb hcl:#18171d iyr:2020 pid:259501214 byr:1978 hgt:193cm 800 | cid:263 eyr:2022 801 | 802 | hgt:161cm iyr:2015 byr:2014 eyr:2003 803 | pid:708958872 ecl:grt 804 | hcl:f4a430 805 | 806 | hgt:170cm eyr:2021 pid:911638274 cid:110 byr:1963 ecl:blu 807 | iyr:2015 hcl:1eda64 808 | 809 | ecl:oth byr:1949 hgt:174cm hcl:#18171d eyr:2022 iyr:2019 810 | pid:305857230 811 | 812 | ecl:gry hcl:#a97842 pid:971971076 byr:2002 iyr:2019 813 | hgt:188cm 814 | eyr:2022 cid:238 815 | 816 | eyr:2027 pid:221315043 iyr:2010 hgt:159cm ecl:blu byr:1998 hcl:#6b5442 817 | 818 | hcl:#888785 819 | byr:1926 eyr:2022 pid:433807814 ecl:grn 820 | iyr:2010 821 | hgt:181cm 822 | 823 | ecl:grn hgt:164cm byr:1951 hcl:#18171d cid:75 pid:845508281 eyr:2021 iyr:2017 824 | 825 | pid:#f59bc7 826 | eyr:1987 hgt:191cm hcl:z byr:2024 827 | iyr:1985 828 | 829 | hcl:#623a2f pid:497429747 830 | hgt:189cm 831 | byr:1987 832 | eyr:2027 iyr:2012 cid:95 ecl:hzl 833 | 834 | byr:2000 835 | hgt:165cm 836 | iyr:2017 pid:519443292 eyr:2029 cid:240 hcl:#a97842 837 | ecl:blu 838 | 839 | cid:67 pid:038299774 840 | eyr:2023 iyr:2015 hgt:179cm byr:1941 hcl:#18171d ecl:amb 841 | 842 | byr:2000 843 | eyr:2025 ecl:oth iyr:2017 844 | pid:334154607 845 | hcl:#fffffd hgt:173cm 846 | 847 | hcl:#888785 ecl:amb 848 | cid:131 iyr:2018 byr:1996 eyr:2026 849 | hgt:180cm pid:709543988 850 | 851 | iyr:1988 852 | pid:263277424 853 | hcl:ee8912 byr:1942 ecl:gry eyr:2040 hgt:161cm 854 | 855 | eyr:2020 byr:1966 iyr:2020 hgt:169cm pid:611918000 856 | hcl:#7d3b0c ecl:hzl 857 | 858 | hgt:164cm ecl:brn 859 | iyr:2015 pid:192054454 hcl:#6b5442 byr:1987 eyr:2022 860 | 861 | byr:1952 862 | ecl:zzz 863 | pid:215953654 864 | eyr:2021 hcl:#efcc98 hgt:153cm iyr:2026 865 | 866 | hgt:167cm 867 | hcl:#b6652a pid:847614726 868 | eyr:2022 ecl:gry byr:1990 iyr:2015 869 | 870 | hgt:185cm ecl:oth iyr:2012 871 | byr:1933 872 | cid:250 873 | pid:038674023 874 | hcl:#c0946f 875 | 876 | pid:613273980 hcl:#a97842 877 | ecl:oth byr:1924 hgt:179cm 878 | eyr:2027 iyr:1950 879 | 880 | hcl:#cfa07d byr:2018 hgt:190cm pid:64530329 881 | ecl:brn 882 | iyr:2024 883 | 884 | hcl:z hgt:70cm pid:18807747 885 | cid:284 byr:2023 886 | eyr:2035 ecl:#4a1501 887 | iyr:1954 888 | 889 | iyr:2016 hgt:152cm pid:886247173 byr:1940 hcl:#c0946f eyr:2027 ecl:oth cid:150 890 | 891 | hgt:152cm hcl:#48cfdf eyr:2025 cid:277 892 | ecl:oth pid:246230621 byr:1932 893 | iyr:2020 894 | 895 | ecl:amb pid:871180042 896 | cid:117 hcl:#602927 iyr:2011 hgt:152cm 897 | eyr:2030 byr:1999 898 | 899 | eyr:2024 ecl:hzl hgt:171cm 900 | byr:1934 pid:356408125 iyr:2019 hcl:#b6652a 901 | cid:169 902 | 903 | eyr:2023 904 | hcl:#7d3b0c 905 | byr:1934 hgt:67in ecl:oth pid:191785527 906 | cid:117 iyr:2016 907 | 908 | iyr:2029 909 | hcl:#602927 eyr:2022 byr:1931 ecl:oth hgt:192cm 910 | pid:231475143 911 | 912 | ecl:grn iyr:2014 cid:250 hcl:#b6652a byr:1970 pid:675238417 hgt:162cm 913 | eyr:2026 914 | 915 | ecl:brn 916 | hcl:#623a2f eyr:2021 pid:293293433 hgt:158 byr:1977 iyr:2019 917 | 918 | ecl:oth hcl:#ceb3a1 pid:013111996 eyr:2023 hgt:180cm byr:1976 cid:224 919 | 920 | hgt:61cm 921 | eyr:2027 ecl:amb pid:181cm iyr:1932 922 | byr:1974 923 | hcl:#18171d 924 | 925 | byr:1968 hgt:167cm 926 | hcl:#a97842 eyr:2022 iyr:2018 ecl:hzl pid:940968694 927 | 928 | iyr:1943 929 | hgt:96 930 | cid:229 931 | hcl:z eyr:1990 byr:2007 pid:#25aa73 932 | ecl:#74592e 933 | 934 | hgt:182cm iyr:2018 ecl:hzl eyr:2029 byr:1946 pid:602345030 935 | hcl:#ceb3a1 936 | 937 | pid:750306036 eyr:2020 hgt:181in ecl:xry 938 | iyr:2011 hcl:z byr:1971 cid:71 939 | 940 | pid:183825747 iyr:2019 hcl:#6b5442 941 | byr:1974 942 | hgt:180cm eyr:2028 943 | ecl:amb 944 | 945 | ecl:brn cid:200 pid:576495225 946 | byr:1924 947 | hcl:#efcc98 eyr:2022 iyr:2017 hgt:185cm 948 | 949 | iyr:2020 hgt:167cm byr:1965 ecl:brn hcl:#888785 950 | eyr:2028 pid:752062953 951 | 952 | byr:2026 953 | hcl:z 954 | eyr:2020 955 | ecl:#b4ec74 pid:187cm iyr:1974 956 | cid:326 hgt:150cm 957 | 958 | byr:1996 pid:507323629 959 | iyr:2015 cid:347 eyr:2026 hcl:#efcc98 960 | ecl:amb hgt:157cm 961 | 962 | byr:2017 pid:456780590 hcl:#888785 eyr:1966 ecl:amb iyr:2023 cid:187 hgt:62cm 963 | 964 | ecl:hzl iyr:2015 hcl:#6b5442 hgt:152cm eyr:2028 byr:1982 pid:003269467 965 | 966 | iyr:2017 eyr:2026 967 | ecl:blu cid:70 hcl:#7d3b0c 968 | byr:1966 pid:160330947 hgt:189cm 969 | 970 | iyr:2010 ecl:amb 971 | hgt:164cm eyr:2029 byr:1963 972 | pid:596606374 hcl:#efcc98 973 | 974 | hcl:#fffffd cid:277 pid:102326370 hgt:154cm eyr:2026 iyr:2012 byr:1968 975 | ecl:hzl 976 | 977 | ecl:oth pid:477189554 hcl:#6b5442 eyr:2022 byr:1948 hgt:74in cid:181 978 | iyr:2016 979 | 980 | hgt:169cm hcl:#d7bc93 981 | cid:344 ecl:oth 982 | pid:#09c55d iyr:2017 983 | eyr:2030 byr:1928 984 | 985 | hcl:5d02ff ecl:#ca7901 iyr:1959 byr:2006 eyr:2022 986 | hgt:164in 987 | pid:#d6cdfd 988 | 989 | ecl:amb pid:5739190196 eyr:2021 hgt:157in hcl:#efcc98 byr:2018 iyr:2028 990 | 991 | byr:1995 ecl:hzl 992 | iyr:2017 993 | hcl:#a97842 pid:917039291 eyr:2026 hgt:175cm 994 | 995 | iyr:2017 pid:756519868 996 | hcl:#623a2f 997 | eyr:2028 998 | hgt:158cm 999 | ecl:amb byr:1957 1000 | 1001 | iyr:2012 1002 | hgt:158cm 1003 | byr:2014 pid:973021666 hcl:f04766 eyr:2035 ecl:utc 1004 | 1005 | ecl:blu 1006 | byr:1989 eyr:2022 1007 | pid:520765501 1008 | cid:200 hgt:193cm hcl:#a97842 iyr:2011 1009 | 1010 | byr:1959 1011 | ecl:blu hcl:#733820 cid:284 hgt:162cm 1012 | eyr:2022 pid:751629408 iyr:2016 1013 | 1014 | byr:1978 cid:301 1015 | ecl:oth hgt:67cm hcl:#888785 1016 | eyr:2040 iyr:2025 pid:26038514 1017 | 1018 | iyr:2020 byr:1974 hgt:163cm ecl:blu hcl:#7d3b0c eyr:2028 cid:99 1019 | 1020 | hcl:#a97842 1021 | hgt:186cm 1022 | ecl:grn byr:1969 pid:460360492 iyr:2011 eyr:2028 1023 | 1024 | byr:2009 1025 | pid:489490924 eyr:2031 1026 | hcl:cb5351 ecl:#083a25 hgt:164cm 1027 | 1028 | iyr:2019 1029 | hcl:3463cc ecl:amb pid:4089063078 eyr:2022 hgt:150cm 1030 | byr:2007 1031 | 1032 | eyr:2028 hcl:#ceb3a1 1033 | hgt:191cm iyr:2019 pid:737842199 ecl:blu cid:268 byr:1925 1034 | 1035 | pid:868397851 1036 | hcl:#efcc98 ecl:grn iyr:2017 eyr:2021 byr:1943 1037 | hgt:179cm 1038 | 1039 | hcl:#623a2f byr:1987 eyr:2023 iyr:2019 hgt:152cm 1040 | pid:473569020 1041 | ecl:grn 1042 | 1043 | pid:953968630 1044 | hgt:175cm 1045 | byr:1971 ecl:blu hcl:#623a2f iyr:2017 cid:336 eyr:2030 1046 | 1047 | ecl:grt hgt:74cm byr:2022 eyr:2024 pid:39114027 1048 | iyr:2026 hcl:4b5675 1049 | 1050 | pid:#492988 1051 | eyr:2032 hgt:63cm iyr:2006 1052 | ecl:#817211 byr:2019 1053 | 1054 | pid:800367032 hcl:#341e13 1055 | ecl:#765111 iyr:2012 byr:2006 hgt:166cm cid:291 eyr:2027 1056 | 1057 | eyr:2021 iyr:2012 pid:876581393 ecl:amb hcl:#866857 1058 | hgt:64in byr:1993 1059 | 1060 | iyr:2017 byr:1996 ecl:hzl pid:038990744 1061 | eyr:2028 1062 | hgt:177cm 1063 | hcl:#c0946f 1064 | 1065 | hcl:#4214a6 1066 | eyr:2021 1067 | iyr:2019 cid:72 byr:1939 1068 | ecl:hzl pid:783071912 hgt:187cm 1069 | 1070 | eyr:2020 hgt:158cm 1071 | pid:274060737 cid:277 1072 | iyr:2015 hcl:#bf9b5e byr:1950 ecl:brn 1073 | 1074 | byr:1921 hcl:#7d3b0c cid:329 hgt:155cm eyr:2030 pid:718399669 iyr:2011 ecl:brn 1075 | 1076 | cid:147 eyr:2021 hgt:167cm iyr:2010 ecl:grn byr:1975 hcl:#6b5442 1077 | pid:285479783 1078 | 1079 | hgt:187cm 1080 | byr:2004 eyr:2025 hcl:bb331b 1081 | pid:851189955 iyr:2016 1082 | ecl:amb 1083 | 1084 | hcl:#94007d pid:361561551 byr:1927 eyr:2026 iyr:2020 1085 | ecl:gry hgt:158cm 1086 | 1087 | byr:1993 pid:#24c4af iyr:2023 hgt:175cm eyr:2028 1088 | hcl:z ecl:hzl cid:308 1089 | 1090 | byr:1985 hcl:#c0946f eyr:2034 hgt:172cm 1091 | cid:300 iyr:2013 ecl:gry pid:389455676 1092 | 1093 | eyr:2030 iyr:2017 byr:1956 hgt:178cm 1094 | pid:864401853 hcl:#6b5442 1095 | 1096 | pid:836559549 1097 | iyr:2011 1098 | hgt:167cm 1099 | ecl:amb hcl:#c0946f 1100 | eyr:2026 byr:1981 1101 | 1102 | pid:111085991 iyr:2011 1103 | ecl:blu eyr:2026 cid:311 1104 | byr:1920 hgt:182cm hcl:#602927 1105 | 1106 | ecl:oth pid:284436132 1107 | byr:1929 cid:121 1108 | eyr:2027 1109 | iyr:2010 1110 | hgt:75in 1111 | hcl:#6b5442 1112 | 1113 | byr:1987 1114 | hcl:#7d3b0c iyr:2018 hgt:180cm 1115 | ecl:blu eyr:2029 pid:878348021 1116 | 1117 | hgt:183cm cid:98 1118 | byr:1953 hcl:#866857 eyr:2021 iyr:2012 pid:158898193 1119 | 1120 | eyr:2030 pid:039638764 ecl:hzl hgt:190cm byr:1926 1121 | cid:294 hcl:#b6652a iyr:2017 1122 | -------------------------------------------------------------------------------- /day4/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) split foldl' elem length isString isList filter; 4 | inherit (import ../utils.nix) flatten any all; 5 | lines = filter (s: s != "" && isString s) (split "\n\n" input); 6 | prefixes = (map (x: filter isList (split "(...):" x)) lines); 7 | hasRequiredPrefixes = filter (x: all (map (y: elem [y] x) ["byr" "iyr" "eyr" "hgt" "hcl" "ecl" "pid"])) prefixes; 8 | output = length hasRequiredPrefixes; 9 | in 10 | { inherit all any lines output; } 11 | 12 | -------------------------------------------------------------------------------- /day4/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input}: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) all any lines; 4 | inherit (builtins) attrNames elem filter foldl' fromJSON isList length match split stringLength substring tryEval; 5 | inherit (import ../utils.nix) quickElem isIntStr; 6 | data = map (x: filter isList (split "(...):([^ \n]+)" x)) lines; 7 | # use fromJSON for parsing integers. 8 | verifiers = { 9 | byr = str: let 10 | int = fromJSON str; 11 | in isIntStr str && (int >= 1920 && int <= 2002); 12 | iyr = str: let 13 | int = fromJSON str; 14 | in isIntStr str && (int >= 2010 && int <= 2020); 15 | eyr = str: let 16 | int = fromJSON str; 17 | in isIntStr str && (int >= 2020 && int <= 2030); 18 | hgt = str: let 19 | substrLen = (stringLength str) - 2; 20 | substr = substring 0 substrLen str; 21 | len = fromJSON substr; 22 | in 23 | if !(isIntStr substr) then false else 24 | if (match ".*in" str != null) then len >= 59 && len <= 76 else 25 | if (match ".*cm" str != null) then len >= 150 && len <= 193 else 26 | false; 27 | hcl = str: (match "#([0-9a-f]{6})" str) != null; 28 | ecl = str: any (map (y: y == str) ["amb" "blu" "brn" "gry" "grn" "hzl" "oth"]); 29 | pid = str: (match "[0-9]{9}" str) != null; 30 | cid = str: true; 31 | }; 32 | hasAllPrefixes = entry: foldl' (a: quickElem (i: if elem (i 0) (filter (x: x != "cid") (attrNames verifiers)) then a + 1 else a)) 0 entry >= 7; 33 | verify = entry: all (map (quickElem (i: verifiers.${i 0} (i 1))) entry); 34 | correctEntries = filter (x: verify x && hasAllPrefixes x) data; 35 | output = length correctEntries; 36 | 37 | in 38 | { inherit data correctEntries output; } 39 | -------------------------------------------------------------------------------- /day5/input: -------------------------------------------------------------------------------- 1 | FFBFBBBRLR 2 | BBFFBFFRRR 3 | BFFFFBBRRR 4 | FFBFFBBLRR 5 | FFBFBFBLLL 6 | FFBFFBFLRR 7 | BFFFBBBLLR 8 | FFBFBFFRLR 9 | FFBFFFBRRR 10 | FFBFFFFRRL 11 | BFFBBFFLRL 12 | FFFBFFBLRR 13 | FBBFBFFRLR 14 | BFFFBFBRLR 15 | BFBFFBBRLR 16 | FFBBFBBLRR 17 | BFBBBFBRLR 18 | FFBBBFBRRL 19 | FFBFBBBRRR 20 | BFBBBBFRLL 21 | FBBFFFBRRR 22 | BFFBFBFRRR 23 | FFBFBBBLRL 24 | FBFFFFBLLR 25 | BBFFBFBRLL 26 | FBBBFFBLRL 27 | FBBBFFFRRR 28 | BFBFFBFRLR 29 | BFFFFBBLLL 30 | FBFFBBFRLR 31 | BFBBBBBLLR 32 | FFFFBBFLRR 33 | FBFBFBFRLR 34 | FBFFBFFLRR 35 | FFBFFBFRRR 36 | BFFBFBFRLL 37 | BFFFBBBLRR 38 | FFBBFFFLLR 39 | FBBBFBBLRR 40 | FFBBFBFRRL 41 | BFFBFFBRLL 42 | FBFFFBBLLR 43 | BFFFBFBLRL 44 | FFFBFBBRRL 45 | FBBBFBBRLL 46 | BFFBBBFRLL 47 | FBFFFFBLRR 48 | FFFBBBBLRR 49 | FFBFFBBLLL 50 | FBFBFBBRRL 51 | FFFBFBFRLR 52 | FBBFFFFRRR 53 | BFFFBBBRLR 54 | FBBBBFFLRR 55 | FFFFBBFLLR 56 | BFFBBBFRRR 57 | FBBBFFBRLL 58 | FBBBFBFLLR 59 | FBFBBFFRRL 60 | FFFBBFFLLR 61 | FFBFBFFLRL 62 | BFBBBFFRRL 63 | BFFBFBFRRL 64 | FFFBFBBLLL 65 | BFFBFFBLLR 66 | FBFBBFFLLL 67 | FFBBFBFLRR 68 | FFFBBBFRLR 69 | FBBBFBFRLL 70 | FBBBBBFLRR 71 | FFBFBFBRLR 72 | BBFFFFBRLR 73 | BFFBFBBRRL 74 | FBFFFFBRLL 75 | FFBFBFBLRR 76 | FBBBBFFRRR 77 | FBFBBBFLRL 78 | FBBBFFFLLL 79 | BFBFBFFRLL 80 | FBFFFBFLLR 81 | BFBFFBFLRL 82 | BFBBBFBLRR 83 | FBBFFBBRLR 84 | BFFFBBBRLL 85 | FBFBBBFLLL 86 | BFFFBFBLRR 87 | BFBBBFFRLR 88 | FFBBFFFRLL 89 | FFFBFBFRRL 90 | FBBFBFBLLR 91 | FBFFBFFLRL 92 | FBBFFBBLLR 93 | FBBBFBBRLR 94 | FBBBFBBLLR 95 | FBBFBBBLLL 96 | BFFFFBBRRL 97 | FBBFFBBRRR 98 | BFBFFBBLLR 99 | FFBBBBFLLR 100 | FFBFBFFLRR 101 | BBFFFBFRLL 102 | FFBFBBBLLL 103 | BFFFFBFRRL 104 | FBFBBBBLLL 105 | BFBBFFBLRR 106 | BFBBBFBRLL 107 | FBFFFFFLLL 108 | FBFBBFFLRL 109 | FFFBBFBLRL 110 | BFFFBFBLLR 111 | FBFBFFFRLL 112 | BBFFBFFLLL 113 | FFFFBBFLLL 114 | BFBBFBBLRR 115 | BFBBFBBRLR 116 | BFBFFFBLLL 117 | FBBBBFBRLL 118 | FFBFBBBLRR 119 | FFFBFBBLRL 120 | BFBFFBBRLL 121 | BFBFBBBRLL 122 | FFBFBBBRRL 123 | FFFBBBBRLR 124 | FFBBBBFLLL 125 | FBFBFBFRLL 126 | BFBFBBBLRL 127 | FFBBFFBRLL 128 | BFFBBFBRLR 129 | FFBBBBFLRR 130 | FFFBBBFLLL 131 | FFBFBBFLRL 132 | BFFBBFFLRR 133 | FFFFBBBLLL 134 | BFBFFFFRRL 135 | FBFFBBBRRR 136 | FBBFFBFRRR 137 | BFFFBFFRRR 138 | FFBBBFBRLL 139 | BBFFFBBLLL 140 | FFFFBBBRRR 141 | FFFBBFBRRL 142 | BBFFFBBLRR 143 | FBBFFFFLLR 144 | BFBFBBBRLR 145 | FFBFFBFRLR 146 | BFBFBFBLRR 147 | FBBFFBFLLL 148 | FBFBBFBLLR 149 | FBFFBBFRRR 150 | BFFFBBFRLR 151 | BFFFFFFRRR 152 | FFFBFFFLRR 153 | FBFBBFBRLR 154 | FFFBFBFLRL 155 | FFFBFFBLRL 156 | BFBFBFBRRR 157 | FFFBFFBRRL 158 | FFBBFFBRLR 159 | BFFBBFBLLR 160 | FFBFFFFLLR 161 | FBBBBBFLRL 162 | FBBBBFFLRL 163 | BFBFFBFLRR 164 | FFFBBBBLLL 165 | FFFBBFBLRR 166 | BFBBBFFLLR 167 | FBFBBFFLRR 168 | BBFFFBFRRR 169 | FBFBBFBLRL 170 | FFBBFFFLRL 171 | BFBFBFFLRR 172 | BFBFBFBRLL 173 | FBFBBBFLRR 174 | FBFFFFFLRR 175 | BFFFBBBRRL 176 | BFBBFFBRRR 177 | BBFFFBFLRL 178 | BFFBFFFRLL 179 | BBFFFBFLRR 180 | BFFBFBBRRR 181 | FBFFFBFLRL 182 | FBFBFBBLLR 183 | FFFBBFBRLR 184 | BFBBBFFRRR 185 | FBFBFBFRRL 186 | FBFFBFBLLR 187 | BFFBFBFLRL 188 | FBBBBFBLLL 189 | FFFBFBBLLR 190 | BFBFFFFRLR 191 | FBBBBBBLLL 192 | FBBBBFBLLR 193 | FFBFBBFRLL 194 | BFBBFFFLRL 195 | FFFBFFBLLL 196 | BFBFFFBLRL 197 | FBBBBFFRLL 198 | BFBBFFFRRL 199 | BFBBBBFRRR 200 | BFBBBBFLLL 201 | BFFBFBBLLL 202 | FBFBFFFRRR 203 | BFBBFFFRLL 204 | FBBFBBBRRR 205 | BFFFFFBLRL 206 | FBFFFBFLRR 207 | FBFBFBBLLL 208 | BFBBFFBRLL 209 | BFFBBFFRRL 210 | FBFBFFFLLR 211 | FBFFFBBRRL 212 | BFBFBBFRRL 213 | BBFFFFFLLR 214 | BFBFBFFRRR 215 | FFBFFFFLRL 216 | FBBBFBBLRL 217 | FFBBBFFLRR 218 | FBBBBFBRRL 219 | FFFBBBFRRL 220 | BFBFBFFLLL 221 | BFFBFBFRLR 222 | BFBBFBFRLR 223 | FBFBFBBRLL 224 | FBFFBBBRRL 225 | BBFFFFBLRR 226 | BFFFFFBRLR 227 | FBBFFBFLRL 228 | BFBFFBFRLL 229 | BFFFBBFLRL 230 | FBBBFBFRRR 231 | BBFFFFFLLL 232 | FBFBBFBRLL 233 | BFBFBFBLLL 234 | FBBFFBFRLR 235 | FBBBFBFLRR 236 | FBFFFFFLLR 237 | BBFFBBFLLL 238 | FFBFBBFLRR 239 | FFBBBBFLRL 240 | BFFFFBBLRL 241 | BFFFFFBRRL 242 | FBFFFFBRLR 243 | FFBBFBBRRR 244 | FFBFBBFLLR 245 | FBFBBBBLLR 246 | BFFFBFFLRR 247 | BFFBBBFRRL 248 | FBBBBBBRRL 249 | FBBBBFBRLR 250 | BFBFBBFLLL 251 | BFFBBBFRLR 252 | BFBBFBBRLL 253 | FBBBBBBRLL 254 | FFBBFFFRLR 255 | FFFBBFFRLL 256 | FBFBBBFRLL 257 | FBBFFBFLRR 258 | BFBBFFBRLR 259 | BFFBBFBRRR 260 | FFBFBBFRRL 261 | FFBFBBFLLL 262 | FFFBBFBLLL 263 | FBFFFBFRLL 264 | FFBBBFFRLR 265 | FFFBFBBLRR 266 | FBBFFBFLLR 267 | BBFFFBFLLL 268 | BBFFFBBRLR 269 | FFBBBFFLRL 270 | FBFBBFBRRR 271 | BFFFBBFLRR 272 | FBBBFFFRLL 273 | BFFBFFBRRL 274 | FBBBBBBLRR 275 | BFFFBFFRRL 276 | FFBFBBBRLL 277 | FBFBBFFLLR 278 | BFFFBBBLLL 279 | BFBFFFFLLR 280 | FBBBBBBLLR 281 | FFBBFBFRRR 282 | FBFBFBFLLL 283 | BFBFBFBLLR 284 | FFBBFBBLRL 285 | FFFFBBBLRR 286 | BFFBFBBRLR 287 | BFFBBBBRRL 288 | FBFFBFFLLL 289 | BFBBBBBRRR 290 | BFBFFFFLRL 291 | FFFBBBBRLL 292 | BFFFBFFLLR 293 | FBBFBFFLRR 294 | BFBFFBFLLR 295 | FBBBBFBRRR 296 | FFBFFBBRRR 297 | FFBFFFFRRR 298 | FBBFBFBLRR 299 | BFBFBBFRRR 300 | FBFFFBFRRR 301 | FBFFBFFRRR 302 | BFFFBBFLLL 303 | BFBFBBFLRR 304 | BFFBFFFRLR 305 | FFFBFFBLLR 306 | FFFBFFFLLR 307 | FBBBBBFRRL 308 | FBBFBBFRRL 309 | BFFBFFBRLR 310 | BBFFBFFRLR 311 | FFBBFFFRRR 312 | FBFFFFFRRR 313 | BBFFFBBLLR 314 | BBFFBBFLRL 315 | FFBBBBBLLR 316 | FFBFBBFRLR 317 | BFFBFFBRRR 318 | BFBFFFBRLL 319 | FFBBBBFRLR 320 | BFFFFFFLRL 321 | BFBBFBBRRL 322 | BFFBBFBLRR 323 | FFFBBBFLRL 324 | BFBBFBBRRR 325 | FFBBFFFLLL 326 | FFFBBFFRLR 327 | FBFBFFBLRR 328 | BFFFFBFRRR 329 | BBFFBFBLLL 330 | BFFFFBFLRL 331 | BFFBBBFLLR 332 | BFFFBFFRLR 333 | FBFBBBBRLL 334 | BBFFBFFRLL 335 | FBFFBBFLRL 336 | FFBFFBBRRL 337 | BFFFFBBRLL 338 | FFFFBBBLRL 339 | FFBFBFBLLR 340 | BFBFBBBLLL 341 | FBBFFBBLRR 342 | FFBBBBFRRR 343 | FFBBBFFLLL 344 | BFBBBFBLLR 345 | FFFFBBFRRR 346 | BFFBBBBRRR 347 | FFBBFFBLLL 348 | FBFFFFFLRL 349 | FBFBBBFLLR 350 | FFBBFFFLRR 351 | FBFBFBFLRR 352 | BFFBFBBLRL 353 | FBFFFFBLLL 354 | FFBBBBBRRL 355 | FBBBBFFLLL 356 | BBFFFFBLLL 357 | BFFBBFBRRL 358 | FFBBBFFLLR 359 | FBBFBFBRRR 360 | BBFFFBBRRR 361 | FBFBFFBRLL 362 | FBFFBFBLRR 363 | BFBFFBBRRL 364 | FBBFBBFLRR 365 | BBFFFFBLRL 366 | BFFBBBBRLR 367 | BFBFFBBRRR 368 | FBBFFFBRLR 369 | FBBFBBBLRL 370 | FBFBFBFRRR 371 | FFBFFFBRLR 372 | FFBBFBFLRL 373 | FFBBBBFRRL 374 | FFBBBFBLRR 375 | BFFBBFFLLR 376 | FFFFBBBRLL 377 | BFBBFBBLLR 378 | BBFFFFBRLL 379 | FBBFFFFLRR 380 | BFFBFBFLLR 381 | FBBBFBFLRL 382 | FBBFFFFLLL 383 | BFFBFFFLRR 384 | BFBBFBFLRR 385 | BFFBFBBRLL 386 | FBFFBBBLRL 387 | FBBBFFBLLL 388 | FBBBFFFLRL 389 | BFFBBBBLLL 390 | BFFFBFFLLL 391 | FFFBFFBRRR 392 | FFBFFFBLRL 393 | FBBFBBBLRR 394 | FFFBBFBRRR 395 | FBBFBFFLLL 396 | BFBFBBFLRL 397 | BFFBFFFRRL 398 | BFBFBBBLRR 399 | FFBFFBBRLL 400 | FFBFBFFLLR 401 | BFBBBBBRRL 402 | FBFFBFFRLR 403 | BBFFBFBLRL 404 | FFFBBFFLRR 405 | BBFFBBFLLR 406 | FFFBBBBRRR 407 | FFBFFBFLLR 408 | BFFFFBFRLR 409 | FFBFFFFLRR 410 | BBFFFFFRLR 411 | FBFBBBBLRL 412 | FBFFBBFRRL 413 | BFBBFBFRRR 414 | FBBBBFFLLR 415 | FFBBBFFRRR 416 | FBBFBFBRRL 417 | BFBBFBBLLL 418 | BBFFFBBRLL 419 | FBBFBFFRRL 420 | FBBBBBFLLL 421 | BFBBBFFLRR 422 | BFFFFFFRRL 423 | BBFFFBFRLR 424 | BFBFFFBLRR 425 | FBFBFFFLRR 426 | BBFFFBBLRL 427 | BFFFFBBRLR 428 | BFFBFBBLRR 429 | BFBFFFBRLR 430 | BFFFFBBLRR 431 | BBFFFFBRRL 432 | BFBBBFBRRR 433 | BFBBBBBLRL 434 | FFFBBBFLRR 435 | BFFBBFFRLL 436 | FBFFBFBRRR 437 | FFFBBFFLLL 438 | FFBFFBFRRL 439 | FBFFBFFRLL 440 | BFBBBFFLLL 441 | BFFFBFBRRL 442 | FFFBFFFRRL 443 | FFFBFBFLLL 444 | FFFBBBBRRL 445 | BFBBFFBRRL 446 | BFBFFBFLLL 447 | BBFFFBFRRL 448 | BFBFBFFRLR 449 | FFFBFBBRLR 450 | BFBFBFBLRL 451 | BFFBFFFLLR 452 | FBFBBBFRRL 453 | FBFBBBBRLR 454 | BFFBBBBLRL 455 | BFBBFBFLLL 456 | FFFBFFBRLL 457 | FBBFFFBLRR 458 | FFFFBBFRLR 459 | BFBFFFFRRR 460 | BFBBFBFLRL 461 | FFBFBFFRRR 462 | BFBBBBBRLL 463 | FBFFFFFRLR 464 | FBFBFFBLLL 465 | FFBBFFBRRR 466 | FFFBBBFRRR 467 | FBFFBBFLLR 468 | BFBBFFBLLL 469 | BFBBFFFRRR 470 | FBFBBFFRLL 471 | FFBBBBBLRR 472 | FBFBFBBLRR 473 | FBFFFBFRRL 474 | FBBFFFBRRL 475 | BFFBBBBLLR 476 | BFBBFFFRLR 477 | FBBBFFFLRR 478 | FBBFBBBRLR 479 | FFFBFBFLLR 480 | FFBFBFBRRR 481 | BFBFBBBRRL 482 | FBFFBFFLLR 483 | FFFBFFBRLR 484 | BFBFBBFLLR 485 | FBBFFFBLLL 486 | FBFFBFBRLL 487 | BFFFBBFRRL 488 | FBBBBBFRRR 489 | BBFFFFFRRL 490 | BFBFFFFLLL 491 | FBFFFFBRRR 492 | BFFFFFFRLR 493 | BFFBFFBLRL 494 | BFBBFBFRRL 495 | BFBBFFFLLL 496 | FFBBBFBRLR 497 | FFFBFBBRLL 498 | FBFFFBBLRR 499 | BFFFFFBRRR 500 | BBFFBFBRRL 501 | FFFFBBFRLL 502 | BFBBBBFRLR 503 | BFBBBFBRRL 504 | BFBFBFBRLR 505 | FFBFBFBLRL 506 | BFBFFFFRLL 507 | FBFFBBBRLR 508 | FBFBFFBLLR 509 | FFBFFFBLLR 510 | FBFBBBBRRR 511 | FFFBBBFLLR 512 | BBFFFFFRRR 513 | FBBFBBFRRR 514 | FBBFBBBRLL 515 | BFFFFFBLLR 516 | BFFFBBFRRR 517 | FBFFFFBLRL 518 | FFFBFBFRRR 519 | FFBFFFBRLL 520 | FBBBBBFLLR 521 | FFBFFFBLLL 522 | BFFFFBBLLR 523 | FBFFBFBLRL 524 | FFBBFFBRRL 525 | BFFBFFBLLL 526 | FBBBFBBRRR 527 | BFFBBFBLLL 528 | FBFBBBFRLR 529 | FFBBFBBLLL 530 | FFBBFFBLRR 531 | BFFFFFFLRR 532 | FFBFFBBRLR 533 | FBBBBBFRLL 534 | FFBBFFBLLR 535 | FBFFBBBLLR 536 | FBFBFFBRRL 537 | BFFBBBFLLL 538 | FFBFFFFRLR 539 | FBFBFBBRLR 540 | FBBFFFBLRL 541 | FFBFBFBRRL 542 | FBFFFBFRLR 543 | FBBBBBBLRL 544 | FFFFBBBRRL 545 | BFBBBBFLLR 546 | BBFFBFBRLR 547 | FBBBBFFRLR 548 | BFFFFFFRLL 549 | FBBFFBBLRL 550 | FBFBFBBLRL 551 | FBFBFBBRRR 552 | BFBBBBFRRL 553 | BFBBBBBRLR 554 | FFFBBFBRLL 555 | FBBFFBBRLL 556 | BFFFFFFLLL 557 | FBBBFBFLLL 558 | FBBFBBFLRL 559 | FFBBBBBRRR 560 | BFBFFBBLRL 561 | BFFBFBBLLR 562 | FBBBBFBLRR 563 | BFBBFFBLRL 564 | BBFFFFBLLR 565 | BFFFBFBRLL 566 | FBBBBFBLRL 567 | BFBFBFFLLR 568 | FBBBFBBLLL 569 | FBBFFBFRRL 570 | BBFFBFFLRR 571 | FBFBFBFLLR 572 | FBBFBBFLLL 573 | FBFFBFFRRL 574 | FFBBBBBRLR 575 | FBBBFFBLRR 576 | FBBBBBFRLR 577 | FBFBBBBRRL 578 | BBFFFBFLLR 579 | FBFBBFBRRL 580 | BFFFFFBLRR 581 | FFFBFFFLLL 582 | FBFBFFFLRL 583 | FFBFFBFLRL 584 | BFBFFBFRRR 585 | FBFBFFBLRL 586 | FFBFFBBLRL 587 | FFBBFBFLLR 588 | FBFBBFFRLR 589 | FFBFBFFRLL 590 | BFBFFBFRRL 591 | BFFFFFBRLL 592 | BFBBBFFLRL 593 | BBFFBFFLLR 594 | BFFFBBFLLR 595 | BFFBBBFLRR 596 | FBBFFFFRRL 597 | FFBBBFBLLR 598 | BFBBBFBLLL 599 | BFFFFFFLLR 600 | FBBFBBFLLR 601 | FBFBBFBLRR 602 | FFBFBBFRRR 603 | BFFBBFFRLR 604 | BFFBBBFLRL 605 | FBFFBFBRLR 606 | BFBBFFBLLR 607 | BFBFFFFLRR 608 | FFBBBBBRLL 609 | FBBBFBBRRL 610 | BFFBBFFRRR 611 | FBFFBBBRLL 612 | FFBFFFFRLL 613 | BFBFBFBRRL 614 | FBBFFBFRLL 615 | BFFFBFFRLL 616 | BFBBBBBLLL 617 | FBBBFFBLLR 618 | FFFBFBFLRR 619 | FFFBBFFRRL 620 | FFBBBFBLRL 621 | BFFBFBFLLL 622 | FFBBBFFRLL 623 | FFBFFBFLLL 624 | FBBBFBFRLR 625 | FFBBFBFLLL 626 | BFBBFFFLLR 627 | FBBBFFFRLR 628 | FBFFFFBRRL 629 | FFFBFBBRRR 630 | FBFFBBFLRR 631 | BBFFFFFRLL 632 | FBFFBBBLRR 633 | FBFBFFBRRR 634 | FBFFFFFRLL 635 | FFBFFFBRRL 636 | FFFFBBFLRL 637 | BFBBFBBLRL 638 | FFBFFBBLLR 639 | BFBFBBBLLR 640 | FFBBBFBLLL 641 | BBFFBFBLLR 642 | FFFBFFFLRL 643 | FBFFFBBLRL 644 | FBFFFBBRLL 645 | BFFFBFFLRL 646 | FBBBBBBRRR 647 | FBFFFBBLLL 648 | FFFBFFFRLR 649 | FBBFBBBRRL 650 | BFFBBFBRLL 651 | FFFBBFBLLR 652 | FBBBFFBRRL 653 | BFBFBBFRLR 654 | FBFFBFBLLL 655 | BFBFFFBLLR 656 | FFFBBBFRLL 657 | FBFFBBFLLL 658 | FBBBFFFLLR 659 | FBBBFBFRRL 660 | BFBFFFBRRR 661 | BFBFBBFRLL 662 | BFFBFFFLRL 663 | BFFBBBBRLL 664 | BBFFBFFRRL 665 | BFBFBFFRRL 666 | FBBFBBFRLL 667 | FFFBBBBLLR 668 | BFFBFFFRRR 669 | FFFFBBBLLR 670 | BFFBBFBLRL 671 | FBBFFFFLRL 672 | FBBFBFBLRL 673 | FBFFFBFLLL 674 | BFFFFBFLRR 675 | FBFFBBFRLL 676 | FFBBFBBRLR 677 | BFBBBBFLRL 678 | FFFBFBFRLL 679 | FBBFFFBRLL 680 | FFBFFBFRLL 681 | BFFBFBFLRR 682 | FFFFBBBRLR 683 | BFBBFFFLRR 684 | FBFBFBFLRL 685 | FFBBBBFRLL 686 | BBFFBFBLRR 687 | FFBBBFBRRR 688 | BFBBBFBLRL 689 | BFFFFFBLLL 690 | BFFBFFFLLL 691 | FBBBBFFRRL 692 | FFBBFFFRRL 693 | FBBFFBBLLL 694 | BBFFBFBRRR 695 | FBFBFFFRLR 696 | FFBFFFBLRR 697 | FBFBBFBLLL 698 | BFFBBBBLRR 699 | BFFBBFFLLL 700 | FFBFFFFLLL 701 | BBFFFFFLRR 702 | FBBFBFBRLR 703 | BBFFFBBRRL 704 | BFFFFBFLLR 705 | FBBFBFFRLL 706 | BFFBFFBLRR 707 | FFFBFFFRRR 708 | FBFFBFBRRL 709 | FBBFBFFRRR 710 | BFBBBBFLRR 711 | FBBBFFFRRL 712 | FFBBFBBLLR 713 | FFFFBBFRRL 714 | FFBBFBBRRL 715 | BFFFBBBLRL 716 | FBBBFFBRRR 717 | FBBFBFBLLL 718 | FBFBFFBRLR 719 | BFFFBBFRLL 720 | BBFFFFFLRL 721 | BFFFBFBLLL 722 | FFBFBFFRRL 723 | FBFFFBBRRR 724 | FFBBFFBLRL 725 | FBFBBBFRRR 726 | FFBBFBBRLL 727 | FFBBBBBLLL 728 | FFBFBFFLLL 729 | BFBFFBBLLL 730 | FFFBBBBLRL 731 | BBFFBFFLRL 732 | FBFFFFFRRL 733 | FFBFBBBLLR 734 | FBBFFFFRLR 735 | FFBBBFFRRL 736 | FBBFBFFLLR 737 | FBFBFFFRRL 738 | FBBFFFFRLL 739 | BFBBBFFRLL 740 | BBFFFFBRRR 741 | BFBFBBBRRR 742 | FBFFFBBRLR 743 | BFFFFBFRLL 744 | FFBFBFBRLL 745 | FBBFBFBRLL 746 | FBBFBBFRLR 747 | FFFBFFFRLL 748 | BFBBFBFRLL 749 | FBBBFFBRLR 750 | FFFBBFFRRR 751 | FBBFFFBLLR 752 | FBBBBBBRLR 753 | FFBBBBBLRL 754 | FBBFBFFLRL 755 | BFBFFFBRRL 756 | FBFBFFFLLL 757 | FFBBFBFRLL 758 | BFBFFBBLRR 759 | FBFFBBBLLL 760 | FBFBBFFRRR 761 | BFFFBBBRRR 762 | BFBBBBBLRR 763 | FBBFBBBLLR 764 | FFFBBFFLRL 765 | FBBFFBBRRL 766 | FFBBFBFRLR 767 | BFBFBFFLRL 768 | BFBBFBFLLR 769 | FBFBBBBLRR 770 | BFFFFBFLLL 771 | -------------------------------------------------------------------------------- /day5/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) filter foldl' head isString split tail; 4 | inherit (import ../utils.nix) max simpleSplit charList; 5 | lines = simpleSplit "\n" input; 6 | intList = map (string: map (x: if x == "B" || x == "R" then 1 else 0) (charList string) ) lines; 7 | IDs = map (foldl' (a: b: 2 * a + b) 0) intList; 8 | output = max IDs; 9 | in 10 | { inherit lines IDs output; } 11 | 12 | -------------------------------------------------------------------------------- /day5/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input}: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) IDs; 4 | inherit (builtins) elemAt head foldl' sort tail; 5 | inherit (import ../utils.nix) fix; 6 | sortedIDs = sort (a: b: a < b) IDs; 7 | output = fix (f: list: let 8 | e0 = elemAt list 0; 9 | e1 = elemAt list 1; 10 | in 11 | if e1 - e0 == 2 then e0 + 1 else f (tail list)) sortedIDs; 12 | in 13 | { inherit output sortedIDs; } 14 | -------------------------------------------------------------------------------- /day6/input: -------------------------------------------------------------------------------- 1 | jmcvr 2 | marvj 3 | 4 | doh 5 | kdrmulsg 6 | ypde 7 | eyodf 8 | d 9 | 10 | gneqwlfbjxcmvpstoak 11 | gsnmaweycokpxvtqjfl 12 | 13 | wufimrzxltqke 14 | iuflmwzrteqkxyga 15 | 16 | outvl 17 | tolvu 18 | votul 19 | 20 | tmfjpaxhricyld 21 | ymjialfkxchprd 22 | mljcxfhdgrapyi 23 | myljhxfdcrpai 24 | cxrhgmljdafpyi 25 | 26 | cx 27 | xc 28 | cx 29 | 30 | ncwxluvo 31 | woybuiacmeqkrxzn 32 | pchwtsxnuo 33 | cnoutxgfvw 34 | hfxcgouvnw 35 | 36 | d 37 | m 38 | n 39 | 40 | bovpilz 41 | ovzlfib 42 | 43 | cxnfyaelwvzq 44 | bgrxhsl 45 | juxiol 46 | rijlxdt 47 | 48 | iaxgdh 49 | haigxd 50 | ixhgda 51 | haixdg 52 | hiadxg 53 | 54 | mnlizwedqrcg 55 | ocmwragqdnfie 56 | ecmwrqgind 57 | 58 | vgzhujaqcptlfosnkyewmb 59 | yoxlacmnwkqvpsjehgtzufb 60 | ynlpbztwqcvaghksfdmjeiou 61 | 62 | eai 63 | ielk 64 | hoiemtg 65 | kexi 66 | ine 67 | 68 | xwcsyrvjanhltfqpmuoikgd 69 | gonhrmdixykztjucwqlfpsa 70 | tjalfyhudsmknqrocwgxpi 71 | 72 | qefnjlradtyiwugmhkcxpzsb 73 | ybrwdukzgeqhsmxpcaniojflt 74 | kqsndcybemrgfwxiuaztjplh 75 | 76 | zmpuyef 77 | zepfumc 78 | ufepmz 79 | uzenpmf 80 | mefzpu 81 | 82 | nouftsgkayw 83 | unoaswykfmteg 84 | gnypwskafqtu 85 | 86 | cqfatlhduwbv 87 | wvabclqufdt 88 | vqawbtudoecfl 89 | tuvlawbdfcq 90 | 91 | kjhvutrgoblpmdy 92 | gkbrmpvydljoau 93 | luiwndrmsvkzyjog 94 | 95 | xcj 96 | hbnmc 97 | uvpclterk 98 | cyinmzj 99 | qcs 100 | 101 | vywm 102 | m 103 | m 104 | m 105 | 106 | wpajrnoudxyhs 107 | wuoxdayljnhrps 108 | boxjpnwhusaerdtfkvyzm 109 | qhndgocpasrixjwuy 110 | 111 | rjwmt 112 | twxj 113 | tjw 114 | wjt 115 | twj 116 | 117 | uwcebltnksazfd 118 | dyeunsfavkzwc 119 | gxiszcamdfnkuh 120 | pkuqajozcnfsdr 121 | 122 | l 123 | l 124 | l 125 | 126 | ekxmjsyh 127 | jymkhexv 128 | 129 | phkw 130 | whkrp 131 | wkph 132 | phkw 133 | khwp 134 | 135 | hzyaj 136 | atyzvg 137 | 138 | xpu 139 | mp 140 | 141 | wcetozfsjlbvdmig 142 | cnapwmlgzk 143 | mwynhugclzq 144 | 145 | xcrhvnwsikul 146 | bdlnrswivuxc 147 | 148 | ecv 149 | evp 150 | ev 151 | yuvie 152 | pcve 153 | 154 | sycbzvkjhiupxgtq 155 | xuycqhptvkzbsjig 156 | vgzcitubshqyjkpx 157 | 158 | tasdmoy 159 | masjly 160 | qmfsyj 161 | hsmoy 162 | umzgskcbiprywn 163 | 164 | rustblckdfjx 165 | ftrujcbdxslk 166 | 167 | frswhgvtj 168 | gmitfnuhpwkyqx 169 | wzfajgchet 170 | hwbtcgflr 171 | 172 | l 173 | myczv 174 | l 175 | h 176 | 177 | bjymhok 178 | ngadmt 179 | 180 | fbcxnwavutjzipglqe 181 | ablzgeuivnqfptwcjx 182 | ubgqzjwnavctfpliex 183 | 184 | ghemp 185 | qmpxgh 186 | 187 | jdh 188 | dhju 189 | ude 190 | drsgtkp 191 | 192 | hlsivanjo 193 | losnuhmziva 194 | zlhnovias 195 | 196 | l 197 | x 198 | 199 | sw 200 | sw 201 | gws 202 | sw 203 | 204 | fpgu 205 | pufg 206 | 207 | f 208 | f 209 | cn 210 | 211 | gvbxjldm 212 | dhlmbjv 213 | mnbdvlj 214 | bmdjrlv 215 | 216 | lhvujbgno 217 | ngluhojv 218 | hivuwlnjogk 219 | lhvgubjonc 220 | 221 | v 222 | p 223 | c 224 | i 225 | r 226 | 227 | e 228 | e 229 | 230 | ucoiyhwem 231 | hoiueqap 232 | vreozgntbu 233 | 234 | pqykxjsmuact 235 | fseonvdrgzbw 236 | 237 | tuckf 238 | kftuc 239 | uftck 240 | cufkt 241 | ctkuf 242 | 243 | cexirwftagusbhpzlodkyj 244 | ugtyorbcaejwhixlfskzd 245 | ebijclzodrxykawstgufh 246 | jcksbdholmatzyfwnvigreux 247 | 248 | uyczsapqhvfltxbwgn 249 | jumxibzwhoprvqtfdsg 250 | 251 | psun 252 | sdaxtkchn 253 | musn 254 | sn 255 | qsumnwg 256 | 257 | i 258 | ic 259 | id 260 | jic 261 | 262 | qgcdivwhxs 263 | zyoltm 264 | 265 | deixqu 266 | toflkep 267 | hbaze 268 | yjsgcxveam 269 | 270 | wqbjkmluyos 271 | jfwtsgkbvorquhy 272 | 273 | xoj 274 | foxjl 275 | oxj 276 | uxjo 277 | jox 278 | 279 | pqmnoyrwgk 280 | porqtkwygmz 281 | wqksmgpnoyer 282 | qmxocfauprigykw 283 | 284 | ivox 285 | voxi 286 | 287 | veh 288 | hve 289 | hve 290 | 291 | pfqgzoelmyawuc 292 | goszuamnfxecyqp 293 | eucpazlgjmyof 294 | eazgycdmufop 295 | ativbhzkeogfycpmur 296 | 297 | fzlonc 298 | fonzlc 299 | lonzfc 300 | lfoncz 301 | 302 | sucrahnjglmzfikevoxqp 303 | fnlaimqjpsruhvzkgoecx 304 | 305 | ouvyz 306 | quh 307 | ljecsb 308 | 309 | vbnzfcpduytlei 310 | boipnfytulvcz 311 | vuzgtficlhbyp 312 | fipbmwzjslvtruayxc 313 | plzybituokqgnvfc 314 | 315 | tcyfbkaw 316 | tfyakw 317 | wekynatf 318 | twafyk 319 | 320 | n 321 | ojn 322 | s 323 | n 324 | 325 | i 326 | ih 327 | bsi 328 | in 329 | 330 | qrihgluedspjycb 331 | puhjlbceirqsdgy 332 | iudrqejcbpylsgh 333 | eygcpbudrqhljsi 334 | lheiscrjqdyupgb 335 | 336 | nw 337 | nw 338 | nw 339 | nw 340 | wn 341 | 342 | urxsya 343 | bycij 344 | ynk 345 | nyqvatr 346 | vytao 347 | 348 | gvoszuwxfa 349 | hzxruaqwgvdfs 350 | gxzfaosvlwu 351 | fgvwpezsau 352 | amvruzgfsw 353 | 354 | nkplwreoy 355 | aoe 356 | cjmvohs 357 | 358 | kznwvygbjtmsxochrfliuq 359 | flgqmctuwkshvrbnx 360 | twugqmxkcsvbnfelahr 361 | 362 | donptruvijqzx 363 | cpqfuiodrjeznx 364 | 365 | azwxpnqisodcbue 366 | bdaxoypgnzwui 367 | 368 | pvmaybqceh 369 | yajvshgnifk 370 | 371 | tqzernishxmgaodfvwpj 372 | xobwgtpejqsrdhz 373 | rhqpgejwsltdoxbz 374 | wqodztgjsehxpr 375 | 376 | whqvmejckfiudnrsgapy 377 | ikfhcyqavdsrjwulegpnm 378 | niskxmuapwgbdqrycetfjh 379 | eqrkyumgndcwpifhasj 380 | jgudwyamprikqcesfnh 381 | 382 | vxmeapndjq 383 | elkbqxdaz 384 | ogaeyxdq 385 | 386 | fjrmydqwp 387 | wydmjprq 388 | dyrwpmjuqb 389 | mjwydqpr 390 | pqyjfmrdw 391 | 392 | oms 393 | osma 394 | 395 | fevzlpstd 396 | efvlcgdtsn 397 | 398 | jlhcexfdtbgrwykznuo 399 | zvkdhbyojlgfxtnwurce 400 | gbhklxjndzyeiproftwcu 401 | etuldfygkzwnhbxcovjr 402 | 403 | kznbxcadpgqerwmoyfslv 404 | yveqanzpskdoxwclgbmfr 405 | cfaqdwbxemgvynkrozspl 406 | ypeqlszdbafrvnxkcwmog 407 | bronewmgpfszvklyxcqda 408 | 409 | w 410 | w 411 | w 412 | 413 | cpi 414 | c 415 | c 416 | c 417 | c 418 | 419 | pxltifng 420 | anlsvgx 421 | dbwlrmgonz 422 | xglniuh 423 | 424 | jfhelnqtipadxwr 425 | dwthfarexijnpl 426 | hrewiglfjxnapdt 427 | nwpfvlixarjhtde 428 | 429 | nb 430 | r 431 | r 432 | 433 | ixafewbtzrkqsd 434 | pdconufaxhlkvgy 435 | 436 | juieosrl 437 | cijgferulswo 438 | 439 | qhfsedblari 440 | gyphvxzwmtc 441 | 442 | rpo 443 | o 444 | vow 445 | vno 446 | wvo 447 | 448 | iptoy 449 | piuo 450 | pio 451 | 452 | tueioxzyhnjkfbg 453 | bxhgufiokzney 454 | xzgfkboyneuhi 455 | gbknuyxhifeoz 456 | 457 | qhkyrvdtaln 458 | aztsbjwquxokri 459 | afrcklqt 460 | 461 | nc 462 | dehsrf 463 | wp 464 | 465 | v 466 | v 467 | 468 | dkzwixqjbthmurvca 469 | pjvcwgbszlefxyn 470 | 471 | obxijc 472 | bofcjx 473 | xbjco 474 | 475 | mhktbrljyg 476 | nirlg 477 | zrgql 478 | gaplr 479 | iqsrvgl 480 | 481 | cadtpqvo 482 | pctvqago 483 | paqovtc 484 | apcotvq 485 | 486 | balcxuhpiseg 487 | knistcxue 488 | 489 | qejnfmbska 490 | imdqnsjfabe 491 | nfbmaesjq 492 | sgoqmnbjfae 493 | 494 | jxy 495 | ibjyd 496 | vygj 497 | 498 | ojuzcadpxw 499 | zpradwglyien 500 | ztdxapwbq 501 | dpzqukawx 502 | dsfbopawhz 503 | 504 | cwuzitmfbxejlyk 505 | xmynf 506 | dfamyxgp 507 | fgymxq 508 | 509 | kovdtmebspcwurxq 510 | vwmdrjueoqntgbcpsi 511 | tsbvrpuodemqcnw 512 | prcuwdqbmieotvsf 513 | tdqrawulobepsmvchz 514 | 515 | ikufnxbywva 516 | zhgetmqcdaprls 517 | 518 | vtsi 519 | vits 520 | stiv 521 | tivs 522 | stvi 523 | 524 | ikgsf 525 | kfros 526 | skf 527 | 528 | qxnyg 529 | on 530 | wnrzhevli 531 | njyxap 532 | stn 533 | 534 | lyza 535 | zeyal 536 | yahzlo 537 | zayl 538 | 539 | pyaglvdjf 540 | njsceglwtbdp 541 | jlvgdp 542 | 543 | ceswvfxldjahpzutk 544 | simfjdlzavohywucpx 545 | 546 | bknvsezl 547 | eslnbvkz 548 | vnkselzb 549 | semlkznvb 550 | sekzblvn 551 | 552 | qpxcy 553 | ljqbcp 554 | 555 | lfaqkwpizu 556 | pduzsychgja 557 | ntqupawmz 558 | uoaqzfp 559 | 560 | tu 561 | ut 562 | tfmluv 563 | 564 | hbelrdkapxmvsqgfin 565 | mdhnaflgbsxerpkq 566 | nrxedfqbmghlakspt 567 | nqkarfbehplxsgdm 568 | 569 | jtbfzhxd 570 | zcfjtbx 571 | vxhbztjef 572 | lfkijotuqzxba 573 | zfjxtb 574 | 575 | o 576 | o 577 | t 578 | 579 | qhd 580 | h 581 | h 582 | 583 | pdvikgrwust 584 | gpurwkdtias 585 | tuplksgiwdr 586 | swqkptudgir 587 | 588 | vfct 589 | qbgyjelp 590 | ct 591 | 592 | vxonbisrjlquyktwp 593 | osxqitjblyndwurkfp 594 | 595 | kzfjuybwdx 596 | dzbexpfijwk 597 | wkbxqjfdz 598 | 599 | dqkrwf 600 | rfkdqw 601 | rwfqdk 602 | rfdwkq 603 | drqfwk 604 | 605 | frexstackzgnjwh 606 | uvbzyqlpm 607 | 608 | wijxztecbpqylrsof 609 | xpltqsrnebocijwfz 610 | pzwdhreoxlicqsbftj 611 | lewspjczrqfbtiaox 612 | eivbswtxqrpzcgfljo 613 | 614 | ghtcljxsiazkuqmnfvwyop 615 | jwulpndxyeibztgsamrqkoc 616 | 617 | xi 618 | yx 619 | qx 620 | xw 621 | 622 | mups 623 | mpsxu 624 | 625 | vtszwo 626 | ltvzrow 627 | zwsdtov 628 | 629 | kuoipzvlcsjmdfebxw 630 | fnebckrizujtwpxq 631 | 632 | ldqxcn 633 | jlzuicagxh 634 | ilmctaxo 635 | 636 | ivnyeut 637 | utiyev 638 | vtiuey 639 | 640 | qodp 641 | hqn 642 | q 643 | 644 | tr 645 | rt 646 | rt 647 | lztbijwr 648 | tur 649 | 650 | gad 651 | ad 652 | ad 653 | ad 654 | tda 655 | 656 | lusvnkcpgryjixz 657 | jgkzrisyucxpnvl 658 | xnusyvjciklgprz 659 | gkvsiulypjxcznr 660 | 661 | kvneghodfrct 662 | kgrlnqvhcx 663 | khnvlrxqpugc 664 | gcnkhyvr 665 | gmhvcnrk 666 | 667 | orjdfaptbcvl 668 | tlavrdfucpbjo 669 | 670 | zqompunrfeiy 671 | pqyomzurif 672 | forujzmpqvtxiy 673 | cufzrlomypikqd 674 | 675 | qpwsajvfxndbtm 676 | qfsjdnbtmpxvaw 677 | sphdjvwaqfgixtnbm 678 | qfmtezvojpwscardbxn 679 | afdbmxtspnqvjwg 680 | 681 | khgsmvwad 682 | wokymraphszg 683 | asmbgkhw 684 | 685 | eulncr 686 | crnul 687 | luvnrcj 688 | 689 | icb 690 | suyt 691 | lr 692 | wqbgz 693 | 694 | sucnh 695 | nhucs 696 | unhsc 697 | 698 | ivhrypsx 699 | yhvsrpxi 700 | syriphxv 701 | 702 | abfvpxwrymksi 703 | yrbkxswanivpm 704 | aimysrbpxvkw 705 | iapwkrbmvsxy 706 | kxbpgicsavmywer 707 | 708 | ujefblv 709 | bfja 710 | fbj 711 | jbf 712 | 713 | fpoviwdk 714 | zpusja 715 | rsgmape 716 | 717 | geukt 718 | sdqy 719 | vysq 720 | 721 | smigbkfvrnyw 722 | zkgqyvfwhd 723 | 724 | skw 725 | qswk 726 | wks 727 | mksw 728 | 729 | wsz 730 | sjgwz 731 | 732 | cldthxb 733 | xdlqchtb 734 | bchldtxp 735 | hbxtdlcq 736 | 737 | klbywtef 738 | iktfpcy 739 | fkty 740 | kfxtyva 741 | 742 | xczosruim 743 | xmsiczo 744 | symzncxtilo 745 | mjxoicsdzq 746 | eojmusdcixz 747 | 748 | kcqzyibsdw 749 | zcyqlidksu 750 | cmzqjhfsdyik 751 | 752 | f 753 | f 754 | f 755 | f 756 | 757 | fiskzwaundyom 758 | inosdyuakmwzf 759 | iatdnwzfyosukm 760 | oszaydinkmfuw 761 | 762 | flicgakhrpxjbentwyuzq 763 | lduxhqbsarcvejtnwmkyof 764 | 765 | gkcmzqpiuv 766 | vcuzqegkmjip 767 | 768 | ehdyguo 769 | autprsky 770 | rayuwcf 771 | iksuy 772 | uy 773 | 774 | gpyifovl 775 | yfvxlpg 776 | gpflvy 777 | 778 | eidr 779 | ierd 780 | drei 781 | ride 782 | 783 | dirp 784 | jg 785 | 786 | qz 787 | zpq 788 | qzynvp 789 | qzvg 790 | ztmdq 791 | 792 | kbdsmpqngith 793 | gkinbdthmrqsp 794 | mthrpbidngsqk 795 | fwsktgmbcinhdpqa 796 | 797 | lxa 798 | alx 799 | alx 800 | lxkamn 801 | 802 | bykfv 803 | ykbvfg 804 | 805 | hdxkgbierszqplvtyujcfawnmo 806 | dgzkebvxnarwosihpjflqmyu 807 | gpluehrvkbjmowyfzsnxiqda 808 | 809 | ijpskconavfy 810 | jopvyskbfidh 811 | rxgwsvloyetupqmkjfzi 812 | 813 | b 814 | b 815 | w 816 | e 817 | x 818 | 819 | docfzlgmuktbrnaphvieyqsjxw 820 | dmokthecrbpsfyqjlaznwvxuig 821 | 822 | hw 823 | whu 824 | 825 | fhrwdejnxb 826 | wyvbhkezjcumn 827 | 828 | vnoks 829 | nsk 830 | ksatnw 831 | nplsky 832 | 833 | ihpdyrkwlvmfaocuzj 834 | chkoymzwelpjf 835 | lmkyjwhfzcop 836 | 837 | ajyuhqxn 838 | xyauqjhn 839 | haqnxuy 840 | xqznauohyc 841 | hxajyuqvn 842 | 843 | fztsvm 844 | jvfmzt 845 | wzvdhpotumf 846 | 847 | ewyclrsztqmxhbkudi 848 | elsijdmcfgvnrpbkqao 849 | 850 | evgmapfjhwlzby 851 | plhgjyvbmeazfw 852 | yzudbaogjnqvlemfhpwk 853 | xsbeawmgfjvhiyzlp 854 | vpfbglywjmzeah 855 | 856 | qubejn 857 | nujqbe 858 | juqnbe 859 | nuqejb 860 | qnjebu 861 | 862 | ysjxvl 863 | svlnpjy 864 | 865 | w 866 | w 867 | bwq 868 | w 869 | 870 | pxw 871 | wxroh 872 | hxdt 873 | pxvf 874 | yknisujcbxlegq 875 | 876 | ckwi 877 | kwfvi 878 | ivkw 879 | wki 880 | 881 | bqowsjpxzkdeura 882 | szceuorpkdxaq 883 | zoparqsuhdgxke 884 | 885 | anm 886 | ln 887 | 888 | p 889 | fds 890 | w 891 | i 892 | 893 | qgswozixebydaurpj 894 | xvmwuianrsygpzoedqjb 895 | aeiruopfwdysjqbxgz 896 | dbwxiyuazjetogrqsp 897 | 898 | kfpajbghmoqw 899 | qceawob 900 | owbxqa 901 | oqvlabw 902 | boqaxiw 903 | 904 | baxlpkydhmwn 905 | kyactupsxdmnw 906 | 907 | exrjugtcynwvdb 908 | twgbjzvcdunre 909 | ucjtebdwyrvng 910 | rbweudvxcgjnt 911 | 912 | zheoun 913 | hulzxe 914 | hloauz 915 | hzsfu 916 | zlaudhr 917 | 918 | tminpflavgkxrsdyzq 919 | dykpgsxqnltzvmfiar 920 | smzirgqnvyktdlapfx 921 | 922 | xpguove 923 | vxupegio 924 | pougevx 925 | pogvxue 926 | 927 | co 928 | cios 929 | poc 930 | 931 | u 932 | u 933 | u 934 | u 935 | 936 | xgszykfjp 937 | jayxzpgbsfc 938 | tyxszpjgf 939 | 940 | sqiyvnec 941 | eyscniqbv 942 | vnieqysc 943 | 944 | qwtbhva 945 | whtqbsv 946 | pwjcqvhtrb 947 | twbhvql 948 | qvhwtb 949 | 950 | epvfcbjsdo 951 | gpti 952 | qylpkw 953 | phnizyq 954 | zrpaxu 955 | 956 | igemwkru 957 | xsktwbgh 958 | 959 | smbfakwglvz 960 | olmswfv 961 | lmwsfv 962 | vwselufm 963 | lfswmvhd 964 | 965 | flzivx 966 | vrxfw 967 | meoxqgyadnt 968 | 969 | iyrsqaxkdeuzbfpolt 970 | xcosekyipavrutqldfgzb 971 | abiklworzpsqhyjxfdteu 972 | 973 | uh 974 | x 975 | pgfy 976 | 977 | dulxercoykfzs 978 | ezxyrqnljd 979 | lyrhmxajbzde 980 | 981 | oxnuafhesi 982 | poaxnshfieu 983 | 984 | xhnqbv 985 | axkgvzq 986 | svnzkxq 987 | iqtbvxj 988 | fmvqxdryo 989 | 990 | qxocdfn 991 | gqocndxf 992 | onxcfqd 993 | bqxcondf 994 | dqxocfn 995 | 996 | xyf 997 | fyx 998 | fxy 999 | 1000 | xibzdsefv 1001 | zxvbifsde 1002 | svxfzeibd 1003 | 1004 | tqwcehgrindmj 1005 | tdniwmzrgfcjhyq 1006 | htrjngqiwkdcm 1007 | gmhnqtilwjdcre 1008 | 1009 | yivbdgcqa 1010 | bdaycvgi 1011 | 1012 | egmtkosihblnpdvaufcrq 1013 | arbznlpgsovktfumhdiceq 1014 | vmdeqlbiuftnpahoscrkg 1015 | oamfnpbcsltdrqivhkegu 1016 | 1017 | vniomyberucg 1018 | fxslzatq 1019 | 1020 | xiapqy 1021 | pya 1022 | ytsap 1023 | ayp 1024 | 1025 | sirtykxd 1026 | sicktrd 1027 | isrkdt 1028 | sdixtrkb 1029 | mpustkrdzi 1030 | 1031 | nxkitjzs 1032 | kinjbytzsx 1033 | ntkjxzis 1034 | ijtwkxnszd 1035 | iktnzsjrx 1036 | 1037 | grjvys 1038 | ujvsgx 1039 | 1040 | kqxg 1041 | gxkq 1042 | gxqok 1043 | gqkx 1044 | qxgk 1045 | 1046 | bcilrdpauxmq 1047 | jcfogkyvlzhxsbp 1048 | 1049 | kpgwvfex 1050 | pgenidbvx 1051 | gevdxspn 1052 | egpxtvsb 1053 | 1054 | zeud 1055 | dzue 1056 | ezud 1057 | 1058 | kwyuvpamheb 1059 | zplya 1060 | laiyp 1061 | 1062 | uxdsnziv 1063 | ixvszdun 1064 | zdsvnixu 1065 | igfsnuvzxdp 1066 | dsvuixzn 1067 | 1068 | ngfdlqmrxwtuv 1069 | vuxezkhoigncla 1070 | 1071 | hv 1072 | rfhev 1073 | 1074 | mscweilzq 1075 | wqrmksze 1076 | qskzumwex 1077 | hjmswnzeytgfdq 1078 | zwbermusq 1079 | 1080 | nlbxzcpayri 1081 | rxlanbcyizp 1082 | npdqcylxzubria 1083 | cazxrwilbpyn 1084 | axylibrcznp 1085 | 1086 | jbxtrnshwmqafczdugo 1087 | rsowfqnmugbjazdhtxc 1088 | yowcuzgraqtdhbmsjxfn 1089 | 1090 | pzjlbxchewutsnogmk 1091 | smpyhbntzxakufloge 1092 | 1093 | rfjwd 1094 | gdfwexr 1095 | drwfexa 1096 | wfkdrlp 1097 | mtidzvcfwrhy 1098 | 1099 | dwva 1100 | vwad 1101 | wdxza 1102 | gwad 1103 | aspcwdl 1104 | 1105 | xcfr 1106 | lhxbfr 1107 | xdrmcwf 1108 | rcxyfio 1109 | fxrodn 1110 | 1111 | uaw 1112 | u 1113 | u 1114 | 1115 | qrijuhlztegmvyc 1116 | htjeulzcgryqvmi 1117 | rgvemljiyzqcthu 1118 | jcmuvygtirqzlhe 1119 | jvtgyeulczhrwqmi 1120 | 1121 | cywvfe 1122 | fwevxc 1123 | xecfvw 1124 | 1125 | mfwoznta 1126 | wifn 1127 | xdsk 1128 | 1129 | pzdfjcombvthquls 1130 | pfxslgrayvkui 1131 | 1132 | uoyqkrhievabmfwxntlc 1133 | dqylwmixtahcekrov 1134 | yzicmeqwopklrsajvgtx 1135 | 1136 | tlbzcfpgw 1137 | ehgj 1138 | uydoixaqsvg 1139 | zckgnm 1140 | 1141 | t 1142 | t 1143 | u 1144 | t 1145 | t 1146 | 1147 | frsqwpyhmx 1148 | spxqhryw 1149 | qyhewsxrp 1150 | 1151 | wfde 1152 | wuesonzy 1153 | faew 1154 | hawjfe 1155 | ejwp 1156 | 1157 | psq 1158 | qp 1159 | 1160 | kts 1161 | skt 1162 | skt 1163 | 1164 | q 1165 | r 1166 | 1167 | rndjegh 1168 | ndhrejg 1169 | jdrgehn 1170 | 1171 | ti 1172 | afchje 1173 | lxkmypv 1174 | ehrjd 1175 | 1176 | vszy 1177 | szyv 1178 | zvsy 1179 | hzyvs 1180 | svxozy 1181 | 1182 | vygnmbzxqlt 1183 | bmtzqvxyjg 1184 | qcmxvbzjgdoit 1185 | rezkmbvuxatgq 1186 | yqixtpwvmbgnz 1187 | 1188 | bqeuzkdrln 1189 | qlvybjtsmdekpxor 1190 | zulrhkbdqaec 1191 | qkbhrazedli 1192 | 1193 | cxznrlvhdo 1194 | ondvrzwuxi 1195 | drpsvyoknxa 1196 | 1197 | zmovqcpygfsiuxklwhejrdab 1198 | ydiuvjxrbzehkwplcfmosqga 1199 | fhclwsrozjgkqvaxyieumbpd 1200 | qxfoljagpdsmbvchuiykzerw 1201 | 1202 | n 1203 | n 1204 | nx 1205 | 1206 | oebwgshp 1207 | wbgspieh 1208 | xbgepwvsh 1209 | whsgbjpte 1210 | 1211 | sbge 1212 | esbg 1213 | sbeg 1214 | begs 1215 | esgb 1216 | 1217 | niwhmy 1218 | nwiymj 1219 | isnyldqxwc 1220 | yiwn 1221 | 1222 | vsn 1223 | veamr 1224 | 1225 | voafu 1226 | keo 1227 | voz 1228 | ndhgtqmpo 1229 | vo 1230 | 1231 | hkmwvrtxbejz 1232 | xztwbfgjvr 1233 | bzvtwxjr 1234 | vtrxjzbw 1235 | zjvfrxiwtb 1236 | 1237 | cvhljyr 1238 | ycrhljv 1239 | rcjlyvh 1240 | rvhljfyuzc 1241 | 1242 | igt 1243 | agoitu 1244 | tlgih 1245 | togai 1246 | tigu 1247 | 1248 | aozudhmnv 1249 | lpkvrjzifegbt 1250 | wzhdqaxcvy 1251 | 1252 | ej 1253 | e 1254 | enc 1255 | e 1256 | 1257 | xgcfkjdntsuilayhqzwre 1258 | xgukfyhbezriqlajdtwn 1259 | geinwdtqrfxhlaykuzj 1260 | xkyfrznwlqidauhtgje 1261 | 1262 | d 1263 | kv 1264 | m 1265 | d 1266 | 1267 | d 1268 | dqch 1269 | i 1270 | mc 1271 | zywa 1272 | 1273 | crik 1274 | iecfh 1275 | lirgczph 1276 | sjvxcmibqaydonw 1277 | 1278 | hurdm 1279 | umhrd 1280 | rhdum 1281 | 1282 | ermio 1283 | rem 1284 | emr 1285 | mre 1286 | rme 1287 | 1288 | dchmwyfk 1289 | whcymkfd 1290 | dkhwcmyf 1291 | ywfmkhdc 1292 | 1293 | m 1294 | ih 1295 | 1296 | bzfdtrce 1297 | 1298 | dizlgksopctuyrf 1299 | ofzyjktgsnvrpiul 1300 | 1301 | fctgjmhzaknpsd 1302 | hgjavckztxse 1303 | cjksnahgut 1304 | bagjhliyqstrocw 1305 | 1306 | hvu 1307 | f 1308 | u 1309 | niwjx 1310 | vf 1311 | 1312 | nuozebjagkhdqrwt 1313 | fgrnhkadtbquoejz 1314 | cneirbqhdjoygztuxka 1315 | grdojebkatuhnqz 1316 | ugztqojabredkhn 1317 | 1318 | rxeyi 1319 | rbxsie 1320 | ijlxuhe 1321 | 1322 | azrlemjgcdqwhnfbtuo 1323 | jhcavrizqtflyepok 1324 | 1325 | oxynmtsgkv 1326 | gqnomxyk 1327 | fnxqgmylok 1328 | giyrbckhxnwm 1329 | 1330 | jzqupkynsrxaifeg 1331 | ugcbyrpnwxkeioatvhlfd 1332 | 1333 | kxzphoyladfwm 1334 | dlmkaxwfyzoph 1335 | lxudmakocwfpzsy 1336 | foxmydwlzpka 1337 | 1338 | ehsxl 1339 | dyiehx 1340 | 1341 | grvdmsbtxucpqwyj 1342 | bprqygvmsdxukwjt 1343 | 1344 | symnihotjdglxuwqvf 1345 | sdvunxgzojfrbalw 1346 | 1347 | rudnjfeymbhcoqs 1348 | xqonmwytfudgrjspb 1349 | 1350 | lfezcvyumpokhdriq 1351 | pdirafkuocveqmylz 1352 | xiczmotupdeavylfqrk 1353 | pbdecmzyusjinqfrklgov 1354 | 1355 | ux 1356 | rx 1357 | px 1358 | uxo 1359 | 1360 | gqcpldoxukinarezjsfmwty 1361 | wxijftmzlsenpcoqrdybukg 1362 | 1363 | kszg 1364 | k 1365 | k 1366 | 1367 | qlu 1368 | q 1369 | qm 1370 | q 1371 | mq 1372 | 1373 | zixsykjfgmqrw 1374 | ztmnfsqrkxgi 1375 | zgqseixrmkdf 1376 | 1377 | hzasq 1378 | bylsqz 1379 | tsgqz 1380 | zshqf 1381 | 1382 | yglczv 1383 | hvclyug 1384 | lcvgy 1385 | cvlwyge 1386 | 1387 | rjxwahkfqybcsnm 1388 | lnpygfhirmkbawqxjc 1389 | jasnrhfkwyxmdcqb 1390 | ahqxcdfbjwyzknrm 1391 | 1392 | rnumlkzyxhsqv 1393 | klxmonyuvrhsqzp 1394 | iunymsrhqlzvxk 1395 | kmquyhnlxzvsr 1396 | 1397 | zsegylqmhjapvwtb 1398 | azvheoqmrpgwjblts 1399 | ptsjblwhaqzvegym 1400 | 1401 | i 1402 | uf 1403 | kb 1404 | l 1405 | wl 1406 | 1407 | zjx 1408 | xdtjroe 1409 | jfca 1410 | mynsvluwb 1411 | 1412 | dcrxnvw 1413 | nxwdprc 1414 | ldxnwycrp 1415 | nxcrdw 1416 | 1417 | gfljwsonki 1418 | ydxaecbqvr 1419 | upfmhtsz 1420 | 1421 | mrephsjynzlku 1422 | yloxaetzhjfusikm 1423 | 1424 | bsfqnlocdv 1425 | vdxfuqcolsz 1426 | wehgsfarqyvopmt 1427 | 1428 | ulcyihg 1429 | lcvug 1430 | gulc 1431 | 1432 | jxwopchkgf 1433 | hwgpkjuo 1434 | gjhpuokwn 1435 | 1436 | miqsvpoegzknxj 1437 | sjzwveifogaquykcm 1438 | 1439 | t 1440 | rnkaqm 1441 | kpa 1442 | sdjlv 1443 | 1444 | wolpetm 1445 | omutwlq 1446 | odwtm 1447 | twoipm 1448 | motzw 1449 | 1450 | opvwc 1451 | cpvw 1452 | 1453 | zunej 1454 | vzjqfikme 1455 | xlzegjac 1456 | zlnjge 1457 | 1458 | vjpznxu 1459 | uxeyovpj 1460 | rxjkwpvu 1461 | jbvpmux 1462 | pxjwvu 1463 | 1464 | xvfqhmzwnkudciogp 1465 | hbqpcxdonwmugzfikv 1466 | xkvfgonizcwpdqumh 1467 | qpzfomginkwvduchx 1468 | 1469 | o 1470 | o 1471 | 1472 | yaihsrozcb 1473 | zyuicoharb 1474 | cyiarhzob 1475 | ychborazi 1476 | 1477 | hcpefysokwnt 1478 | jlcwnpqxkfehy 1479 | zpfvahrmunbwgedi 1480 | 1481 | eqkcmtaj 1482 | gvzuiwdhbspx 1483 | tykcq 1484 | 1485 | dm 1486 | md 1487 | 1488 | vgpbiofdeynalk 1489 | nvfgkbleyiopda 1490 | bfndkevaogliyp 1491 | 1492 | xmtgyovfqhlszdbecirp 1493 | swutolzmcixyvgqnhr 1494 | vlqxcjzgtaiyhmsor 1495 | 1496 | ixv 1497 | irv 1498 | vri 1499 | vi 1500 | lvi 1501 | 1502 | nwac 1503 | nac 1504 | anocgx 1505 | cna 1506 | 1507 | r 1508 | dr 1509 | rv 1510 | 1511 | tzlxd 1512 | xwqpibztulad 1513 | mjxltyfsz 1514 | hzlxet 1515 | zxlt 1516 | 1517 | u 1518 | u 1519 | u 1520 | u 1521 | 1522 | drqztbxkyajfnwgovslhmui 1523 | oivcrkxqbdtunamflhwygjsz 1524 | falhroiudgszvkytjxwbnqm 1525 | 1526 | qnihelxaus 1527 | xsieavhqld 1528 | 1529 | hybtifmsalgwq 1530 | tywkxqszgfprmo 1531 | 1532 | m 1533 | m 1534 | hm 1535 | 1536 | imjxcnz 1537 | jxznpw 1538 | bjzxougye 1539 | 1540 | mpbytfl 1541 | tujhimgws 1542 | 1543 | hnlpwedivbuqrf 1544 | xqwjrnahgbyu 1545 | 1546 | gzyvowjxchiarlksb 1547 | amepscroidgkwhvzxyjl 1548 | ryxzcasljivokghw 1549 | 1550 | n 1551 | n 1552 | n 1553 | 1554 | yvgiotm 1555 | gviytmo 1556 | imtyov 1557 | oitmyvuj 1558 | 1559 | euanslzqvgfxipbo 1560 | iudlbnjwvcythmrpe 1561 | 1562 | wktbvufdamyenjsclzxqhgpi 1563 | aivtwmgczybnsxdkhplque 1564 | phuxzyctembvqgraksinlwd 1565 | 1566 | nbht 1567 | hntb 1568 | thbn 1569 | nhbt 1570 | rthnb 1571 | 1572 | yvr 1573 | gvy 1574 | ryv 1575 | vry 1576 | 1577 | bhocmeravgznykujf 1578 | nmvgeboafkpuz 1579 | egvafobumknz 1580 | 1581 | zklgbcevfojhwriq 1582 | zjqflxokvhgeicbwr 1583 | kcioelrbjhfzvwgq 1584 | 1585 | vux 1586 | uv 1587 | 1588 | rsnpdmklh 1589 | lxrqczu 1590 | joiaegvyb 1591 | 1592 | tp 1593 | ipt 1594 | paexwtu 1595 | 1596 | v 1597 | sej 1598 | xiv 1599 | 1600 | l 1601 | w 1602 | l 1603 | cj 1604 | l 1605 | 1606 | marvbhizesfugdnpclqkwxyj 1607 | nxkyrdwzflgbjqsaecpiuhm 1608 | 1609 | vzl 1610 | z 1611 | 1612 | ztey 1613 | ytez 1614 | ezty 1615 | eytz 1616 | tyez 1617 | 1618 | kdnocrgm 1619 | mdngokc 1620 | socfkndiglamj 1621 | nkdecmgo 1622 | 1623 | pdiazkqeju 1624 | idulkeqjpazf 1625 | peazkindquj 1626 | 1627 | pwdimugxeh 1628 | hzpbwudxmegi 1629 | gemhpwixdu 1630 | ixwdhmegup 1631 | 1632 | dxp 1633 | qpdcx 1634 | dxp 1635 | fxdowkps 1636 | dxvbghyp 1637 | 1638 | a 1639 | a 1640 | aj 1641 | 1642 | pf 1643 | fp 1644 | pf 1645 | 1646 | ghzxa 1647 | xvdzjy 1648 | xnzrabf 1649 | lzfknbxqas 1650 | 1651 | b 1652 | u 1653 | b 1654 | 1655 | pmgjysxhkw 1656 | zpbfaqh 1657 | 1658 | bqltrv 1659 | fzt 1660 | umtc 1661 | 1662 | tvaylxdmfr 1663 | rzgibpqjlhcky 1664 | 1665 | rcmkjw 1666 | zrjm 1667 | jtmfr 1668 | mjr 1669 | 1670 | oji 1671 | ijw 1672 | oij 1673 | qijc 1674 | 1675 | togbvkacqjrnsdm 1676 | qbvandscrtmfojg 1677 | vnomkqrjcdgbsat 1678 | 1679 | fxm 1680 | mf 1681 | mf 1682 | 1683 | labnifyw 1684 | nwibyfjs 1685 | faidyb 1686 | bsuixy 1687 | cbermhptokvgizqy 1688 | 1689 | jaoei 1690 | auogj 1691 | naglo 1692 | zuaoxj 1693 | hsdcykwovftarq 1694 | 1695 | vfqa 1696 | vqa 1697 | aqv 1698 | iqav 1699 | 1700 | xsbpdzu 1701 | lbunzwrqdsgvxp 1702 | dtbfapxuizjys 1703 | ksgrvzbwpxdue 1704 | 1705 | edxwayiz 1706 | jgpfqkm 1707 | zvewc 1708 | 1709 | odxts 1710 | cedxpost 1711 | xotsdi 1712 | qtdoxs 1713 | 1714 | ysqxkzdcbuergwjfivtoph 1715 | zafthripqcdeoumjyxlnvkgws 1716 | 1717 | hfrujsmvckxwniepdy 1718 | jwaeprnxdylsucfkimv 1719 | 1720 | vdapyuqzsxbk 1721 | gvicztrjqmf 1722 | 1723 | dlmjakb 1724 | iwabdjk 1725 | 1726 | q 1727 | q 1728 | 1729 | wk 1730 | wk 1731 | wk 1732 | kw 1733 | kw 1734 | 1735 | uwbkfojtazpvsygxqnhmiel 1736 | cbfuoxewakqmrpnzt 1737 | 1738 | pcbye 1739 | pebyc 1740 | beucyp 1741 | padygebw 1742 | ebpy 1743 | 1744 | imtqugjanrwpexl 1745 | ianpcluewjrg 1746 | lgjeiyopnwuar 1747 | 1748 | idjahpnsfyvokzctmr 1749 | jfcshiradvpozlyutnk 1750 | 1751 | cyvapdrqtgzksnm 1752 | vjylmgcusotzpqdna 1753 | 1754 | lwgqftpameshzcxjvio 1755 | denobxsjhawukyq 1756 | 1757 | nilbuswmv 1758 | cuwqsl 1759 | sxulw 1760 | 1761 | ikano 1762 | vtrzxyqeulw 1763 | 1764 | isugbhaxowyzd 1765 | yhuasbzdgwoxi 1766 | gihodusxwaytzb 1767 | 1768 | ucdtwxjqbozv 1769 | vtdxbzjqwcu 1770 | bvjdqwyxzcut 1771 | dcvbxzwtjqu 1772 | jqtcbzvwudx 1773 | 1774 | k 1775 | k 1776 | k 1777 | 1778 | zpvou 1779 | uoxavznp 1780 | pouva 1781 | opyjqivlhuebg 1782 | 1783 | hr 1784 | vr 1785 | lcne 1786 | 1787 | csngfr 1788 | gsn 1789 | nsg 1790 | ngs 1791 | gsn 1792 | 1793 | gtfpwms 1794 | swt 1795 | wtls 1796 | etwzs 1797 | 1798 | sdnurw 1799 | cnldptvwrsg 1800 | ibjrxmzofnadehk 1801 | 1802 | moizkgtebyscwf 1803 | okgcqwsifrybtez 1804 | iefxohlsjykabtgcu 1805 | oygcfkbtised 1806 | eowipvcygfbknst 1807 | 1808 | bktuncgwoimd 1809 | utdocihgkmbwn 1810 | kbomndicwgtu 1811 | gowmcbdnutki 1812 | 1813 | kchguwafroy 1814 | uhkocrjeqaxwbg 1815 | 1816 | flvhgjzbcd 1817 | cdbygeztf 1818 | bghqzcmf 1819 | gpcrbkzsufi 1820 | 1821 | xkzfocvps 1822 | vlhofui 1823 | jbrfmanov 1824 | pvsjdfrzow 1825 | 1826 | os 1827 | s 1828 | ds 1829 | os 1830 | s 1831 | 1832 | abldotguwpcivn 1833 | boaqpwxlvg 1834 | bymzhfgwseovl 1835 | 1836 | bhz 1837 | zbh 1838 | hzb 1839 | 1840 | xb 1841 | bx 1842 | bx 1843 | bxn 1844 | 1845 | c 1846 | co 1847 | icy 1848 | 1849 | ydilw 1850 | ylwdih 1851 | lwydi 1852 | gydwilt 1853 | cldwiy 1854 | 1855 | hr 1856 | h 1857 | rh 1858 | h 1859 | he 1860 | 1861 | lhbpo 1862 | flbho 1863 | hbol 1864 | ihkrjbol 1865 | lvbhqo 1866 | 1867 | l 1868 | l 1869 | l 1870 | ls 1871 | gl 1872 | 1873 | o 1874 | h 1875 | jr 1876 | so 1877 | dbf 1878 | 1879 | wljmryca 1880 | mlgjcr 1881 | cljrm 1882 | rljmcz 1883 | rcplmjg 1884 | 1885 | ayhfznrgoub 1886 | kfzgmoynlwbjt 1887 | 1888 | tadlv 1889 | vduat 1890 | vadlht 1891 | 1892 | xlkngoz 1893 | sxbwply 1894 | 1895 | fkutnyrvsxpqcmzw 1896 | pjwltkoymruvzfxcsq 1897 | vkzmqdtsfxchyuwr 1898 | kmyfzaexcswvurtqi 1899 | 1900 | epirjxhtngblam 1901 | selbxmgnrthiacvf 1902 | elnmtrhxpbagi 1903 | xrenthmilbgad 1904 | mlbxantpehgri 1905 | 1906 | mjilctopnk 1907 | ltjnxkcmip 1908 | pkijcsmdetln 1909 | tjincphkml 1910 | 1911 | hbufxmodlyeqj 1912 | mwzhjbefdupxqolayg 1913 | notqhbdlefjmxuy 1914 | lyqobxdeuhfjm 1915 | lefdmhoqxcujyibr 1916 | 1917 | hktjbxf 1918 | zurltvgfbhy 1919 | bitpoknhfesa 1920 | 1921 | xwlpniufjtbesdkhzv 1922 | sdhilwvxjfpzubekt 1923 | bxaejlktihosdpfuzvw 1924 | xhudtfezbnwjlpsikv 1925 | 1926 | juxwcq 1927 | wqjxf 1928 | qwjx 1929 | xjqw 1930 | 1931 | dqesyxulowh 1932 | xtoswqyehidl 1933 | qslhxcyeodw 1934 | 1935 | codpb 1936 | daljbpoc 1937 | moczdbp 1938 | 1939 | idpuf 1940 | jdcfu 1941 | uzdgfhto 1942 | 1943 | rgknle 1944 | glkren 1945 | eglknr 1946 | 1947 | xplkswhuqtozn 1948 | bamjdvgie 1949 | 1950 | dqvapsmu 1951 | toyfnw 1952 | zbhgjlrko 1953 | 1954 | kxenarljymgfoqwic 1955 | eikoygxcarqfnwmjl 1956 | 1957 | rmvfd 1958 | rdfm 1959 | dfrm 1960 | mwdrf 1961 | 1962 | ipedzvkoabrtfynmgjhqcl 1963 | hpzdcbyiorklfangmeqvtj 1964 | vpacthzroeilydqbngfkmj 1965 | ocylkvpimjbdqrnegaftzh 1966 | lvpmzaoicnrghtkdjfyqeb 1967 | 1968 | mniubl 1969 | lumnbi 1970 | 1971 | twvodzl 1972 | ipbcmnxfhsy 1973 | jgvedu 1974 | 1975 | ykhpfrnig 1976 | aktiyrfhgpnv 1977 | ipgyrnhfk 1978 | ghnyifrpk 1979 | 1980 | bhsrjdm 1981 | mjrsbdh 1982 | djrsmbh 1983 | rsjdbxqmh 1984 | 1985 | wvuocghaikszrt 1986 | qhxtucpmjzgowisbdlf 1987 | wcoutishgz 1988 | 1989 | nmfuwei 1990 | wtnrmieu 1991 | 1992 | ykgtrsvpiq 1993 | lmxdcwuehzfb 1994 | 1995 | txlqnp 1996 | xlqpnt 1997 | qxpulnt 1998 | qpxltn 1999 | 2000 | uyrqhei 2001 | laqwuihxe 2002 | clgeqiydbhk 2003 | fgqiupeh 2004 | oqimzshenjvt 2005 | 2006 | bkvz 2007 | kvzb 2008 | okvztb 2009 | kvbz 2010 | kbvz 2011 | 2012 | g 2013 | g 2014 | g 2015 | g 2016 | 2017 | z 2018 | s 2019 | s 2020 | z 2021 | e 2022 | 2023 | hrvinjdwbtl 2024 | dlivwhjtrb 2025 | dbwvlojrhctiq 2026 | 2027 | ilyrdmqjgb 2028 | ydubicflm 2029 | 2030 | idkpzwqbvatocu 2031 | ubdqawekipovxct 2032 | mgvebcadfwtkquxrio 2033 | dotvnsqkubacwyijh 2034 | ultikvoqwcdpab 2035 | 2036 | w 2037 | wd 2038 | w 2039 | 2040 | pvbouylkhdtrgxnifajwmec 2041 | actuxymjbfidhloewpgqr 2042 | hxzeaorwtpiludbjqmgcyf 2043 | 2044 | csjyebmigpdl 2045 | prysedgbumjc 2046 | 2047 | pkitmzfu 2048 | puikeqf 2049 | 2050 | yafwqrdhpn 2051 | bxoevlstjm 2052 | 2053 | iohkjpefsmvadgcu 2054 | plhbiucsgjtwaovfm 2055 | gjmpuvifchqasko 2056 | msvxhogjiuafcp 2057 | icvoujazphgmfs 2058 | -------------------------------------------------------------------------------- /day6/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) split isString foldl' filter match elem length; 4 | inherit (import ../utils.nix) simpleSplit sum; 5 | groups = simpleSplit "\n\n" input; 6 | answers = map (x: filter (y: match "[a-z]" y != null) (simpleSplit "" x)) groups; 7 | dedupAnswers = map (foldl' (a: b: if elem b a then a else a ++ [b]) []) answers; 8 | output = sum (map length dedupAnswers); 9 | in 10 | { inherit groups simpleSplit sum output; } 11 | -------------------------------------------------------------------------------- /day6/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input}: 2 | let 3 | inherit (builtins) foldl' length match head tail elem; 4 | inherit (import ./part1.nix { inherit input; }) groups simpleSplit sum; 5 | answers = map (group: let 6 | people = simpleSplit "\n" group; 7 | initial = head people; 8 | # asnwers that a single person gave 9 | answers = simpleSplit ""; 10 | check = tail people; 11 | all = foldl' (a: b: a && b) true; 12 | in 13 | foldl' (a: b: if all (map (x: elem b (answers x)) check) then a ++ [b] else a) [] (answers initial)) groups; 14 | output = sum (map length answers); 15 | in 16 | { inherit output answers; } 17 | -------------------------------------------------------------------------------- /day7/input: -------------------------------------------------------------------------------- 1 | posh teal bags contain 2 faded coral bags, 3 striped crimson bags, 1 faded red bag. 2 | mirrored chartreuse bags contain 3 clear beige bags, 3 shiny silver bags, 3 bright green bags. 3 | dotted red bags contain 4 light chartreuse bags. 4 | faded chartreuse bags contain 1 striped black bag, 1 dim coral bag, 5 mirrored maroon bags. 5 | bright teal bags contain 3 light black bags, 4 striped fuchsia bags, 1 dark chartreuse bag. 6 | dull orange bags contain 5 striped green bags, 3 plaid plum bags, 3 pale gray bags. 7 | dotted tomato bags contain 5 plaid blue bags, 2 dull maroon bags, 1 mirrored maroon bag, 3 posh brown bags. 8 | drab tan bags contain 1 striped chartreuse bag, 5 dull lavender bags. 9 | mirrored indigo bags contain 3 mirrored fuchsia bags, 2 striped green bags. 10 | bright white bags contain 2 dark green bags, 4 bright yellow bags. 11 | dotted cyan bags contain 1 posh orange bag, 2 faded white bags. 12 | vibrant orange bags contain 1 faded silver bag. 13 | plaid lime bags contain 4 shiny olive bags, 5 dim olive bags, 1 dotted gray bag, 2 clear black bags. 14 | pale green bags contain 2 plaid silver bags, 5 dark blue bags, 1 muted blue bag, 3 posh white bags. 15 | dotted brown bags contain 3 dark bronze bags, 5 posh fuchsia bags, 3 plaid cyan bags. 16 | muted yellow bags contain 2 vibrant fuchsia bags, 4 striped brown bags, 3 muted tan bags, 1 shiny plum bag. 17 | light crimson bags contain 3 bright lavender bags, 1 shiny olive bag. 18 | striped black bags contain 2 drab aqua bags, 1 clear black bag, 5 mirrored teal bags, 3 dark chartreuse bags. 19 | faded olive bags contain 2 drab aqua bags. 20 | clear black bags contain no other bags. 21 | dark coral bags contain 4 drab magenta bags. 22 | striped brown bags contain 1 bright lavender bag, 1 wavy lime bag, 2 dark chartreuse bags, 2 dim aqua bags. 23 | dull blue bags contain 5 plaid purple bags, 1 drab chartreuse bag. 24 | dark indigo bags contain 5 vibrant white bags, 3 bright lavender bags, 1 bright tan bag, 4 drab aqua bags. 25 | shiny tomato bags contain 1 dark chartreuse bag. 26 | plaid maroon bags contain 5 striped black bags, 5 drab green bags. 27 | plaid brown bags contain 5 plaid indigo bags, 5 shiny gray bags. 28 | dark yellow bags contain 2 vibrant cyan bags. 29 | bright maroon bags contain 4 shiny beige bags. 30 | muted maroon bags contain 3 striped bronze bags, 4 clear gold bags, 1 light red bag. 31 | plaid purple bags contain 1 faded magenta bag, 5 dotted turquoise bags. 32 | wavy chartreuse bags contain 2 clear purple bags, 2 drab green bags, 3 wavy maroon bags. 33 | posh indigo bags contain 3 striped crimson bags, 5 mirrored maroon bags, 1 mirrored crimson bag, 2 drab orange bags. 34 | drab black bags contain 1 drab plum bag. 35 | striped gray bags contain 5 shiny teal bags, 2 vibrant magenta bags. 36 | light yellow bags contain 4 clear black bags, 2 dim olive bags, 5 wavy lavender bags, 2 pale chartreuse bags. 37 | faded tomato bags contain 3 dark aqua bags, 3 pale turquoise bags, 4 pale purple bags, 3 posh plum bags. 38 | posh crimson bags contain 1 drab green bag, 3 dim aqua bags. 39 | muted tomato bags contain 1 dim orange bag. 40 | bright indigo bags contain 1 posh brown bag. 41 | dotted silver bags contain 4 vibrant teal bags, 3 wavy violet bags, 4 dark black bags, 3 dotted orange bags. 42 | dark fuchsia bags contain 3 vibrant salmon bags, 3 dotted gray bags, 2 dull chartreuse bags. 43 | dull indigo bags contain 5 dark gold bags, 1 light crimson bag, 2 light bronze bags, 5 vibrant chartreuse bags. 44 | light gold bags contain 1 plaid indigo bag, 1 mirrored crimson bag, 1 dull indigo bag. 45 | dark cyan bags contain 2 dull brown bags, 5 bright fuchsia bags, 3 striped purple bags. 46 | posh chartreuse bags contain 1 light gray bag, 5 wavy tomato bags. 47 | bright gold bags contain 1 clear teal bag, 1 dim purple bag, 5 striped bronze bags. 48 | striped magenta bags contain 5 vibrant chartreuse bags, 3 wavy olive bags, 5 mirrored orange bags. 49 | mirrored gold bags contain 2 striped fuchsia bags, 5 wavy yellow bags, 5 dull lime bags. 50 | dark chartreuse bags contain no other bags. 51 | dim bronze bags contain 3 dim coral bags, 1 light plum bag, 1 posh orange bag. 52 | dim coral bags contain 3 shiny teal bags, 5 plaid bronze bags, 1 vibrant magenta bag, 5 faded yellow bags. 53 | bright lavender bags contain 4 bright indigo bags, 4 faded yellow bags, 5 posh black bags. 54 | posh cyan bags contain 1 dotted violet bag, 1 shiny violet bag, 2 dull chartreuse bags, 2 wavy turquoise bags. 55 | wavy lavender bags contain 2 dim fuchsia bags, 1 dotted red bag, 5 clear maroon bags, 1 dull lime bag. 56 | vibrant salmon bags contain 4 posh indigo bags, 2 faded tomato bags. 57 | clear gray bags contain 5 dim olive bags, 1 striped turquoise bag, 4 striped tan bags, 4 plaid lime bags. 58 | bright cyan bags contain 1 pale turquoise bag, 4 vibrant white bags, 4 muted gray bags, 2 clear orange bags. 59 | posh purple bags contain 1 striped tan bag, 1 dim aqua bag, 4 light bronze bags, 1 bright chartreuse bag. 60 | dim yellow bags contain 1 posh lavender bag. 61 | dim blue bags contain 4 light indigo bags, 5 shiny fuchsia bags, 5 drab fuchsia bags, 5 dark purple bags. 62 | wavy cyan bags contain 3 clear beige bags, 4 striped blue bags, 2 faded coral bags. 63 | mirrored orange bags contain 5 dark bronze bags, 3 striped blue bags, 2 posh orange bags. 64 | muted orange bags contain 5 dotted violet bags, 5 bright violet bags, 2 vibrant salmon bags. 65 | vibrant coral bags contain 5 bright cyan bags, 5 shiny indigo bags, 2 bright bronze bags. 66 | bright gray bags contain 1 clear red bag, 5 dull orange bags, 4 bright cyan bags. 67 | muted bronze bags contain 4 dim lavender bags. 68 | shiny blue bags contain 2 dim chartreuse bags, 3 muted beige bags, 5 mirrored plum bags. 69 | posh bronze bags contain 3 dull purple bags, 4 wavy magenta bags. 70 | faded magenta bags contain 5 clear tomato bags, 5 dull plum bags, 4 light red bags. 71 | posh tan bags contain 3 clear olive bags, 4 clear lavender bags. 72 | muted teal bags contain 1 striped magenta bag. 73 | dull brown bags contain 2 drab black bags, 3 striped bronze bags. 74 | shiny white bags contain 3 faded blue bags, 3 dotted salmon bags, 2 drab black bags. 75 | wavy red bags contain 4 vibrant magenta bags, 3 muted green bags, 4 mirrored teal bags. 76 | dim silver bags contain 3 striped purple bags, 5 drab violet bags, 2 striped bronze bags, 3 wavy green bags. 77 | dull magenta bags contain 1 dim crimson bag, 1 light aqua bag. 78 | dull plum bags contain 5 dim indigo bags, 2 dotted red bags. 79 | mirrored lime bags contain 3 bright tan bags, 3 bright orange bags. 80 | muted green bags contain 3 faded yellow bags, 2 drab maroon bags, 1 dark chartreuse bag, 2 mirrored teal bags. 81 | clear crimson bags contain 4 posh fuchsia bags, 2 dull aqua bags, 3 faded tan bags. 82 | drab aqua bags contain no other bags. 83 | dull chartreuse bags contain 4 dotted gray bags, 2 dim red bags, 3 dull yellow bags. 84 | posh aqua bags contain 5 striped orange bags. 85 | dark blue bags contain 2 dark gold bags, 2 faded yellow bags. 86 | posh red bags contain 2 mirrored brown bags, 4 shiny orange bags, 4 striped lavender bags, 5 light turquoise bags. 87 | dim lime bags contain 1 muted turquoise bag, 2 posh gold bags, 2 dull violet bags, 3 dotted lavender bags. 88 | faded yellow bags contain no other bags. 89 | dark red bags contain 2 posh beige bags, 3 shiny tomato bags, 3 light salmon bags. 90 | dull purple bags contain 3 bright red bags. 91 | dark violet bags contain 4 clear salmon bags, 2 dark gold bags, 1 dotted cyan bag, 3 dim purple bags. 92 | muted indigo bags contain 5 striped bronze bags, 4 posh olive bags, 5 striped purple bags. 93 | plaid crimson bags contain 1 bright violet bag, 3 bright red bags, 5 clear orange bags, 2 dark purple bags. 94 | muted silver bags contain 1 clear tomato bag. 95 | dull black bags contain 4 striped gold bags. 96 | faded red bags contain 1 posh indigo bag, 2 striped crimson bags, 3 muted indigo bags. 97 | muted lime bags contain 5 plaid lavender bags, 4 dim fuchsia bags. 98 | mirrored crimson bags contain 4 light bronze bags, 1 wavy red bag, 4 drab violet bags, 4 faded white bags. 99 | posh gray bags contain 3 dim olive bags. 100 | posh violet bags contain 4 mirrored white bags, 4 dim indigo bags. 101 | plaid black bags contain 5 bright purple bags. 102 | vibrant indigo bags contain 3 mirrored blue bags, 4 dim teal bags, 2 dim beige bags, 1 light black bag. 103 | mirrored beige bags contain 3 plaid tomato bags, 5 faded black bags, 3 vibrant aqua bags, 4 striped coral bags. 104 | pale turquoise bags contain 2 faded beige bags. 105 | striped tomato bags contain 5 dull indigo bags, 2 dull plum bags. 106 | muted black bags contain 3 faded plum bags, 5 vibrant tan bags. 107 | dark crimson bags contain 2 muted black bags, 2 faded gray bags. 108 | dark turquoise bags contain 3 posh olive bags, 1 striped crimson bag. 109 | faded crimson bags contain 1 posh tomato bag, 2 dotted tomato bags, 1 shiny lime bag. 110 | mirrored yellow bags contain 2 wavy gold bags. 111 | dull silver bags contain 5 plaid blue bags, 4 faded green bags. 112 | pale salmon bags contain 1 clear fuchsia bag, 3 muted white bags, 4 pale violet bags, 2 vibrant yellow bags. 113 | pale plum bags contain 3 faded green bags. 114 | shiny turquoise bags contain 4 shiny maroon bags. 115 | plaid magenta bags contain 5 posh salmon bags, 4 muted tan bags, 3 light silver bags. 116 | mirrored black bags contain 1 pale plum bag, 5 wavy gold bags, 1 mirrored magenta bag, 4 clear lime bags. 117 | mirrored magenta bags contain 4 clear beige bags, 2 plaid indigo bags, 4 faded coral bags, 2 clear tomato bags. 118 | striped lime bags contain 5 muted white bags, 4 faded tan bags, 1 dull plum bag. 119 | pale coral bags contain 2 posh coral bags, 2 mirrored turquoise bags, 4 clear yellow bags, 4 wavy teal bags. 120 | dotted gray bags contain 2 drab aqua bags, 1 faded coral bag, 3 clear black bags. 121 | faded tan bags contain 1 shiny salmon bag, 5 drab plum bags, 2 dotted lavender bags, 3 shiny yellow bags. 122 | dull aqua bags contain 2 faded black bags, 5 bright indigo bags. 123 | dotted violet bags contain 2 posh green bags, 3 plaid lime bags. 124 | faded aqua bags contain 3 clear gold bags, 3 striped bronze bags. 125 | vibrant yellow bags contain 4 pale magenta bags, 2 pale black bags. 126 | posh silver bags contain 3 shiny black bags, 2 dull purple bags, 1 light lime bag, 5 muted silver bags. 127 | vibrant purple bags contain 5 pale olive bags, 3 muted bronze bags. 128 | drab orange bags contain 4 dark aqua bags, 3 posh black bags, 4 shiny beige bags. 129 | clear green bags contain 1 dark lime bag, 2 bright orange bags, 2 mirrored maroon bags, 3 dark bronze bags. 130 | dark tomato bags contain 2 drab yellow bags. 131 | clear blue bags contain 3 pale bronze bags, 3 drab aqua bags, 3 striped tan bags, 1 shiny tan bag. 132 | muted red bags contain 3 dark olive bags, 3 faded teal bags. 133 | wavy olive bags contain 5 faded chartreuse bags, 2 striped black bags. 134 | pale red bags contain 4 bright orange bags, 5 drab orange bags, 2 striped brown bags, 2 striped bronze bags. 135 | dim brown bags contain 1 posh purple bag. 136 | dotted lavender bags contain 2 bright chartreuse bags, 2 pale gray bags. 137 | clear aqua bags contain 1 vibrant plum bag, 5 dark plum bags. 138 | wavy fuchsia bags contain 1 pale purple bag. 139 | dim tomato bags contain 2 faded red bags, 3 clear teal bags, 4 striped chartreuse bags, 4 shiny green bags. 140 | striped maroon bags contain 4 posh coral bags. 141 | bright yellow bags contain 4 dark tomato bags, 3 pale gold bags, 4 dark gold bags, 5 shiny tomato bags. 142 | pale maroon bags contain 3 posh cyan bags. 143 | clear lime bags contain 4 faded coral bags. 144 | light violet bags contain 4 vibrant magenta bags, 3 bright yellow bags, 3 dull chartreuse bags. 145 | dotted maroon bags contain 5 mirrored salmon bags, 1 striped tomato bag, 5 dim coral bags. 146 | pale violet bags contain 1 dotted tan bag, 2 wavy white bags. 147 | clear salmon bags contain no other bags. 148 | dotted tan bags contain 3 posh beige bags, 4 bright chartreuse bags, 5 posh fuchsia bags, 2 pale gray bags. 149 | vibrant tan bags contain 4 dark plum bags, 3 clear teal bags, 2 faded yellow bags, 3 light chartreuse bags. 150 | pale lime bags contain 4 muted crimson bags. 151 | muted blue bags contain 2 light salmon bags, 1 bright aqua bag. 152 | plaid silver bags contain 5 striped magenta bags, 2 dull chartreuse bags. 153 | clear gold bags contain 5 shiny gray bags, 2 vibrant white bags. 154 | dim salmon bags contain 3 striped olive bags, 1 faded teal bag, 3 posh gold bags. 155 | muted gold bags contain 5 shiny lavender bags, 5 bright orange bags, 3 dark lime bags, 2 dim blue bags. 156 | dotted orange bags contain 4 muted lavender bags. 157 | plaid yellow bags contain 2 posh green bags, 5 faded white bags, 5 plaid blue bags. 158 | posh yellow bags contain 2 shiny lime bags, 2 mirrored cyan bags. 159 | wavy lime bags contain 3 vibrant plum bags. 160 | clear teal bags contain 3 mirrored blue bags, 3 posh maroon bags, 2 muted cyan bags, 2 drab aqua bags. 161 | faded maroon bags contain 1 dull magenta bag, 3 dull green bags, 3 muted coral bags, 5 pale beige bags. 162 | drab salmon bags contain 5 faded tomato bags, 3 clear green bags. 163 | pale orange bags contain 4 clear orange bags, 4 wavy fuchsia bags, 5 clear cyan bags, 5 dark red bags. 164 | clear indigo bags contain 1 shiny gold bag, 2 light aqua bags, 2 bright orange bags. 165 | faded gold bags contain 1 posh maroon bag, 3 faded indigo bags, 5 muted purple bags, 3 wavy tomato bags. 166 | drab cyan bags contain 1 wavy white bag, 3 dotted turquoise bags. 167 | striped blue bags contain 3 shiny beige bags. 168 | vibrant black bags contain 3 bright blue bags. 169 | striped green bags contain 5 shiny orange bags, 5 muted tomato bags, 1 clear teal bag. 170 | posh maroon bags contain 1 striped purple bag, 3 striped gray bags, 1 dark chartreuse bag, 5 vibrant magenta bags. 171 | dark beige bags contain 3 drab fuchsia bags, 2 mirrored cyan bags, 1 striped crimson bag. 172 | wavy crimson bags contain 1 mirrored aqua bag. 173 | striped gold bags contain 1 vibrant tomato bag, 5 faded aqua bags, 5 plaid salmon bags, 3 mirrored blue bags. 174 | dim plum bags contain 1 posh orange bag, 4 vibrant chartreuse bags. 175 | mirrored cyan bags contain 2 vibrant tomato bags, 4 clear black bags, 4 striped gold bags. 176 | plaid lavender bags contain 4 shiny lime bags, 4 pale gold bags, 3 posh teal bags, 1 dull lavender bag. 177 | wavy magenta bags contain 1 dim red bag. 178 | wavy bronze bags contain 4 shiny bronze bags, 1 drab turquoise bag, 5 muted tan bags, 2 dotted aqua bags. 179 | drab coral bags contain 3 dim lime bags. 180 | dull teal bags contain 1 vibrant aqua bag, 4 wavy lavender bags, 1 dark purple bag, 4 dark violet bags. 181 | faded beige bags contain 5 plaid indigo bags, 5 clear beige bags, 5 dull violet bags. 182 | mirrored gray bags contain 3 light bronze bags. 183 | dark green bags contain 1 dark violet bag, 1 posh black bag, 4 posh fuchsia bags, 1 shiny olive bag. 184 | posh coral bags contain 1 striped purple bag. 185 | muted salmon bags contain 1 bright orange bag. 186 | mirrored teal bags contain no other bags. 187 | dotted turquoise bags contain 5 dark tomato bags, 1 plaid plum bag, 2 wavy gold bags. 188 | wavy tan bags contain 3 dim cyan bags, 2 dim maroon bags. 189 | light tomato bags contain 5 muted cyan bags, 2 dotted green bags, 4 dark aqua bags. 190 | mirrored green bags contain 5 light tomato bags, 3 dim magenta bags, 4 drab maroon bags. 191 | bright black bags contain 2 mirrored violet bags, 3 dull brown bags, 5 clear gray bags, 3 dull chartreuse bags. 192 | bright silver bags contain 1 dotted brown bag, 4 vibrant yellow bags. 193 | pale black bags contain 5 drab magenta bags, 5 vibrant magenta bags. 194 | wavy indigo bags contain 2 dotted green bags, 1 shiny orange bag, 1 dark lime bag, 1 mirrored blue bag. 195 | shiny fuchsia bags contain 1 muted lavender bag, 5 posh beige bags, 3 clear salmon bags, 3 posh brown bags. 196 | muted white bags contain 4 posh orange bags, 4 clear orange bags. 197 | shiny lavender bags contain 3 wavy olive bags, 3 dull crimson bags. 198 | clear violet bags contain 5 shiny plum bags. 199 | striped purple bags contain 2 drab maroon bags, 2 vibrant magenta bags, 3 shiny teal bags. 200 | clear tomato bags contain 3 posh brown bags. 201 | wavy purple bags contain 4 striped indigo bags, 5 striped crimson bags. 202 | dark teal bags contain 2 dim coral bags, 5 dim fuchsia bags. 203 | drab blue bags contain 5 dim indigo bags. 204 | faded gray bags contain 5 dull brown bags, 5 mirrored brown bags, 3 shiny magenta bags, 5 dotted violet bags. 205 | faded violet bags contain 3 wavy purple bags, 2 light maroon bags. 206 | pale brown bags contain 5 clear red bags, 2 plaid chartreuse bags. 207 | faded white bags contain 2 drab maroon bags, 2 shiny tomato bags. 208 | posh brown bags contain no other bags. 209 | dotted olive bags contain 3 pale teal bags, 1 bright purple bag. 210 | mirrored fuchsia bags contain 1 dull maroon bag, 5 dull green bags. 211 | dark orange bags contain 5 striped lavender bags, 1 posh black bag, 1 dark purple bag. 212 | pale fuchsia bags contain 5 plaid fuchsia bags, 1 dull lime bag, 4 pale bronze bags, 2 bright cyan bags. 213 | light brown bags contain 5 vibrant bronze bags. 214 | faded bronze bags contain 4 dim silver bags. 215 | vibrant chartreuse bags contain 5 shiny gray bags, 5 muted lavender bags, 3 posh fuchsia bags. 216 | dim teal bags contain 4 clear red bags, 2 faded silver bags, 1 muted blue bag, 5 wavy yellow bags. 217 | dotted chartreuse bags contain 4 striped fuchsia bags, 3 bright lavender bags, 3 vibrant blue bags, 4 mirrored maroon bags. 218 | dark purple bags contain 2 posh black bags. 219 | mirrored olive bags contain 3 dotted brown bags. 220 | shiny yellow bags contain 4 mirrored maroon bags, 3 dark plum bags, 5 muted green bags, 2 clear aqua bags. 221 | drab turquoise bags contain 3 dim coral bags, 3 dark chartreuse bags. 222 | striped orange bags contain 4 striped lime bags, 1 dim tan bag, 3 dull yellow bags, 2 vibrant cyan bags. 223 | dull turquoise bags contain 3 clear purple bags. 224 | muted fuchsia bags contain 2 wavy tomato bags, 5 dark maroon bags, 3 muted tomato bags, 4 vibrant plum bags. 225 | faded coral bags contain no other bags. 226 | bright red bags contain 1 dull crimson bag, 5 shiny teal bags, 4 shiny gold bags. 227 | bright purple bags contain 4 plaid indigo bags, 5 vibrant maroon bags, 2 dim red bags. 228 | light plum bags contain 3 drab aqua bags, 5 shiny tomato bags, 4 drab violet bags. 229 | faded orange bags contain 2 shiny teal bags, 5 striped gray bags, 2 dull lavender bags, 4 bright green bags. 230 | drab white bags contain 1 bright orange bag, 5 drab lime bags, 5 drab plum bags. 231 | posh lime bags contain 3 faded chartreuse bags. 232 | vibrant bronze bags contain 3 dim green bags, 1 clear gold bag, 4 striped bronze bags, 4 pale chartreuse bags. 233 | dark olive bags contain 5 dim purple bags, 5 mirrored maroon bags. 234 | striped plum bags contain 1 posh brown bag, 2 muted cyan bags, 3 faded yellow bags, 2 wavy plum bags. 235 | plaid tan bags contain 2 mirrored lavender bags, 2 striped silver bags. 236 | pale chartreuse bags contain 5 clear beige bags, 5 clear maroon bags, 4 wavy red bags, 5 dotted tan bags. 237 | vibrant teal bags contain 3 bright violet bags. 238 | vibrant silver bags contain 1 shiny teal bag, 2 pale purple bags, 5 dark lime bags. 239 | wavy orange bags contain 5 bright bronze bags, 4 vibrant aqua bags, 3 pale indigo bags, 3 muted beige bags. 240 | plaid tomato bags contain 3 faded teal bags, 1 dull green bag. 241 | muted purple bags contain 1 muted lavender bag, 5 light black bags. 242 | light red bags contain 3 posh green bags, 2 striped purple bags, 1 pale purple bag. 243 | shiny magenta bags contain 4 muted silver bags, 3 drab turquoise bags, 2 pale turquoise bags. 244 | light tan bags contain 5 bright green bags. 245 | clear fuchsia bags contain 5 faded coral bags, 2 drab plum bags, 2 clear beige bags, 1 pale teal bag. 246 | vibrant aqua bags contain 3 dim red bags. 247 | posh tomato bags contain 5 wavy magenta bags. 248 | drab plum bags contain 3 clear salmon bags, 5 mirrored teal bags, 4 striped aqua bags. 249 | pale lavender bags contain 4 clear black bags, 4 wavy green bags. 250 | drab beige bags contain 3 pale teal bags, 5 mirrored aqua bags, 4 posh beige bags. 251 | shiny aqua bags contain 3 striped black bags, 4 striped blue bags, 4 light salmon bags, 5 striped crimson bags. 252 | dull white bags contain 2 faded brown bags, 3 drab maroon bags, 5 striped olive bags, 1 bright fuchsia bag. 253 | vibrant gold bags contain 5 dotted aqua bags. 254 | dim turquoise bags contain 2 mirrored turquoise bags, 4 dark tomato bags, 4 clear lime bags. 255 | drab silver bags contain 3 drab plum bags. 256 | plaid plum bags contain 3 shiny gold bags, 1 wavy red bag, 1 plaid bronze bag, 5 vibrant magenta bags. 257 | wavy gray bags contain 2 dim plum bags, 4 light red bags, 3 wavy orange bags, 5 muted indigo bags. 258 | mirrored plum bags contain 4 dotted violet bags, 1 dim maroon bag. 259 | muted crimson bags contain 4 mirrored teal bags, 4 faded yellow bags, 5 striped aqua bags. 260 | clear plum bags contain 1 dark indigo bag, 3 shiny gold bags, 2 dim gray bags. 261 | dull gray bags contain 5 striped bronze bags, 5 plaid magenta bags, 3 muted orange bags. 262 | plaid violet bags contain 3 dotted yellow bags, 1 dotted aqua bag, 5 clear orange bags. 263 | light beige bags contain 4 dim tomato bags, 1 pale yellow bag, 3 faded beige bags, 3 dim yellow bags. 264 | plaid olive bags contain 5 shiny tan bags. 265 | faded fuchsia bags contain 4 wavy maroon bags. 266 | bright crimson bags contain 5 bright orange bags. 267 | drab chartreuse bags contain 4 drab red bags. 268 | dotted plum bags contain 5 striped blue bags, 5 light gold bags, 4 vibrant teal bags. 269 | muted plum bags contain 5 faded white bags, 5 striped brown bags, 1 posh brown bag, 5 drab maroon bags. 270 | bright turquoise bags contain 2 dull indigo bags, 2 mirrored tan bags, 5 clear tomato bags. 271 | drab violet bags contain 3 clear black bags, 2 mirrored teal bags, 5 faded yellow bags, 4 vibrant magenta bags. 272 | dotted blue bags contain 3 posh black bags. 273 | light silver bags contain 5 bright tan bags, 1 dull silver bag, 5 posh magenta bags, 5 pale chartreuse bags. 274 | drab indigo bags contain 1 dark purple bag, 1 pale magenta bag. 275 | pale teal bags contain 5 striped black bags, 1 faded cyan bag. 276 | shiny coral bags contain 1 mirrored lavender bag, 5 mirrored bronze bags, 1 bright violet bag. 277 | shiny maroon bags contain 3 mirrored teal bags, 4 light bronze bags, 5 plaid yellow bags. 278 | dim indigo bags contain 4 clear salmon bags, 1 pale gray bag, 5 posh purple bags. 279 | dotted purple bags contain 5 shiny tan bags, 4 posh indigo bags, 2 light maroon bags, 4 plaid plum bags. 280 | pale indigo bags contain 2 dark orange bags, 3 bright chartreuse bags, 5 pale purple bags. 281 | striped salmon bags contain 3 drab red bags, 1 light silver bag. 282 | dim tan bags contain 5 muted silver bags, 5 dull tomato bags, 2 dull violet bags. 283 | striped cyan bags contain 3 striped green bags, 4 muted cyan bags, 5 wavy beige bags. 284 | posh gold bags contain 3 dotted aqua bags. 285 | drab magenta bags contain 1 dim olive bag. 286 | dull maroon bags contain 2 dotted gray bags. 287 | drab lavender bags contain 2 dark tomato bags. 288 | drab gray bags contain 5 faded plum bags, 2 faded turquoise bags, 3 shiny purple bags. 289 | drab bronze bags contain 3 shiny indigo bags, 2 dull silver bags, 1 pale indigo bag. 290 | dark gold bags contain 1 striped bronze bag, 3 shiny gold bags, 4 striped purple bags, 2 wavy green bags. 291 | mirrored bronze bags contain 3 clear maroon bags, 2 striped plum bags, 1 vibrant plum bag, 5 mirrored aqua bags. 292 | clear purple bags contain 2 dim maroon bags. 293 | bright blue bags contain 1 vibrant aqua bag. 294 | striped tan bags contain 3 clear beige bags, 5 bright chartreuse bags, 5 shiny beige bags. 295 | plaid blue bags contain 4 wavy red bags, 3 clear salmon bags, 2 striped black bags, 2 drab aqua bags. 296 | striped coral bags contain 2 shiny aqua bags, 5 light aqua bags. 297 | pale yellow bags contain 3 clear aqua bags, 4 shiny indigo bags, 2 dim purple bags. 298 | wavy black bags contain 5 light gray bags, 5 dim green bags, 4 muted cyan bags. 299 | shiny beige bags contain 5 faded coral bags, 1 muted cyan bag, 2 dark aqua bags, 4 posh black bags. 300 | mirrored red bags contain 3 striped blue bags, 4 bright yellow bags. 301 | plaid chartreuse bags contain 5 dotted coral bags. 302 | dark white bags contain 3 wavy white bags, 4 bright violet bags, 5 drab bronze bags. 303 | drab lime bags contain 4 striped silver bags, 5 dim black bags, 1 posh teal bag. 304 | clear magenta bags contain 3 dark tomato bags, 5 drab silver bags, 2 shiny indigo bags, 3 mirrored silver bags. 305 | plaid white bags contain 5 dotted green bags, 2 light silver bags, 3 plaid lavender bags, 1 posh purple bag. 306 | shiny indigo bags contain 2 drab orange bags. 307 | faded green bags contain 3 muted cyan bags, 5 posh orange bags, 3 plaid plum bags. 308 | striped bronze bags contain 2 light plum bags, 3 shiny teal bags, 4 posh black bags. 309 | pale olive bags contain 5 striped gray bags, 3 striped lime bags. 310 | dim orange bags contain 4 mirrored maroon bags, 2 mirrored teal bags, 4 dim green bags, 2 muted green bags. 311 | pale cyan bags contain 1 light tomato bag, 2 dotted tan bags. 312 | muted chartreuse bags contain 2 dim coral bags, 3 posh indigo bags. 313 | dull tan bags contain 1 clear teal bag, 2 dark blue bags, 1 bright magenta bag. 314 | bright olive bags contain 3 mirrored lavender bags, 4 plaid bronze bags. 315 | dark maroon bags contain 1 clear blue bag, 4 dotted gray bags. 316 | plaid coral bags contain 4 muted salmon bags, 3 light teal bags, 4 pale black bags. 317 | pale beige bags contain 5 pale lavender bags, 1 shiny lime bag, 3 shiny yellow bags, 5 striped purple bags. 318 | vibrant brown bags contain 2 drab yellow bags. 319 | striped silver bags contain 3 vibrant aqua bags, 1 faded silver bag. 320 | drab gold bags contain 1 bright salmon bag. 321 | vibrant red bags contain 1 bright red bag. 322 | striped chartreuse bags contain 2 faded chartreuse bags, 2 striped tan bags. 323 | dotted yellow bags contain 3 drab aqua bags, 3 dark gold bags, 3 shiny orange bags. 324 | dotted gold bags contain 2 posh fuchsia bags, 3 faded teal bags, 1 pale black bag, 2 clear indigo bags. 325 | dark bronze bags contain 2 pale tomato bags, 5 posh fuchsia bags, 5 muted green bags. 326 | drab brown bags contain 4 dotted magenta bags. 327 | dull bronze bags contain 1 posh white bag, 2 muted teal bags, 5 vibrant tan bags. 328 | bright brown bags contain 3 bright bronze bags, 2 shiny tan bags, 3 dull green bags. 329 | dotted green bags contain 4 dim green bags. 330 | vibrant turquoise bags contain 1 mirrored magenta bag, 2 dark bronze bags. 331 | dim olive bags contain 3 mirrored blue bags, 5 drab maroon bags, 1 clear lime bag. 332 | posh plum bags contain 5 pale indigo bags. 333 | plaid bronze bags contain 1 plaid blue bag. 334 | shiny brown bags contain 3 shiny salmon bags, 1 striped tan bag, 4 clear aqua bags. 335 | clear olive bags contain 4 bright aqua bags, 1 clear maroon bag, 4 mirrored maroon bags. 336 | shiny black bags contain 3 pale violet bags. 337 | dotted lime bags contain 5 posh purple bags, 3 dotted fuchsia bags. 338 | clear lavender bags contain 4 striped fuchsia bags, 3 pale yellow bags. 339 | muted magenta bags contain 3 dim beige bags, 2 wavy plum bags. 340 | muted turquoise bags contain 1 faded cyan bag, 3 bright tan bags, 3 striped brown bags. 341 | wavy gold bags contain 5 striped tan bags, 5 muted salmon bags, 5 dark gold bags, 3 muted cyan bags. 342 | dull violet bags contain 1 faded white bag, 1 striped black bag, 2 vibrant maroon bags, 5 faded yellow bags. 343 | clear beige bags contain 1 shiny tomato bag, 5 posh brown bags, 1 faded cyan bag, 3 dotted gray bags. 344 | muted olive bags contain 1 dotted chartreuse bag, 3 pale chartreuse bags. 345 | posh blue bags contain 3 light red bags, 1 bright lavender bag, 4 dim coral bags, 2 clear lime bags. 346 | striped olive bags contain 3 shiny gold bags. 347 | mirrored tan bags contain 3 muted tomato bags. 348 | shiny plum bags contain 2 dark olive bags, 3 wavy green bags, 2 shiny lavender bags. 349 | plaid teal bags contain 3 posh purple bags, 1 muted violet bag, 2 dark tan bags, 1 wavy gold bag. 350 | striped white bags contain 1 striped turquoise bag, 3 shiny yellow bags. 351 | vibrant beige bags contain 1 clear olive bag, 4 wavy lime bags. 352 | vibrant crimson bags contain 4 muted salmon bags, 5 light bronze bags. 353 | muted aqua bags contain 4 plaid gold bags, 1 clear olive bag, 1 striped silver bag, 1 pale purple bag. 354 | dotted indigo bags contain 1 light gray bag, 3 dark olive bags, 1 faded beige bag. 355 | wavy aqua bags contain 3 muted fuchsia bags, 1 dull coral bag, 2 dark tan bags, 1 clear plum bag. 356 | dull coral bags contain 1 bright gold bag, 5 dark salmon bags, 3 mirrored fuchsia bags, 3 bright crimson bags. 357 | vibrant plum bags contain 1 drab violet bag, 3 shiny beige bags. 358 | mirrored white bags contain 3 drab bronze bags, 3 shiny aqua bags. 359 | dotted fuchsia bags contain 5 vibrant cyan bags, 4 mirrored teal bags, 1 drab white bag, 5 wavy black bags. 360 | bright chartreuse bags contain 2 shiny gold bags, 5 dim green bags. 361 | dim gold bags contain 5 muted purple bags. 362 | posh olive bags contain 2 faded yellow bags, 5 dotted gray bags. 363 | drab purple bags contain 5 vibrant beige bags, 4 striped indigo bags, 3 pale fuchsia bags. 364 | drab red bags contain 1 faded blue bag, 5 dull indigo bags, 4 posh purple bags, 4 plaid bronze bags. 365 | shiny gray bags contain 1 drab violet bag, 1 dotted yellow bag. 366 | shiny violet bags contain 4 clear salmon bags, 5 shiny cyan bags, 2 shiny tomato bags. 367 | plaid red bags contain 5 dull olive bags, 3 pale teal bags, 2 clear bronze bags, 1 light bronze bag. 368 | clear coral bags contain 1 faded bronze bag, 5 dull red bags. 369 | shiny purple bags contain 4 clear blue bags, 3 pale red bags, 5 dull tomato bags, 4 shiny orange bags. 370 | dotted black bags contain 4 muted tan bags, 2 dim tan bags, 2 muted cyan bags, 2 dull black bags. 371 | pale blue bags contain 3 wavy gray bags, 2 drab violet bags, 2 dull chartreuse bags, 5 plaid yellow bags. 372 | mirrored lavender bags contain 1 wavy green bag, 3 striped brown bags. 373 | plaid turquoise bags contain 4 clear gray bags, 1 muted green bag, 3 dull tan bags, 4 shiny indigo bags. 374 | bright tan bags contain 4 shiny olive bags, 1 clear salmon bag, 4 bright indigo bags, 2 drab maroon bags. 375 | dark lime bags contain 4 bright chartreuse bags, 3 posh maroon bags, 1 shiny tan bag, 5 pale bronze bags. 376 | clear turquoise bags contain 3 bright orange bags, 1 faded yellow bag, 5 posh purple bags, 1 vibrant coral bag. 377 | plaid beige bags contain 4 light blue bags, 5 bright bronze bags. 378 | pale gold bags contain 1 pale indigo bag. 379 | light maroon bags contain 3 faded cyan bags, 5 shiny lavender bags, 3 drab yellow bags. 380 | posh white bags contain 2 mirrored lavender bags, 2 posh teal bags, 3 dull teal bags, 1 plaid salmon bag. 381 | shiny tan bags contain 2 bright indigo bags, 3 plaid lime bags, 3 light chartreuse bags. 382 | wavy violet bags contain 2 drab orange bags. 383 | dotted bronze bags contain 2 mirrored aqua bags, 3 dull fuchsia bags. 384 | dull lime bags contain 2 bright lavender bags. 385 | shiny salmon bags contain 5 posh olive bags, 3 pale teal bags. 386 | light lime bags contain 1 light plum bag. 387 | mirrored silver bags contain 1 clear purple bag. 388 | dark magenta bags contain 1 dotted yellow bag. 389 | dotted white bags contain 2 vibrant aqua bags, 5 pale green bags, 1 dark fuchsia bag. 390 | posh beige bags contain 4 drab maroon bags, 3 muted cyan bags. 391 | faded blue bags contain 5 muted tomato bags, 5 clear black bags, 4 muted gray bags. 392 | dim fuchsia bags contain 5 dark gold bags. 393 | vibrant lavender bags contain 4 shiny purple bags. 394 | pale bronze bags contain 3 wavy red bags, 4 shiny tan bags. 395 | plaid orange bags contain 3 vibrant indigo bags. 396 | bright coral bags contain 3 faded olive bags, 4 striped coral bags, 5 plaid violet bags, 3 bright lavender bags. 397 | striped teal bags contain 1 striped magenta bag, 5 plaid white bags. 398 | plaid gray bags contain 4 dotted gray bags, 3 clear beige bags. 399 | faded salmon bags contain 1 dotted turquoise bag. 400 | striped violet bags contain 3 dim cyan bags, 5 drab plum bags, 5 pale gray bags. 401 | dotted magenta bags contain 3 plaid bronze bags. 402 | dotted salmon bags contain 4 wavy tomato bags, 2 vibrant silver bags, 5 dim aqua bags. 403 | dark aqua bags contain 3 posh olive bags, 4 clear salmon bags, 2 striped purple bags, 4 faded yellow bags. 404 | vibrant cyan bags contain 4 light red bags. 405 | pale aqua bags contain 5 clear brown bags, 1 muted cyan bag, 1 pale maroon bag. 406 | clear brown bags contain 5 vibrant white bags, 2 clear blue bags. 407 | dim black bags contain 3 muted salmon bags, 2 plaid bronze bags, 4 shiny cyan bags, 4 posh green bags. 408 | pale crimson bags contain 5 pale lime bags, 1 mirrored tomato bag, 2 dull green bags, 2 mirrored teal bags. 409 | shiny teal bags contain 5 dark chartreuse bags, 4 faded yellow bags, 3 faded coral bags. 410 | faded brown bags contain 4 plaid plum bags, 5 mirrored orange bags, 4 shiny aqua bags. 411 | pale silver bags contain 1 bright turquoise bag, 2 mirrored yellow bags, 1 faded red bag. 412 | light black bags contain 3 shiny indigo bags. 413 | bright orange bags contain 1 faded coral bag. 414 | drab fuchsia bags contain 3 wavy lavender bags, 3 plaid yellow bags, 2 clear olive bags, 4 clear red bags. 415 | bright lime bags contain 2 dull magenta bags. 416 | pale magenta bags contain 1 faded white bag, 2 faded salmon bags. 417 | light cyan bags contain 1 wavy yellow bag, 3 bright crimson bags, 3 striped violet bags. 418 | shiny silver bags contain 3 shiny olive bags, 1 dark plum bag, 2 muted cyan bags. 419 | shiny red bags contain 3 posh turquoise bags, 5 pale gold bags. 420 | muted coral bags contain 1 shiny aqua bag, 5 dim green bags, 2 muted purple bags, 4 pale turquoise bags. 421 | dark black bags contain 3 shiny gray bags, 2 mirrored aqua bags, 3 vibrant magenta bags. 422 | dull yellow bags contain 5 clear teal bags. 423 | shiny lime bags contain 5 posh magenta bags, 3 light salmon bags. 424 | muted tan bags contain 4 bright chartreuse bags. 425 | bright magenta bags contain 4 dotted violet bags, 2 light gold bags, 5 dim indigo bags, 4 dark olive bags. 426 | faded lime bags contain 3 mirrored gold bags, 5 wavy tomato bags, 5 muted lavender bags. 427 | wavy coral bags contain 3 posh maroon bags, 1 striped black bag. 428 | dull red bags contain 4 plaid yellow bags, 5 drab lime bags, 5 plaid plum bags. 429 | wavy blue bags contain 4 bright brown bags, 1 bright magenta bag, 5 pale indigo bags, 1 muted tomato bag. 430 | dull salmon bags contain 2 mirrored orange bags, 3 shiny plum bags. 431 | muted brown bags contain 5 dull beige bags, 3 vibrant aqua bags, 3 clear lavender bags. 432 | faded lavender bags contain 1 vibrant orange bag, 3 faded magenta bags. 433 | vibrant maroon bags contain 3 muted crimson bags, 5 striped purple bags, 5 pale tomato bags. 434 | faded black bags contain 2 dark purple bags. 435 | dim gray bags contain 4 dotted coral bags, 4 muted orange bags. 436 | striped yellow bags contain 1 dark salmon bag, 1 pale silver bag, 1 wavy brown bag, 1 light gold bag. 437 | dim violet bags contain 5 posh magenta bags, 1 pale aqua bag, 1 pale maroon bag, 5 dim lavender bags. 438 | plaid indigo bags contain 1 shiny silver bag, 3 pale gray bags, 4 dull maroon bags, 5 faded coral bags. 439 | light purple bags contain 1 faded violet bag, 4 pale orange bags, 1 drab yellow bag. 440 | faded indigo bags contain 5 faded white bags, 2 dotted lavender bags, 4 dark gold bags, 1 plaid plum bag. 441 | vibrant tomato bags contain 4 light plum bags. 442 | light coral bags contain 4 posh fuchsia bags. 443 | dotted coral bags contain 3 vibrant magenta bags, 5 bright beige bags. 444 | drab olive bags contain 2 wavy salmon bags, 2 pale aqua bags, 2 dark indigo bags, 2 drab green bags. 445 | dull green bags contain 5 dull crimson bags. 446 | muted gray bags contain 5 bright chartreuse bags, 4 clear fuchsia bags, 2 light red bags, 3 shiny gold bags. 447 | clear red bags contain 4 pale teal bags, 2 shiny gold bags, 1 mirrored tomato bag, 4 faded yellow bags. 448 | vibrant violet bags contain 3 light gray bags, 2 posh green bags, 3 shiny salmon bags. 449 | posh salmon bags contain 4 muted blue bags, 3 posh purple bags, 4 dim silver bags, 5 faded white bags. 450 | wavy white bags contain 3 wavy fuchsia bags, 1 drab black bag, 5 vibrant aqua bags, 2 wavy magenta bags. 451 | light orange bags contain 2 light black bags, 1 wavy maroon bag. 452 | shiny bronze bags contain 1 drab crimson bag, 1 clear purple bag, 4 dotted cyan bags, 5 mirrored yellow bags. 453 | dull tomato bags contain 5 dark gray bags. 454 | wavy salmon bags contain 4 wavy orange bags, 5 dull silver bags, 4 wavy maroon bags, 2 posh blue bags. 455 | shiny cyan bags contain 5 vibrant plum bags, 1 plaid plum bag. 456 | wavy turquoise bags contain 2 bright gold bags. 457 | shiny crimson bags contain 2 faded indigo bags, 2 muted lavender bags. 458 | wavy brown bags contain 2 clear indigo bags. 459 | bright aqua bags contain 2 wavy plum bags, 2 shiny beige bags, 5 clear black bags, 2 light black bags. 460 | light bronze bags contain 3 vibrant maroon bags. 461 | vibrant fuchsia bags contain 1 dotted cyan bag. 462 | dull crimson bags contain 2 plaid lime bags, 2 plaid bronze bags, 3 shiny orange bags. 463 | mirrored tomato bags contain 3 clear maroon bags, 4 striped crimson bags, 3 drab plum bags, 5 plaid plum bags. 464 | dark silver bags contain 5 pale cyan bags, 4 drab magenta bags. 465 | posh lavender bags contain 5 faded olive bags. 466 | bright plum bags contain 5 posh indigo bags. 467 | faded teal bags contain 1 vibrant maroon bag, 1 wavy maroon bag, 2 dark violet bags, 2 pale yellow bags. 468 | mirrored coral bags contain 1 muted magenta bag, 4 clear turquoise bags, 5 muted purple bags, 2 pale black bags. 469 | vibrant lime bags contain 2 pale lavender bags, 5 clear purple bags. 470 | dark tan bags contain 2 bright beige bags, 5 drab aqua bags. 471 | muted lavender bags contain 3 posh olive bags, 2 faded cyan bags. 472 | dull fuchsia bags contain 3 vibrant maroon bags. 473 | dim magenta bags contain 4 faded cyan bags, 3 dim indigo bags, 1 mirrored teal bag, 5 vibrant teal bags. 474 | posh orange bags contain 1 wavy green bag. 475 | clear white bags contain 2 faded purple bags, 4 dotted yellow bags. 476 | light olive bags contain 3 faded plum bags, 3 wavy chartreuse bags. 477 | light fuchsia bags contain 3 clear orange bags. 478 | striped turquoise bags contain 4 faded cyan bags, 4 bright green bags, 5 mirrored magenta bags. 479 | light teal bags contain 1 clear gold bag, 2 dull olive bags, 2 clear teal bags. 480 | wavy teal bags contain 1 light gold bag, 5 light chartreuse bags, 2 dim purple bags. 481 | striped beige bags contain 2 mirrored cyan bags, 2 plaid aqua bags, 3 dull lavender bags, 1 dull chartreuse bag. 482 | striped aqua bags contain no other bags. 483 | shiny green bags contain 5 posh tomato bags, 1 faded olive bag, 5 pale maroon bags. 484 | posh magenta bags contain 2 dull green bags, 3 wavy maroon bags, 4 faded silver bags. 485 | faded silver bags contain 5 dark lime bags, 2 striped brown bags. 486 | dim maroon bags contain 1 light crimson bag, 5 posh black bags, 5 striped bronze bags. 487 | dim chartreuse bags contain 3 pale plum bags, 2 clear fuchsia bags, 3 bright beige bags. 488 | drab crimson bags contain 4 drab orange bags, 2 dark blue bags, 1 shiny gray bag, 1 pale gray bag. 489 | dim beige bags contain 4 dark orange bags, 1 shiny salmon bag, 5 bright indigo bags, 1 shiny indigo bag. 490 | light blue bags contain 2 vibrant white bags, 1 pale turquoise bag, 3 drab maroon bags, 4 mirrored cyan bags. 491 | dim aqua bags contain 3 bright chartreuse bags, 2 clear black bags, 4 dotted gray bags, 3 plaid bronze bags. 492 | striped fuchsia bags contain 2 shiny teal bags, 4 striped aqua bags, 4 dull lavender bags, 2 dull crimson bags. 493 | wavy yellow bags contain 5 pale gray bags, 2 faded red bags, 3 vibrant silver bags. 494 | bright fuchsia bags contain 1 faded teal bag, 5 shiny lavender bags, 2 muted cyan bags. 495 | mirrored violet bags contain 4 plaid olive bags, 2 dotted magenta bags, 4 striped aqua bags, 5 wavy lavender bags. 496 | wavy maroon bags contain 2 mirrored maroon bags, 3 drab violet bags, 2 dark plum bags, 2 faded cyan bags. 497 | dim green bags contain 3 clear lime bags. 498 | muted beige bags contain 4 posh coral bags, 1 mirrored teal bag, 5 shiny cyan bags, 2 light plum bags. 499 | posh turquoise bags contain 1 dull fuchsia bag. 500 | clear orange bags contain 2 faded chartreuse bags, 3 dark blue bags, 5 plaid yellow bags. 501 | light green bags contain 5 mirrored chartreuse bags, 4 pale bronze bags. 502 | clear bronze bags contain 5 vibrant coral bags, 2 bright beige bags, 4 dark lime bags. 503 | clear silver bags contain 1 bright gray bag, 5 dotted white bags, 2 dotted lavender bags, 1 dim violet bag. 504 | drab green bags contain 1 drab violet bag. 505 | mirrored salmon bags contain 1 dim beige bag. 506 | mirrored maroon bags contain 2 posh black bags, 4 striped black bags, 2 dotted gray bags, 4 striped gray bags. 507 | mirrored aqua bags contain 4 clear black bags. 508 | pale purple bags contain 5 dim green bags, 3 striped tan bags, 5 wavy olive bags, 4 muted cyan bags. 509 | dotted teal bags contain 1 dotted orange bag, 2 dotted chartreuse bags. 510 | vibrant olive bags contain 2 posh olive bags. 511 | dotted aqua bags contain 5 drab orange bags. 512 | clear yellow bags contain 1 clear orange bag, 3 dim beige bags, 3 bright indigo bags, 1 drab yellow bag. 513 | vibrant gray bags contain 3 mirrored plum bags. 514 | dull beige bags contain 3 dull indigo bags, 2 dotted lavender bags, 2 shiny orange bags. 515 | shiny chartreuse bags contain 2 light brown bags, 1 faded tomato bag, 1 drab black bag. 516 | light chartreuse bags contain 2 wavy red bags, 4 muted green bags, 1 drab aqua bag, 4 mirrored maroon bags. 517 | bright violet bags contain 4 dotted yellow bags, 2 shiny aqua bags, 2 drab aqua bags, 1 bright red bag. 518 | dull gold bags contain 2 muted maroon bags, 1 wavy maroon bag. 519 | dotted beige bags contain 4 plaid magenta bags. 520 | wavy silver bags contain 5 pale beige bags, 3 posh orange bags, 1 clear turquoise bag, 3 bright lavender bags. 521 | plaid aqua bags contain 1 dull lime bag, 5 plaid crimson bags. 522 | drab tomato bags contain 4 wavy plum bags. 523 | muted cyan bags contain 5 faded cyan bags, 4 posh olive bags, 5 faded yellow bags, 4 dark chartreuse bags. 524 | dull olive bags contain 1 dark black bag, 2 clear gold bags, 4 dark orange bags. 525 | bright salmon bags contain 5 dark chartreuse bags, 5 posh black bags. 526 | wavy beige bags contain 4 dim green bags. 527 | posh fuchsia bags contain 4 drab plum bags. 528 | striped red bags contain 5 posh turquoise bags, 2 posh indigo bags, 5 dim silver bags. 529 | dim lavender bags contain 5 vibrant chartreuse bags. 530 | plaid green bags contain 4 striped fuchsia bags. 531 | dull lavender bags contain 5 clear lime bags, 5 wavy green bags, 2 dark blue bags, 1 striped gray bag. 532 | dark brown bags contain 4 light silver bags, 4 pale violet bags, 3 light cyan bags, 1 pale cyan bag. 533 | wavy green bags contain 3 mirrored teal bags, 2 muted green bags. 534 | drab teal bags contain 4 shiny teal bags, 3 striped aqua bags, 5 dim coral bags. 535 | shiny orange bags contain 4 drab aqua bags, 4 pale teal bags, 3 dull maroon bags. 536 | vibrant blue bags contain 2 vibrant tomato bags, 1 plaid cyan bag, 3 pale red bags. 537 | mirrored purple bags contain 2 striped tan bags, 1 pale olive bag. 538 | faded purple bags contain 2 plaid lavender bags. 539 | light aqua bags contain 3 vibrant chartreuse bags. 540 | vibrant magenta bags contain 3 clear salmon bags, 4 posh brown bags, 4 striped black bags. 541 | plaid salmon bags contain 1 striped gray bag, 5 dark plum bags. 542 | dim white bags contain 3 faded fuchsia bags, 2 clear yellow bags. 543 | light magenta bags contain 1 vibrant turquoise bag. 544 | clear chartreuse bags contain 1 posh olive bag, 1 drab blue bag. 545 | clear tan bags contain 2 dark blue bags, 4 light gold bags, 5 muted indigo bags. 546 | light turquoise bags contain 4 drab beige bags, 4 shiny bronze bags, 3 dull olive bags, 3 striped indigo bags. 547 | pale white bags contain 5 dotted white bags, 3 faded gold bags, 5 striped turquoise bags. 548 | dark gray bags contain 3 clear teal bags, 4 posh green bags, 2 striped brown bags, 3 light tomato bags. 549 | clear maroon bags contain 5 drab maroon bags. 550 | vibrant white bags contain 1 muted green bag, 5 dark aqua bags, 3 clear black bags, 4 drab teal bags. 551 | striped indigo bags contain 1 bright turquoise bag, 5 shiny orange bags, 1 clear fuchsia bag, 1 light chartreuse bag. 552 | dull cyan bags contain 2 light salmon bags, 5 striped magenta bags, 2 wavy lavender bags, 3 faded fuchsia bags. 553 | wavy plum bags contain 3 muted crimson bags, 2 dim green bags. 554 | pale tan bags contain 3 mirrored turquoise bags, 5 wavy salmon bags. 555 | vibrant green bags contain 5 plaid chartreuse bags, 2 muted teal bags. 556 | bright bronze bags contain 4 clear indigo bags, 1 mirrored bronze bag, 1 mirrored magenta bag, 5 posh beige bags. 557 | faded plum bags contain 2 dotted tan bags. 558 | mirrored blue bags contain 2 clear lime bags, 5 faded coral bags, 1 drab aqua bag. 559 | plaid gold bags contain 2 muted tomato bags, 1 shiny blue bag, 1 dim gray bag, 1 dotted salmon bag. 560 | posh black bags contain 3 faded cyan bags, 5 posh brown bags, 1 striped black bag. 561 | light salmon bags contain 1 clear lime bag, 4 posh black bags. 562 | muted violet bags contain 4 wavy cyan bags. 563 | faded cyan bags contain 4 faded coral bags, 3 faded yellow bags. 564 | faded turquoise bags contain 3 wavy magenta bags, 3 plaid bronze bags, 1 dotted chartreuse bag. 565 | plaid cyan bags contain 1 shiny tan bag, 1 faded coral bag, 1 vibrant plum bag, 2 bright lavender bags. 566 | mirrored brown bags contain 1 faded chartreuse bag, 2 striped plum bags. 567 | light lavender bags contain 1 dull teal bag, 3 dark fuchsia bags. 568 | striped crimson bags contain 1 light salmon bag, 2 drab black bags, 3 vibrant white bags, 5 dull maroon bags. 569 | dotted crimson bags contain 1 posh orange bag, 4 muted green bags, 2 mirrored indigo bags. 570 | clear cyan bags contain 3 light yellow bags. 571 | light indigo bags contain 5 plaid cyan bags, 2 mirrored fuchsia bags. 572 | light white bags contain 2 light chartreuse bags. 573 | drab yellow bags contain 1 mirrored blue bag. 574 | dim cyan bags contain 2 posh salmon bags, 5 bright chartreuse bags, 3 dark chartreuse bags. 575 | pale gray bags contain 5 dim orange bags, 2 dark plum bags, 1 vibrant plum bag, 3 striped tan bags. 576 | bright tomato bags contain 3 posh indigo bags, 1 dotted aqua bag, 5 muted olive bags. 577 | shiny olive bags contain 2 drab aqua bags. 578 | mirrored turquoise bags contain 3 shiny violet bags, 3 drab crimson bags, 3 dotted tomato bags, 5 bright violet bags. 579 | light gray bags contain 1 vibrant white bag, 2 muted indigo bags, 3 drab teal bags. 580 | bright green bags contain 4 bright indigo bags. 581 | striped lavender bags contain 2 striped aqua bags, 5 light crimson bags, 4 drab maroon bags. 582 | posh green bags contain 2 muted turquoise bags, 4 dark blue bags, 4 light chartreuse bags, 1 pale purple bag. 583 | plaid fuchsia bags contain 3 shiny yellow bags, 2 shiny maroon bags, 1 clear aqua bag. 584 | dim purple bags contain 4 light crimson bags, 2 dotted yellow bags, 2 mirrored maroon bags. 585 | dark salmon bags contain 2 faded teal bags, 4 drab white bags, 3 posh bronze bags. 586 | drab maroon bags contain no other bags. 587 | dark lavender bags contain 4 muted brown bags, 5 dark orange bags, 1 plaid aqua bag, 2 muted cyan bags. 588 | pale tomato bags contain 5 drab maroon bags, 2 posh orange bags, 4 pale bronze bags. 589 | shiny gold bags contain 2 light chartreuse bags, 2 drab black bags, 1 bright orange bag, 1 shiny teal bag. 590 | bright beige bags contain 5 dim teal bags, 3 posh indigo bags. 591 | dim crimson bags contain 4 wavy lime bags, 4 dim orange bags, 1 faded green bag. 592 | dim red bags contain 4 drab plum bags, 4 shiny gold bags. 593 | wavy tomato bags contain 4 plaid bronze bags, 1 striped black bag. 594 | dark plum bags contain 5 shiny olive bags, 1 drab violet bag, 2 striped black bags, 1 faded coral bag. 595 | -------------------------------------------------------------------------------- /day7/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) elem length split foldl' filter isList ; 4 | inherit (import ../utils.nix) quickElem fix flatten attrsToList any; 5 | inputs = filter (isList) (split "([a-z]+ [a-z]+) bags contains? (([0-9]+ [a-z ]+ bags?[,.] ?|no other bags\.)+)" input); 6 | bags = foldl' (a: quickElem (i: a // { ${i 0} = filter (isList) (split "([0-9]+) ([a-z ]+) bags?" (i 1)); })) {} inputs; 7 | # here the colors are just put in a single list 8 | bagsColors = foldl' (a: quickElem (i: a // { ${i 0} = flatten (filter (isList) (split "[0-9]+ ([a-z ]+) bags?" (i 1))); })) {} inputs; 9 | colors = attrNames bagsColors; 10 | hasShinyGold = fix (f: colors: bags: let 11 | newColors = foldl' (a: quickElem (i: if !(elem (i 0) colors) && (any (map (x: elem x colors) (i 1))) then a ++ [(i 0)] else a)) [] bags; 12 | in if newColors == [] then colors else f (colors ++ newColors) bags) ["shiny gold"] (attrsToList bagsColors); 13 | output = (length hasShinyGold) - 1; 14 | in 15 | {inherit fix quickElem colors inputs bags bagsColors hasShinyGold output;} 16 | -------------------------------------------------------------------------------- /day7/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input}: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) bags colors fix quickElem; 4 | inherit (builtins) elem elemAt filter foldl' fromJSON; 5 | inherit (import ../utils.nix) sum; 6 | bagCount = fix (f: color: let 7 | innerBagCount = sum (map (quickElem (i: (fromJSON (i 0)) * (f (i 1)))) bags.${color}); 8 | in 1 + (if elem color colors then innerBagCount else 0)) "shiny gold"; 9 | output = bagCount - 1; 10 | in 11 | { inherit bags output; } 12 | -------------------------------------------------------------------------------- /day8/input: -------------------------------------------------------------------------------- 1 | nop +283 2 | acc +26 3 | acc +37 4 | acc +6 5 | jmp +109 6 | acc +10 7 | jmp +18 8 | acc +5 9 | jmp +327 10 | acc -4 11 | jmp +269 12 | acc -7 13 | acc +27 14 | nop +7 15 | acc +0 16 | jmp +81 17 | acc +42 18 | nop +338 19 | acc -5 20 | jmp +391 21 | nop +276 22 | jmp +354 23 | acc +22 24 | jmp +528 25 | acc +0 26 | acc +20 27 | acc +15 28 | acc -17 29 | jmp +537 30 | acc -15 31 | acc +12 32 | acc -17 33 | acc +17 34 | jmp +34 35 | acc -19 36 | jmp +88 37 | acc +19 38 | acc +35 39 | acc +17 40 | acc +7 41 | jmp +443 42 | acc +22 43 | jmp +584 44 | jmp -2 45 | jmp +408 46 | acc +46 47 | acc +43 48 | acc +4 49 | jmp +532 50 | acc -19 51 | acc -19 52 | acc +38 53 | acc -10 54 | jmp +476 55 | acc +1 56 | acc +3 57 | acc +19 58 | acc +28 59 | jmp +480 60 | jmp +1 61 | acc +32 62 | acc -2 63 | jmp +518 64 | acc +5 65 | acc -19 66 | acc +19 67 | jmp +344 68 | jmp +99 69 | acc +0 70 | acc +30 71 | acc -13 72 | acc -19 73 | jmp +385 74 | acc -18 75 | jmp +157 76 | acc +15 77 | acc +4 78 | jmp +503 79 | acc -6 80 | acc +42 81 | jmp +461 82 | acc -6 83 | jmp +328 84 | acc -9 85 | nop +199 86 | acc +15 87 | jmp +206 88 | jmp +182 89 | acc +35 90 | nop +275 91 | acc +3 92 | jmp +1 93 | jmp -25 94 | nop -20 95 | nop -6 96 | jmp -7 97 | nop +145 98 | acc +4 99 | acc +28 100 | jmp +315 101 | nop -76 102 | nop +12 103 | nop +170 104 | jmp +291 105 | acc -16 106 | acc +5 107 | nop -10 108 | jmp +235 109 | acc +6 110 | acc -1 111 | nop +492 112 | acc +44 113 | jmp +119 114 | jmp +128 115 | jmp +1 116 | jmp +328 117 | acc -7 118 | jmp +126 119 | nop +351 120 | acc +9 121 | acc +4 122 | acc -1 123 | jmp +276 124 | acc +0 125 | nop +133 126 | acc +36 127 | acc +32 128 | jmp +173 129 | acc +41 130 | nop -95 131 | jmp +153 132 | acc +7 133 | acc +13 134 | acc -10 135 | jmp +223 136 | jmp +186 137 | acc +4 138 | jmp +90 139 | acc -7 140 | acc +15 141 | jmp +366 142 | acc +9 143 | acc +27 144 | acc +1 145 | jmp +417 146 | acc -19 147 | jmp +268 148 | acc +38 149 | acc +1 150 | acc +27 151 | jmp +1 152 | jmp +420 153 | acc +13 154 | acc +9 155 | acc +1 156 | jmp +370 157 | acc +25 158 | acc +3 159 | acc -1 160 | jmp +324 161 | nop +352 162 | acc +39 163 | jmp +121 164 | acc +15 165 | jmp +348 166 | jmp +11 167 | acc -12 168 | acc +23 169 | jmp +407 170 | jmp -6 171 | acc +43 172 | jmp -8 173 | acc +48 174 | nop +316 175 | acc +5 176 | jmp +323 177 | acc +3 178 | jmp +1 179 | acc +34 180 | jmp +191 181 | jmp -160 182 | acc -18 183 | acc +33 184 | jmp -79 185 | acc +9 186 | acc +50 187 | acc -15 188 | acc -1 189 | jmp -100 190 | acc -18 191 | acc +49 192 | nop -184 193 | acc +20 194 | jmp +404 195 | nop +280 196 | jmp +294 197 | acc -12 198 | jmp +1 199 | acc +8 200 | jmp +320 201 | nop +387 202 | acc +15 203 | nop +359 204 | acc -7 205 | jmp +182 206 | nop +1 207 | nop -40 208 | acc +3 209 | jmp -38 210 | acc +44 211 | acc -11 212 | nop +297 213 | jmp +174 214 | jmp -140 215 | acc +32 216 | acc +28 217 | acc +8 218 | acc +9 219 | jmp -194 220 | acc -9 221 | acc +32 222 | jmp +291 223 | acc +43 224 | nop +220 225 | acc +9 226 | acc +15 227 | jmp -167 228 | jmp -8 229 | acc -3 230 | acc +12 231 | jmp +195 232 | acc +48 233 | acc +16 234 | nop +137 235 | acc +29 236 | jmp +48 237 | acc +11 238 | acc +46 239 | acc +22 240 | acc -2 241 | jmp -167 242 | jmp +123 243 | jmp +128 244 | acc +24 245 | acc +50 246 | acc -10 247 | jmp -202 248 | acc -17 249 | acc -13 250 | jmp +1 251 | jmp +89 252 | acc -4 253 | acc +41 254 | jmp +111 255 | acc +50 256 | acc +41 257 | jmp +83 258 | acc -2 259 | nop +194 260 | jmp +239 261 | acc +33 262 | acc +25 263 | jmp +347 264 | nop +6 265 | acc +0 266 | acc -16 267 | jmp +73 268 | acc -12 269 | jmp -5 270 | jmp +188 271 | jmp +1 272 | jmp -264 273 | acc +44 274 | acc +6 275 | acc +35 276 | jmp +312 277 | acc +28 278 | acc +8 279 | jmp -15 280 | acc +48 281 | jmp +215 282 | acc -1 283 | jmp -55 284 | acc +22 285 | acc -18 286 | acc +47 287 | jmp -266 288 | jmp +1 289 | acc +18 290 | acc +0 291 | acc -11 292 | jmp +221 293 | acc -10 294 | nop -189 295 | jmp -216 296 | jmp -3 297 | acc -8 298 | acc +22 299 | jmp +253 300 | jmp -168 301 | acc -7 302 | acc +14 303 | nop +315 304 | acc +11 305 | jmp -47 306 | nop -36 307 | acc +40 308 | jmp +95 309 | jmp +13 310 | acc -14 311 | acc -5 312 | acc +48 313 | jmp -85 314 | acc -17 315 | acc +20 316 | acc -5 317 | acc +6 318 | jmp +221 319 | acc +32 320 | acc +7 321 | jmp +12 322 | nop +266 323 | acc -11 324 | acc -8 325 | nop +182 326 | jmp -184 327 | nop -137 328 | acc +48 329 | jmp +155 330 | jmp -124 331 | acc +44 332 | jmp +24 333 | acc +12 334 | jmp -292 335 | jmp +195 336 | jmp -301 337 | acc +45 338 | acc -14 339 | jmp -66 340 | jmp +86 341 | acc +33 342 | jmp -136 343 | jmp -146 344 | acc -3 345 | acc -13 346 | acc +16 347 | jmp -183 348 | acc +4 349 | acc -8 350 | acc +14 351 | jmp -169 352 | acc +35 353 | acc +18 354 | nop -24 355 | jmp -127 356 | jmp -219 357 | jmp +190 358 | acc -4 359 | acc +1 360 | jmp +62 361 | nop +220 362 | acc +18 363 | acc +36 364 | jmp +58 365 | acc +25 366 | jmp +21 367 | nop -24 368 | acc +2 369 | acc +49 370 | jmp -325 371 | acc +24 372 | acc +23 373 | acc +13 374 | jmp +143 375 | jmp -45 376 | nop +212 377 | jmp -29 378 | acc -12 379 | acc -12 380 | jmp -107 381 | nop +126 382 | acc +32 383 | jmp -113 384 | jmp +1 385 | acc -6 386 | jmp -102 387 | nop +57 388 | acc -16 389 | acc +25 390 | jmp -213 391 | acc +19 392 | acc +29 393 | acc +0 394 | jmp -320 395 | acc +42 396 | jmp +94 397 | acc +6 398 | jmp -363 399 | acc -18 400 | jmp -365 401 | acc +39 402 | jmp +13 403 | acc +47 404 | acc +24 405 | acc +9 406 | acc +25 407 | jmp +151 408 | acc +17 409 | jmp +1 410 | jmp -77 411 | jmp +24 412 | acc -13 413 | acc -13 414 | jmp -141 415 | acc +22 416 | acc +9 417 | nop +92 418 | jmp -334 419 | acc +30 420 | acc +11 421 | jmp -304 422 | acc +8 423 | jmp -275 424 | acc +35 425 | jmp -95 426 | jmp +1 427 | acc -18 428 | nop -407 429 | nop -18 430 | jmp +146 431 | acc +37 432 | acc -4 433 | acc +19 434 | jmp -409 435 | acc +28 436 | acc -10 437 | nop +151 438 | acc +17 439 | jmp -418 440 | nop +56 441 | acc +40 442 | acc -13 443 | jmp -301 444 | acc +28 445 | acc -7 446 | acc -6 447 | jmp +62 448 | acc +0 449 | acc +6 450 | acc +25 451 | acc +26 452 | jmp +18 453 | acc -14 454 | jmp +93 455 | acc +43 456 | acc +19 457 | jmp -109 458 | acc +24 459 | acc +0 460 | jmp -328 461 | acc +42 462 | jmp -165 463 | acc -3 464 | acc +18 465 | jmp +153 466 | jmp +1 467 | acc -10 468 | acc -7 469 | jmp -199 470 | acc +30 471 | nop -403 472 | acc -12 473 | jmp -209 474 | jmp -242 475 | acc +38 476 | nop +33 477 | acc -10 478 | acc +22 479 | jmp -419 480 | acc -18 481 | acc +27 482 | acc +22 483 | jmp -57 484 | nop -313 485 | acc +20 486 | acc -7 487 | acc -10 488 | jmp -371 489 | jmp -159 490 | jmp -478 491 | acc +9 492 | acc +7 493 | acc +15 494 | nop +72 495 | jmp -358 496 | jmp -138 497 | acc -17 498 | jmp +9 499 | acc +47 500 | acc -2 501 | jmp -221 502 | nop -331 503 | nop -297 504 | acc +12 505 | acc -13 506 | jmp +3 507 | jmp -198 508 | jmp -150 509 | acc +17 510 | jmp -313 511 | nop -314 512 | jmp +69 513 | acc +0 514 | nop -397 515 | jmp -104 516 | jmp -223 517 | acc -14 518 | jmp +44 519 | jmp -61 520 | acc -7 521 | acc -18 522 | jmp -270 523 | acc -14 524 | acc +32 525 | jmp -177 526 | jmp +84 527 | acc +6 528 | nop +14 529 | jmp +47 530 | acc +37 531 | acc -19 532 | acc -9 533 | jmp -200 534 | acc +11 535 | acc -5 536 | acc +2 537 | acc +37 538 | jmp -488 539 | nop +19 540 | jmp -490 541 | jmp -491 542 | acc +24 543 | acc +30 544 | acc +14 545 | jmp -19 546 | jmp -37 547 | acc +19 548 | jmp -540 549 | acc +48 550 | acc +22 551 | jmp -434 552 | jmp -196 553 | acc +12 554 | acc -9 555 | acc +48 556 | acc -5 557 | jmp -433 558 | acc +23 559 | jmp -245 560 | acc +43 561 | jmp -228 562 | acc +44 563 | jmp -168 564 | nop -221 565 | jmp -102 566 | jmp +1 567 | acc +39 568 | nop -153 569 | jmp -455 570 | acc +48 571 | jmp -75 572 | jmp +31 573 | nop -383 574 | acc -12 575 | jmp -245 576 | acc -2 577 | acc +3 578 | jmp -421 579 | acc +38 580 | jmp -158 581 | acc +39 582 | acc -4 583 | acc -1 584 | acc +0 585 | jmp -186 586 | acc +28 587 | jmp -247 588 | jmp +1 589 | acc -19 590 | acc +31 591 | acc +34 592 | jmp -148 593 | acc +5 594 | nop -417 595 | nop -230 596 | acc +11 597 | jmp -162 598 | jmp +1 599 | acc +32 600 | jmp -303 601 | nop -214 602 | jmp -332 603 | acc -10 604 | acc +33 605 | jmp -142 606 | acc +19 607 | acc +41 608 | acc +12 609 | jmp -495 610 | acc +42 611 | nop -318 612 | acc +36 613 | jmp -524 614 | jmp +1 615 | acc +46 616 | acc -6 617 | jmp -582 618 | acc +28 619 | acc +38 620 | acc -17 621 | acc +2 622 | jmp -432 623 | acc +35 624 | nop -550 625 | acc -6 626 | jmp -394 627 | acc +38 628 | acc +49 629 | nop -99 630 | acc +50 631 | jmp +1 632 | -------------------------------------------------------------------------------- /day8/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input }: 2 | let 3 | inherit (builtins) split elem isList filter length fromJSON elemAt; 4 | inherit (import ../utils.nix) fix quickElem; 5 | lines = filter isList (split "(...) ([+-])([0-9]+)" input); 6 | execute = lines: fix (f: current: accumulator: pastOps: let 7 | ops = { 8 | nop = _: f (current + 1) (accumulator + 0) (pastOps ++ [current]); 9 | acc = x: f (current + 1) (accumulator + x) (pastOps ++ [current]); 10 | jmp = x: f (current + x) (accumulator + 0) (pastOps ++ [current]); 11 | }; 12 | do = quickElem (i: let 13 | multiplier = if i 1 == "-" then -1 else 1; 14 | number = fromJSON (i 2); 15 | in ops.${i 0} (multiplier * number)); 16 | in if current == length lines then [ true accumulator ] else 17 | if elem current pastOps then [ false accumulator ] else do (elemAt lines current)) 0 0 []; 18 | output = elemAt (execute lines) 1; 19 | in 20 | { inherit lines output; } 21 | -------------------------------------------------------------------------------- /day8/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? builtins.readFile ./input}: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) lines; 4 | inherit (builtins) filter genList foldl' elemAt length; 5 | inherit (import ../utils.nix) enumerate fix quickElem execute; 6 | output = fix (f: current: let 7 | isAcc = quickElem (i: i 0 == "acc") (elemAt lines current); 8 | update = quickElem (i: if i 0 == "nop" then ["jmp" (i 1) (i 2)] else ["nop" (i 1) (i 2)]); 9 | modifiedLines = map (quickElem (i: if i 0 == current then update (i 1) else (i 1))) (enumerate lines); 10 | in if isAcc then f (current + 1) else quickElem (i: if i 0 then i 1 else f (current + 1)) (execute modifiedLines)) 0; 11 | in 12 | { inherit output; } 13 | -------------------------------------------------------------------------------- /day9/input.nix: -------------------------------------------------------------------------------- 1 | [ 2 | 30 3 | 16 4 | 33 5 | 40 6 | 41 7 | 25 8 | 2 9 | 29 10 | 37 11 | 4 12 | 11 13 | 1 14 | 42 15 | 10 16 | 21 17 | 13 18 | 48 19 | 28 20 | 19 21 | 5 22 | 46 23 | 49 24 | 24 25 | 8 26 | 34 27 | 3 28 | 6 29 | 30 30 | 7 31 | 22 32 | 9 33 | 12 34 | 14 35 | 15 36 | 16 37 | 27 38 | 4 39 | 11 40 | 60 41 | 10 42 | 17 43 | 56 44 | 13 45 | 18 46 | 19 47 | 20 48 | 21 49 | 23 50 | 29 51 | 24 52 | 25 53 | 39 54 | 47 55 | 71 56 | 34 57 | 22 58 | 26 59 | 28 60 | 30 61 | 14 62 | 15 63 | 27 64 | 31 65 | 32 66 | 35 67 | 38 68 | 37 69 | 48 70 | 33 71 | 36 72 | 40 73 | 64 74 | 41 75 | 66 76 | 49 77 | 42 78 | 58 79 | 45 80 | 83 81 | 29 82 | 75 83 | 60 84 | 44 85 | 51 86 | 53 87 | 46 88 | 68 89 | 69 90 | 70 91 | 62 92 | 113 93 | 65 94 | 71 95 | 76 96 | 95 97 | 73 98 | 74 99 | 78 100 | 139 101 | 86 102 | 106 103 | 80 104 | 82 105 | 89 106 | 119 107 | 112 108 | 90 109 | 133 110 | 159 111 | 99 112 | 127 113 | 140 114 | 147 115 | 169 116 | 135 117 | 136 118 | 212 119 | 144 120 | 149 121 | 160 122 | 208 123 | 188 124 | 222 125 | 162 126 | 166 127 | 170 128 | 179 129 | 181 130 | 292 131 | 189 132 | 268 133 | 358 134 | 226 135 | 393 136 | 243 137 | 284 138 | 271 139 | 337 140 | 302 141 | 332 142 | 280 143 | 304 144 | 293 145 | 309 146 | 322 147 | 328 148 | 336 149 | 341 150 | 349 151 | 345 152 | 415 153 | 471 154 | 370 155 | 711 156 | 432 157 | 469 158 | 762 159 | 497 160 | 514 161 | 523 162 | 608 163 | 573 164 | 582 165 | 584 166 | 589 167 | 597 168 | 602 169 | 615 170 | 658 171 | 650 172 | 669 173 | 677 174 | 719 175 | 863 176 | 954 177 | 1179 178 | 802 179 | 1369 180 | 1890 181 | 1344 182 | 1216 183 | 1239 184 | 1308 185 | 1037 186 | 1181 187 | 1756 188 | 1266 189 | 1569 190 | 1173 191 | 1186 192 | 1604 193 | 1612 194 | 1695 195 | 1319 196 | 1327 197 | 1623 198 | 1396 199 | 1521 200 | 1665 201 | 1839 202 | 2547 203 | 2041 204 | 2210 205 | 2253 206 | 2420 207 | 2835 208 | 2218 209 | 2356 210 | 2364 211 | 2359 212 | 2965 213 | 2868 214 | 2492 215 | 3733 216 | 3537 217 | 2646 218 | 2984 219 | 4765 220 | 2715 221 | 2723 222 | 5343 223 | 2917 224 | 3186 225 | 3918 226 | 3880 227 | 4251 228 | 4405 229 | 4428 230 | 5481 231 | 4720 232 | 7455 233 | 4715 234 | 5591 235 | 4856 236 | 8833 237 | 5138 238 | 5207 239 | 5901 240 | 9128 241 | 7699 242 | 5361 243 | 5909 244 | 5632 245 | 7128 246 | 5640 247 | 11046 248 | 8278 249 | 7066 250 | 8131 251 | 13600 252 | 8966 253 | 9120 254 | 9143 255 | 20012 256 | 14179 257 | 15902 258 | 13681 259 | 9994 260 | 10063 261 | 10345 262 | 26247 263 | 15052 264 | 10993 265 | 11001 266 | 11270 267 | 11272 268 | 11541 269 | 16209 270 | 12706 271 | 13771 272 | 15197 273 | 15344 274 | 26885 275 | 17097 276 | 21604 277 | 21615 278 | 18263 279 | 21333 280 | 20987 281 | 20057 282 | 27091 283 | 20339 284 | 23051 285 | 20408 286 | 21338 287 | 21994 288 | 43982 289 | 22263 290 | 22271 291 | 39591 292 | 25043 293 | 25312 294 | 35401 295 | 44389 296 | 28968 297 | 35605 298 | 32441 299 | 35360 300 | 37154 301 | 56739 302 | 42320 303 | 38320 304 | 40465 305 | 42679 306 | 40396 307 | 43601 308 | 42402 309 | 42671 310 | 41746 311 | 57631 312 | 57484 313 | 60917 314 | 44534 315 | 47314 316 | 78785 317 | 114145 318 | 54280 319 | 69364 320 | 100155 321 | 61409 322 | 80640 323 | 95059 324 | 92991 325 | 75474 326 | 82211 327 | 78716 328 | 80066 329 | 80861 330 | 82142 331 | 82798 332 | 96951 333 | 84148 334 | 84417 335 | 122326 336 | 115197 337 | 91848 338 | 125395 339 | 98814 340 | 101594 341 | 173844 342 | 145557 343 | 115689 344 | 140125 345 | 156335 346 | 142049 347 | 154190 348 | 155540 349 | 214174 350 | 158272 351 | 166946 352 | 158782 353 | 162208 354 | 181612 355 | 198487 356 | 167215 357 | 183231 358 | 238607 359 | 186011 360 | 190662 361 | 214503 362 | 207537 363 | 200408 364 | 302333 365 | 241719 366 | 257738 367 | 346997 368 | 408934 369 | 352957 370 | 356759 371 | 300321 372 | 350177 373 | 313812 374 | 558059 375 | 317054 376 | 320990 377 | 369745 378 | 393548 379 | 348827 380 | 557167 381 | 440969 382 | 619387 383 | 376673 384 | 908236 385 | 514220 386 | 502741 387 | 617375 388 | 499457 389 | 542040 390 | 983009 391 | 604735 392 | 614133 393 | 671167 394 | 649148 395 | 621311 396 | 763293 397 | 630866 398 | 998283 399 | 697663 400 | 638044 401 | 878157 402 | 742375 403 | 940426 404 | 1152264 405 | 1041497 406 | 943710 407 | 1013677 408 | 1148605 409 | 1130323 410 | 1002198 411 | 1044781 412 | 1104192 413 | 1113590 414 | 1146775 415 | 1320315 416 | 1259355 417 | 1633064 418 | 1252177 419 | 1287192 420 | 1268910 421 | 1335707 422 | 1328529 423 | 1380419 424 | 1581754 425 | 1516201 426 | 1620532 427 | 1686085 428 | 2411619 429 | 2057300 430 | 2576774 431 | 1945908 432 | 2015875 433 | 3462109 434 | 2106390 435 | 2158371 436 | 2425200 437 | 2217782 438 | 2372945 439 | 2595062 440 | 2528265 441 | 2511532 442 | 3631993 443 | 2521087 444 | 3486809 445 | 2597439 446 | 2664236 447 | 4457440 448 | 4003208 449 | 3639054 450 | 6059548 451 | 5252525 452 | 4613314 453 | 4578387 454 | 5544109 455 | 5887309 456 | 4233657 457 | 6143525 458 | 4583571 459 | 4264761 460 | 4738869 461 | 4590727 462 | 5261675 463 | 4884477 464 | 5032619 465 | 5039797 466 | 6153080 467 | 6897893 468 | 10882394 469 | 6084248 470 | 6236493 471 | 10820064 472 | 7903815 473 | 7642262 474 | 7872711 475 | 8498418 476 | 8812044 477 | 8817228 478 | 8972526 479 | 8824384 480 | 8848332 481 | 8855488 482 | 9630524 483 | 9003630 484 | 12526739 485 | 9623346 486 | 11116867 487 | 10294294 488 | 9917096 489 | 16907445 490 | 14012323 491 | 13726510 492 | 12320741 493 | 14582666 494 | 15546077 495 | 13878755 496 | 15514973 497 | 15776526 498 | 18889622 499 | 22157263 500 | 17315646 501 | 17784570 502 | 18626976 503 | 17672716 504 | 17703820 505 | 17851962 506 | 14144619 507 | 19253870 508 | 29655281 509 | 19540442 510 | 19917640 511 | 23929419 512 | 24499762 513 | 26047251 514 | 33628488 515 | 36926586 516 | 26465360 517 | 26199496 518 | 28023374 519 | 29393728 520 | 29921145 521 | 29659592 522 | 36330796 523 | 31460265 524 | 31817335 525 | 35636532 526 | 31848439 527 | 31996581 528 | 33398489 529 | 33685061 530 | 56844226 531 | 34062259 532 | 38794312 533 | 48429181 534 | 44417402 535 | 50965122 536 | 49976670 537 | 56496343 538 | 52246747 539 | 52664856 540 | 54222870 541 | 56120641 542 | 55593224 543 | 63277600 544 | 59053320 545 | 63058081 546 | 68148131 547 | 63308704 548 | 69321593 549 | 107475483 550 | 63845020 551 | 65395070 552 | 67460748 553 | 67083550 554 | 111706781 555 | 72856571 556 | 78479661 557 | 87223493 558 | 92846583 559 | 111500952 560 | 100941792 561 | 124644474 562 | 104911603 563 | 117500470 564 | 106887726 565 | 109816094 566 | 217291577 567 | 136165275 568 | 184961218 569 | 122898340 570 | 152618563 571 | 127153724 572 | 174559033 573 | 166336862 574 | 184563352 575 | 129240090 576 | 239193433 577 | 134544298 578 | 151336232 579 | 179421453 580 | 165703154 581 | 171326244 582 | 180070076 583 | 197758186 584 | 205853395 585 | 207829518 586 | 302502137 587 | 263318999 588 | 232714434 589 | 216703820 590 | 388030064 591 | 259063615 592 | 285880530 593 | 470443882 594 | 250052064 595 | 263784388 596 | 404896587 597 | 437216762 598 | 280576322 599 | 294943244 600 | 300247452 601 | 305870542 602 | 337029398 603 | 604733884 604 | 345124607 605 | 486429717 606 | 351396320 607 | 377828262 608 | 456821801 609 | 625700929 610 | 424533338 611 | 449418254 612 | 466755884 613 | 475767435 614 | 1092456813 615 | 509115679 616 | 789692001 617 | 657266862 618 | 544995308 619 | 513836452 620 | 714857660 621 | 631972642 622 | 575519566 623 | 580823774 624 | 595190696 625 | 637276850 626 | 932220094 627 | 786447652 628 | 696520927 629 | 953185601 630 | 1067253491 631 | 729224582 632 | 970658253 633 | 942523319 634 | 900300773 635 | 873951592 636 | 975871563 637 | 980592336 638 | 1141088321 639 | 1022952131 640 | 1243061034 641 | 1058831760 642 | 1218100624 643 | 1310048356 644 | 1212796416 645 | 1844609845 646 | 1277344701 647 | 1156343340 648 | 1176014470 649 | 1232467546 650 | 1333797777 651 | 1425745509 652 | 1639044246 653 | 1603176174 654 | 1752176713 655 | 1671747901 656 | 1629525355 657 | 1774252365 658 | 1896903723 659 | 2703090210 660 | 2448697640 661 | 1956463899 662 | 2003544467 663 | 2081783891 664 | 2215175100 665 | 2234846230 666 | 2551898401 667 | 2445263962 668 | 2332357810 669 | 3727912871 670 | 3000953185 671 | 2433688041 672 | 2388810886 673 | 2658213055 674 | 2566265323 675 | 2936973951 676 | 3028921683 677 | 3232701529 678 | 4345601363 679 | 3381702068 680 | 4106610175 681 | 4131749953 682 | 4414141701 683 | 4316630121 684 | 3960008366 685 | 4038247790 686 | 4085328358 687 | 4218719567 688 | 4781440423 689 | 6029874868 690 | 4801111553 691 | 7782393608 692 | 7367376876 693 | 5417732569 694 | 7086281543 695 | 4999953364 696 | 4822498927 697 | 4955076209 698 | 13116156411 699 | 7114250041 700 | 7022302309 701 | 6261623212 702 | 8452389491 703 | 7341710434 704 | 7419949858 705 | 7998256156 706 | 9414095065 707 | 8401958479 708 | 8045336724 709 | 8123576148 710 | 8839359343 711 | 8304047925 712 | 9218672931 713 | 9582551976 714 | 9623610480 715 | 16709892023 716 | 12782346972 717 | 12114203405 718 | 14578686689 719 | 15872339349 720 | 9777575136 721 | 11084122139 722 | 11216699421 723 | 19486080618 724 | 17241317822 725 | 13283925521 726 | 13603333646 727 | 30313225669 728 | 14761660292 729 | 17620631410 730 | 16168912872 731 | 16884696067 732 | 16349384649 733 | 25568057580 734 | 20666674115 735 | 17143407268 736 | 26292443999 737 | 18801224907 738 | 19206162456 739 | 19401185616 740 | 20861697275 741 | 20994274557 742 | 36349569724 743 | 22300821560 744 | 23061500657 745 | 24539235428 746 | 24368047660 747 | 30702780039 748 | 29772246518 749 | 32382291702 750 | 28045585813 751 | 33970016059 752 | 30930573164 753 | 31111044941 754 | 32518297521 755 | 33053608939 756 | 41660948672 757 | 40262882891 758 | 35944632175 759 | 36544592884 760 | 38005104543 761 | 43162518835 762 | 38007387363 763 | 43923197932 764 | 47600736085 765 | 41855971832 766 | 43295096117 767 | 45362322217 768 | 46668869220 769 | 48907283088 770 | 70523402064 771 | 52413633473 772 | 57817832331 773 | 58976158977 774 | 63984182103 775 | 59156630754 776 | 62041618105 777 | 73316491830 778 | 85451875972 779 | 76012491906 780 | 89170165979 781 | 73949736718 782 | 105964816037 783 | 149962228624 784 | 74549697427 785 | 79861076375 786 | 79863359195 787 | 81930585295 788 | 85151067949 789 | 88524841052 790 | 239132394603 791 | 92031191437 792 | 122960341080 793 | 110948901193 794 | 101320916561 795 | 119859450436 796 | 137865509445 797 | 121017777082 798 | 159100804667 799 | 180514513464 800 | 121198248859 801 | 135358109935 802 | 260825850525 803 | 177333408467 804 | 148499434145 805 | 307600238812 806 | 195747946286 807 | 154410773802 808 | 154413056622 809 | 300293749547 810 | 313513861289 811 | 161793944490 812 | 268358884581 813 | 467926917911 814 | 250318785542 815 | 193352107998 816 | 202980092630 817 | 350161002908 818 | 380313501097 819 | 221180366997 820 | 240877227518 821 | 242216025941 822 | 256375887017 823 | 415476691684 824 | 373866621462 825 | 256556358794 826 | 316204718292 827 | 445692293048 828 | 537385085289 829 | 302912490767 830 | 410969415416 831 | 355146052488 832 | 543789718285 833 | 443670893540 834 | 364774037120 835 | 382974311487 836 | 913619210959 837 | 601493868094 838 | 396332200628 839 | 414532474995 840 | 819558914510 841 | 585954404117 842 | 462057594515 843 | 497253114535 844 | 463396392938 845 | 658058543255 846 | 702248651842 847 | 905728488055 848 | 559468849561 849 | 572761077086 850 | 611702411282 851 | 619117209059 852 | 667686527887 853 | 685886802254 854 | 699244691395 855 | 719920089608 856 | 738120363975 857 | 747748348607 858 | 761106237748 859 | 779306512115 860 | 880227426022 861 | 858389795143 862 | 955801050189 863 | 810864675623 864 | 1033649684054 865 | 1056721964096 866 | 925453987453 867 | 1178586058620 868 | 1075098804220 869 | 1149283195192 870 | 1132229926647 871 | 1171171260843 872 | 1184463488368 873 | 1286803736946 874 | 1191878286145 875 | 1230819620341 876 | 1305004011313 877 | 1353573330141 878 | 1433635150861 879 | 1619496032891 880 | 1540412749863 881 | 1558613024230 882 | 1508854586355 883 | 1590171187738 884 | 1637696307258 885 | 3023806338599 886 | 1943094602270 887 | 1982035936466 888 | 2476175272156 889 | 2380102815533 890 | 1982175951549 891 | 2000552791673 892 | 2310815985267 893 | 3610922435874 894 | 2281513121839 895 | 2303401187490 896 | 2457974997789 897 | 2422697906486 898 | 4285437123956 899 | 4964495766015 900 | 2535823631654 901 | 2658577341454 902 | 2787208481002 903 | 2942489737216 904 | 4282065913512 905 | 3619732243724 906 | 3148784211968 907 | 3099025774093 908 | 4839224819144 909 | 3619872258807 910 | 4292991936816 911 | 3925130538736 912 | 3964211888015 913 | 4661615937372 914 | 3982728743222 915 | 4817336753493 916 | 4303953979163 917 | 4584914309329 918 | 4704211028325 919 | 8210567662692 920 | 4726099093976 921 | 6091273949184 922 | 4958521538140 923 | 5194400973108 924 | 5601067078670 925 | 5323032112656 926 | 8942764356380 927 | 13246718335543 928 | 6562221980940 929 | 10559588616810 930 | 8437209012300 931 | 6247809986061 932 | 6718898032900 933 | 8651229632712 934 | 9779315282437 935 | 14083269261600 936 | 8922733426155 937 | 7946940631237 938 | 8286682722385 939 | 18065998004822 940 | 8888868288492 941 | 11570842098717 942 | 9289125337654 943 | 12914778691017 944 | 14523800504825 945 | 9684620632116 946 | 10152922511248 947 | 18177993626146 948 | 10517433085764 949 | 13974261745368 950 | 11885254093596 951 | 26889040436385 952 | 13281120013840 953 | 14509162612177 954 | 32149267266422 955 | 18954642098064 956 | 40972309697985 957 | 14665838664137 958 | 16233623353622 959 | 17631561263353 960 | 16835808919729 961 | 22402687179360 962 | 32140723875530 963 | 17175551010877 964 | 18573488920608 965 | 19041790799740 966 | 18973745969770 967 | 19442047848902 968 | 19837543143364 969 | 32155361768178 970 | 20202053717880 971 | 34807112274230 972 | 33620480762201 973 | 44025977969126 974 | 26394416705773 975 | 25166374107436 976 | 31344971531906 977 | 27790282626017 978 | 29175001276314 979 | 30899462017759 980 | 44023905979639 981 | 31501647583866 982 | 33639584633907 983 | 38811289113134 984 | 34011359930606 985 | 48520522542783 986 | 35749039931485 987 | 65141232217773 988 | 36149296980647 989 | 37547234890378 990 | 46764028595787 991 | 38415793818672 992 | 69192352076562 993 | 83327634817013 994 | 55569417982087 995 | 55009165992110 996 | 63941651596151 997 | 52956656733453 998 | 51560790813209 999 | 54184699331790 1000 | 54341375383750 1001 | 62244433549665 1002 | ] 1003 | -------------------------------------------------------------------------------- /day9/part1.nix: -------------------------------------------------------------------------------- 1 | { input ? import ./input.nix}: 2 | let 3 | inherit (builtins) elem head tail; 4 | inherit (import ../utils.nix) fix any take drop; 5 | sumCheck = inputs: result: let 6 | negatives = map (x: result - x) inputs; 7 | in any (map (x: elem x negatives) inputs); 8 | output = fix (f: input: let 9 | preamble = take 25 input; 10 | check = head (drop 25 input); 11 | in if !(sumCheck preamble check) then check else f (tail input)) input; 12 | in 13 | { 14 | inherit take drop sumCheck output; 15 | fault = output; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /day9/part2.nix: -------------------------------------------------------------------------------- 1 | { input ? import ./input.nix }: 2 | let 3 | inherit (import ./part1.nix { inherit input; }) fault take drop; 4 | inherit (builtins) head tail elemAt length; 5 | inherit (import ../utils.nix) fix sum min max; 6 | output = fix (f: inputs: counter: let 7 | sumIn = sum inputs; 8 | first = min inputs; 9 | last = max inputs; 10 | in if sumIn == fault then first + last else 11 | if sumIn < fault then f (inputs ++ [(elemAt input counter)]) (counter + 1) else 12 | f (tail inputs) counter) [] 0; 13 | in 14 | { inherit output; } 15 | 16 | -------------------------------------------------------------------------------- /utils.nix: -------------------------------------------------------------------------------- 1 | let 2 | inherit (builtins) attrNames div elem elemAt foldl' filter fromJSON genList head isString isInt length listToAttrs match split tail; 3 | in rec { 4 | fix = f: let x = f x; in x; 5 | # Especially useful if working with tuples (tuples in a semantic sense of course) 6 | quickElem = f: xs: let i = elemAt xs; in f i; 7 | enumerate = xs: genList (x: [x (elemAt xs x)]) (length xs); 8 | charList = simpleSplit ""; 9 | gcd = a: b: if b == 0 then a else gcd b (mod a b); 10 | lcm = a: b: a * b / (gcd a b); 11 | take = n: xs: if n == 0 then [] else [(head xs)] ++ take (n - 1) (tail xs); 12 | drop = n: xs: if n == 0 then xs else drop (n - 1) (tail xs); 13 | mod = base: int: base - (int * (div base int)); 14 | simpleSplit = splitter: input: filter (x: isString x && x != "") (split splitter input); 15 | attrsToList = attrs: map (k: [k attrs.${k}]) (attrNames attrs); 16 | listToAttrs = list: listToAttrs (map (quickElem (i: {${i 0} = i 1;})) list); 17 | isIntStr = x: match "[0-9]+" x != null; 18 | toInt = string: let 19 | digitDict = { 20 | "0" = 0; 21 | "1" = 1; 22 | "2" = 2; 23 | "3" = 3; 24 | "4" = 4; 25 | "5" = 5; 26 | "6" = 6; 27 | "7" = 7; 28 | "8" = 8; 29 | "9" = 9; 30 | }; 31 | in foldl' (a: b: 10*a + digitDict.${b}) 0 (charList string); 32 | 33 | # Folds 34 | flatten = foldl' (a: b: a ++ b) []; 35 | sum = foldl' (a: b: a + b) 0; 36 | product = foldl' (a: b: a * b) 1; 37 | any = foldl' (a: b: a || b) false; 38 | all = foldl' (a: b: a && b) true; 39 | min = xs: foldl' (a: b: if a < b then a else b) (head xs) (tail xs); # maxInt 40 | max = xs: foldl' (a: b: if a > b then a else b) (head xs) (tail xs); # minInt/2 41 | } 42 | --------------------------------------------------------------------------------