├── 1 ├── default.nix └── input ├── 2 ├── default.nix └── input ├── 3 ├── default.nix └── input ├── 4 ├── default.nix └── input ├── 5 ├── default.nix └── input ├── 6 ├── default.nix └── input ├── 7 ├── default.nix └── input ├── 8 ├── default.nix └── input ├── 9 ├── default.nix └── input ├── 10 ├── default.nix └── input ├── 11 ├── default.nix └── input ├── 12 ├── default.nix └── input ├── 13 ├── default.nix └── input ├── 14 ├── default.nix └── input └── 15 └── default.nix /1/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | input = map lib.toInt (lib.splitString "\n" (lib.fileContents ./input)); 5 | 6 | # Given a list of numbers and a number, find two numbers in the list that sum to the given number 7 | sumsTo = list: n: 8 | let 9 | a = lib.genAttrs (map toString list) (v: null); 10 | b = lib.genAttrs (map (v: toString (n - v)) list) (v: null); 11 | i = builtins.intersectAttrs a b; 12 | in map lib.toInt (lib.attrNames i); 13 | 14 | part1 = let r = sumsTo input 2020; in lib.elemAt r 0 * lib.elemAt r 1; 15 | 16 | sumsTo3 = list: n: 17 | let 18 | x = lib.concatMap (v: sumsTo (lib.remove v list) (n - v)) list; 19 | in lib.unique x; 20 | 21 | part2 = let r = sumsTo3 input 2020; in lib.elemAt r 0 * lib.elemAt r 1 * lib.elemAt r 2; 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /1/input: -------------------------------------------------------------------------------- 1 | 1895 2 | 1504 3 | 1660 4 | 1775 5 | 1743 6 | 1607 7 | 1267 8 | 1133 9 | 292 10 | 1646 11 | 1285 12 | 1808 13 | 1512 14 | 1839 15 | 1869 16 | 1578 17 | 1318 18 | 1385 19 | 1829 20 | 1800 21 | 1491 22 | 1600 23 | 1290 24 | 1856 25 | 1781 26 | 1881 27 | 1953 28 | 2008 29 | 1681 30 | 1472 31 | 1846 32 | 2010 33 | 1619 34 | 1584 35 | 1849 36 | 1876 37 | 1744 38 | 1980 39 | 1421 40 | 911 41 | 1308 42 | 1762 43 | 1398 44 | 1470 45 | 1974 46 | 1902 47 | 1985 48 | 2001 49 | 1926 50 | 1374 51 | 1678 52 | 1523 53 | 1894 54 | 1597 55 | 1778 56 | 1940 57 | 1362 58 | 1613 59 | 1629 60 | 1473 61 | 1633 62 | 1867 63 | 1838 64 | 1931 65 | 1850 66 | 1776 67 | 1689 68 | 1311 69 | 1947 70 | 1988 71 | 1779 72 | 1381 73 | 1683 74 | 1677 75 | 1675 76 | 1587 77 | 767 78 | 1401 79 | 1412 80 | 1544 81 | 1484 82 | 618 83 | 1755 84 | 1073 85 | 1970 86 | 1735 87 | 1770 88 | 1623 89 | 1665 90 | 1783 91 | 1400 92 | 1892 93 | 1921 94 | 1506 95 | 1978 96 | 1731 97 | 1739 98 | 1515 99 | 1354 100 | 1264 101 | 1394 102 | 1763 103 | 1569 104 | 1453 105 | 1539 106 | 2006 107 | 1586 108 | 1855 109 | 1609 110 | 1729 111 | 1624 112 | 506 113 | 1668 114 | 1803 115 | 1486 116 | 1767 117 | 1720 118 | 1753 119 | 1994 120 | 1718 121 | 1922 122 | 1314 123 | 1250 124 | 1516 125 | 1546 126 | 1625 127 | 1708 128 | 1286 129 | 1993 130 | 1785 131 | 491 132 | 1705 133 | 1924 134 | 1752 135 | 1888 136 | 1651 137 | 1604 138 | 1750 139 | 1547 140 | 1481 141 | 1704 142 | 1851 143 | 904 144 | 1920 145 | 1939 146 | 1277 147 | 1870 148 | 1934 149 | 1617 150 | 1833 151 | 1797 152 | 1817 153 | 1967 154 | 1935 155 | 1914 156 | 1621 157 | 1468 158 | 1859 159 | 1552 160 | 1640 161 | 1709 162 | 1121 163 | 1973 164 | 1343 165 | 1266 166 | 1806 167 | 1360 168 | 1299 169 | 1990 170 | 1356 171 | 1631 172 | 1555 173 | 1811 174 | 1323 175 | 1794 176 | 1550 177 | 1448 178 | 1848 179 | 1826 180 | 1723 181 | 1891 182 | 1302 183 | 1655 184 | 947 185 | 1580 186 | 1908 187 | 1641 188 | 1816 189 | 1701 190 | 1871 191 | 1588 192 | 1843 193 | 1643 194 | 1893 195 | 1866 196 | 1628 197 | 1417 198 | 1795 199 | 1995 200 | 1937 201 | -------------------------------------------------------------------------------- /10/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | input = lib.sort (a: b: a < b) (map lib.toInt (lib.splitString "\n" (lib.fileContents ./input))); 4 | 5 | input' = [ 0 ] ++ input ++ [ (lib.last input + 3) ]; 6 | 7 | part1 = 8 | let 9 | differences = lib.zipListsWith (a: b: b - a) input' (lib.tail input'); 10 | counts = lib.foldl' (acc: el: acc // { ${toString el} = acc.${toString el} or 0 + 1; }) {} differences; 11 | in counts."1" * counts."3"; 12 | 13 | # List of booleans 14 | arrangements = list: 15 | let 16 | count = lib.genList (n: 17 | if ! lib.elemAt list n then 0 18 | else if n == 0 then 1 19 | else let 20 | a = if n < 3 then 0 else lib.elemAt count (n - 3); 21 | b = if n < 2 then 0 else lib.elemAt count (n - 2); 22 | c = if n < 1 then 0 else lib.elemAt count (n - 1); 23 | in a + b + c 24 | ) (lib.length list); 25 | in count; 26 | 27 | part2 = 28 | let 29 | booleanList = lib.genList (n: lib.elem n input') (lib.last input' + 1); 30 | in lib.last (arrangements booleanList); 31 | } 32 | -------------------------------------------------------------------------------- /10/input: -------------------------------------------------------------------------------- 1 | 35 2 | 111 3 | 135 4 | 32 5 | 150 6 | 5 7 | 106 8 | 154 9 | 41 10 | 7 11 | 27 12 | 117 13 | 109 14 | 63 15 | 64 16 | 21 17 | 138 18 | 98 19 | 40 20 | 71 21 | 144 22 | 13 23 | 66 24 | 48 25 | 12 26 | 55 27 | 119 28 | 103 29 | 54 30 | 78 31 | 65 32 | 112 33 | 39 34 | 128 35 | 53 36 | 140 37 | 77 38 | 34 39 | 28 40 | 81 41 | 151 42 | 125 43 | 85 44 | 124 45 | 2 46 | 99 47 | 131 48 | 59 49 | 60 50 | 6 51 | 94 52 | 33 53 | 42 54 | 93 55 | 14 56 | 141 57 | 92 58 | 38 59 | 104 60 | 9 61 | 29 62 | 100 63 | 52 64 | 19 65 | 147 66 | 49 67 | 74 68 | 70 69 | 84 70 | 113 71 | 120 72 | 91 73 | 97 74 | 17 75 | 45 76 | 139 77 | 90 78 | 116 79 | 149 80 | 129 81 | 87 82 | 69 83 | 20 84 | 24 85 | 148 86 | 18 87 | 58 88 | 123 89 | 76 90 | 118 91 | 130 92 | 132 93 | 75 94 | 110 95 | 105 96 | 1 97 | 8 98 | 86 99 | -------------------------------------------------------------------------------- /11/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | parseTile = let mapping = { 5 | "." = 0; 6 | "L" = 1; 7 | "#" = 2; 8 | }; in v: mapping.${v}; 9 | 10 | parseLine = line: map parseTile (lib.stringToCharacters line); 11 | 12 | input = map parseLine (lib.splitString "\n" (lib.fileContents ./input)); 13 | 14 | height = lib.length input; 15 | width = lib.length (lib.elemAt input 0); 16 | 17 | borderRow = lib.genList (n: 0) (width + 2); 18 | borderedInput = [ borderRow ] ++ map (row: [ 0 ] ++ row ++ [ 0 ]) input ++ [ borderRow ]; 19 | 20 | nextBoard = board: 21 | let 22 | occupiedCount = rowIndex: columnIndex: 23 | let 24 | list = lib.genList (n: 25 | let 26 | row = n / 3; 27 | column = n - 3 * row; 28 | row' = rowIndex + row; 29 | column' = columnIndex + column; 30 | value = lib.elemAt (lib.elemAt board row') column'; 31 | in if value == 2 then 1 else 0 32 | ) 9; 33 | in lib.foldl' lib.add 0 list; 34 | 35 | newBoard = [ borderRow ] ++ lib.genList (row: 36 | [ 0 ] ++ lib.genList (column: 37 | let 38 | value = lib.elemAt (lib.elemAt board (row + 1)) (column + 1); 39 | count = occupiedCount row column; 40 | in 41 | if value == 1 && count == 0 then 2 42 | else if value == 2 && count >= 5 then 1 43 | else value 44 | ) width ++ [ 0 ] 45 | ) height ++ [ borderRow ]; 46 | in newBoard; 47 | 48 | countOccupied = lib.foldl' (lib.foldl' (acc: tile: acc + (if tile == 2 then 1 else 0))) 0; 49 | 50 | part1 = countOccupied (lib.converge nextBoard borderedInput); 51 | 52 | nextBoard' = board: 53 | let 54 | directionMap = dRow: dColumn: 55 | let result = lib.genList (row: lib.genList (column: 56 | let 57 | targetRow = row + dRow; 58 | targetColumn = column + dColumn; 59 | boardValue = lib.elemAt (lib.elemAt board targetRow) targetColumn; 60 | resultValue = lib.elemAt (lib.elemAt result targetRow) targetColumn; 61 | in 62 | if targetRow < 0 || height <= targetRow then false 63 | else if targetColumn < 0 || width <= targetColumn then false 64 | else if boardValue == 2 then true 65 | else if boardValue == 1 then false 66 | else resultValue 67 | ) width) height; 68 | in result; 69 | 70 | directions = [ 71 | (directionMap (-1) (-1)) 72 | (directionMap (-1) 0) 73 | (directionMap (-1) 1) 74 | (directionMap 0 (-1)) 75 | (directionMap 0 1) 76 | (directionMap 1 (-1)) 77 | (directionMap 1 0) 78 | (directionMap 1 1) 79 | ]; 80 | 81 | occupiedCount = rowIndex: columnIndex: 82 | lib.foldl' (acc: dirMap: 83 | let occupied = lib.elemAt (lib.elemAt dirMap rowIndex) columnIndex; 84 | in acc + (if occupied then 1 else 0) 85 | ) 0 directions; 86 | 87 | newBoard = lib.genList (row: 88 | lib.genList (column: 89 | let 90 | value = lib.elemAt (lib.elemAt board row) column; 91 | count = occupiedCount row column; 92 | in 93 | if value == 1 && count == 0 then 2 94 | else if value == 2 && count >= 5 then 1 95 | else value 96 | ) width 97 | ) height; 98 | 99 | in newBoard; 100 | 101 | m = [ "." "L" "#" ]; 102 | printBoard = board: builtins.trace ("\n" + lib.concatMapStringsSep "\n" (lib.concatMapStrings (lib.elemAt m)) board) board; 103 | 104 | part2 = countOccupied (lib.converge nextBoard' input); 105 | } 106 | -------------------------------------------------------------------------------- /11/input: -------------------------------------------------------------------------------- 1 | LLLLLLLLLLL..LLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLLLLL..LLLLL 2 | LLLLL..L.LLL.L.LLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLL..LLLL 3 | LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLL.LLLLL 4 | LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLL 5 | LLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL 6 | LLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL 7 | LLLL.L.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL 8 | LLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLL.LLL..LLLLLLL 9 | ..LLL...L....LL...LLLL.....LL.L.LL.....LL.....L...L.L....LLL..L....L......L........L...L.L.. 10 | LLLLLL.LLLLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLL..LLLLLLLLLLLLLLLLLL 11 | LLLLLLLLL.LL.LLLLLL.LLLLLLLLLLLLLL.LLLLLL..LLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LL.LL 12 | LLLLLLLLL.LL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL..LLLLLL.LLLLL.LLLLLL.LLLLL 13 | LLLLLL.LLLLL.LL.LLLLLLLLLLLLLLLLL..LLLLLL.LLLLLLLLL.LLL.LL.LLLLLL..LLL.LLLLLLLLLLLLLLL.LLLLL 14 | LLLLLLLLLLLL.LLLLLLL.LL..LLLLLLLLLLLLLL.L.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLL 15 | LL.L.LLL.L.L..LLL....LL..L.L..LL.L.LL....LL....LL..LLL.......L....LLL...LL...L....L.....LL.. 16 | LLLLLL.LLLLL.LLLLLL.LLL.L.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL 17 | LLLLL..LLLL.LLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LL.LLL.L.LLL.LLLL.LLLLLLL 18 | LLLLL..LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL..LLLLL.LLLLL 19 | LL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LL.LLLL.LL.LLL.LLLLL.LLLLLL.LLLLL 20 | LLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLL.L.LLL 21 | ....L...L.L...L..L..LL.........L.L...L.....L...LLLLL...LL.....LLL..LL..L.L...LL......LL..L.. 22 | LLLLLL.LLLLL.LLL.LL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLL.LLLLL 23 | LLLLLL.LLL.L.LLLLLL.LLLLL.LLL.L.LL.LLLLLLLLLLLLLLL..LLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLL 24 | LLLLLL.LLLLL.LLLLLLLLLLLL.LL.LLLLL.LLLLLL.LLLLLLLLL.LL.LLL.LLLLL.L.LLLLLL.LLLLLLLLLLLL.LLLLL 25 | LLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LL.LLL.L.LLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL 26 | LLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLL.L.LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLL 27 | LLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLLLL.LLLL.LLLLLLLLL.LLLL.L.LLLLLLL.LLLLLLLLLL.L.LLLLLL.LLLLL 28 | L..LL......L...L.L..L..LLL........LLL....L.L.L.L..........L.L...L..LL.L.......L...L.LL.LL... 29 | LLLLLLLLLLLL.LLL.LL.LLLLL.LLLLLLLL.LLLLLL.LL.LLLLLLLLLLLLL.LLL.LLLLLLLLLL.LLLLL.LLLLLL.LLLLL 30 | LLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLL.L.LLLLLLL.LLLLLL.LLLLL.LLLL.L.LLLLL 31 | LLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLL..LLLLLLLLLLLLLLL.L.LL.LL.LL.LLL.LLLLL.LLLLLLLLLLLL 32 | LLLLLL.LLLLL.LLL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL 33 | LLLLLL.LLLLL.LLLL.L.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL..LLL.LLLLLLLLL.LLLLL.LLLLLL.LLLLL 34 | LLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLL.LL.LL.LLLLLLLLLLLL.L.LLLLL.LLLLLLLLLLLL 35 | LLLLLL.LLLL..LLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLL.LLLLLL.LLLLL 36 | .L.......L...L.LLL...LL....L...L.......L......L..L...L.....L.....LL..L...L..L.L.......L..... 37 | LL.LLL.LLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLL.L.LLLLL.LLLLLLLLLLLL 38 | LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL.LLL.L 39 | LLLLLLLLLL.L.LLLLLL.L.LLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLL 40 | LLLL.L.L.LLL.LLLLLL.LLLLL.LLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLL.LLLLL 41 | .........L..LL...L..LLL.L.L.L.LL....LLLL...L....L...L.LL....LL.LL.L......L.L.LLLLL.L.LL....L 42 | LLLLLL.LLLLL.LLLLLL.LLLL..LLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLL.L.LLLLLLLLLLLL.LLLLL 43 | LL.LLL.LLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.L..LLLLLLLLL...LLL..LLLLLLL.LLLLLLLLLLLL 44 | L.LLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.L.LLLLLLL.LLLLLL.LLLLL.LLLLLL.LLLLL 45 | LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LL.LLL.LLLLL.LLLLLL.LLLLL 46 | LLLLLLLLLLLL.LL.LLL.LLLLL.L.LLLLLL.LLLLLL.L.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL 47 | LLLLL..LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LL.LLLL.LLLLLL.LLLLLLLLLLLL.LLLLL 48 | LLL.LLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLL..LLLLLL.LL.LLLLLL.LLLLL.L..LLLLL.LLLL...LLLLLLLLLLL 49 | LLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLL..LLLLLLLLLLLL 50 | ..L..........LLLL...LL....LLLLL....L...L...L...L.......L.LL..L....L....L.L..L....LL......L.. 51 | LLLLLL.LLLLL.L.LLLL.LLLL..LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLL.LLLLL 52 | LL.LLL.LLLLL.LLLLL..LLLLL.LLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLL..LLLL 53 | LLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLL.L.LLLLLLLLLL.LLLLLL.LLL..LLLLLLLLLLLLLLLLL 54 | LLLL.LLLLLLL.LLLLLL.LLL.L.LLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL..LLLLL.LLLLL 55 | LL.LLL.LLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLL.LLLLLL..LLLLLL.LLLLLLLLLLLLLLLLLL 56 | LLLLLLLLLLLLLLLLLLLLL.L.L.LLLLLLLLLLLLLLL.LLL.LLLLL.LLLLLL.L.LLLLL...LLLL.LLLLLLLLLLLLLLLLLL 57 | .L...L...........L.LLL..L.......L.....LL......L.LLL........LL..L...L......L.L....L.LLL.LL..L 58 | LLLLLL.LLLLL.L.LLLL.LLLLL.LLLLLLLL.LL.LLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL 59 | LLLLLL.LLLLL.LLLLLL.LL.LL.LLLLLLLL.LLL.LL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLL 60 | LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL 61 | LLLLLL.L.LLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL 62 | LLLLLL.L.LLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.L.LLLLL.LLLLLL.LLLLLLLLLLLL.LLLLL 63 | LLLLLL.LLLLL..LLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLL 64 | LLLLLLLLLLLL.LLLLLL.LLLLLLLLLLL.LL.L.LLLL.LLLLLLLLLLLLLLLL..LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL 65 | LLLLLL.LLL.L.LLLLLL..LLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLL..LLLLLLL.LLLLLLL.LLLL.LLLLLL.LLLLL 66 | ..L..L..L...L..L.L.....LL..L..L..LLLL..L.......L.LL...L..LL..LLL...L....L..L.L.....L..LL...L 67 | LLLLLL.LLLLLLLLLLLL.LL.LL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLL 68 | LLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL 69 | LLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLL..LLL.LLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL 70 | LLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLL.LLLLLL..LLLLLL.LLLLL 71 | LLLLLL.LL.LL.LLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL 72 | LLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLL.L.LLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLL.LLLLLLL.LLLLL.LLLL 73 | LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLL..LLLLLL.LLLLL..LLLLLLLLLLL 74 | LL..L.L......L.......L........L.LL.....LL......L...L..L.L...L.LL..L..L......L.L..LL...LL...L 75 | LLLLLL.LL.LL.LLLLLL.LLLLL.LLLLLLLL.LLLLLL.L..LLLLLL.LLLLLL.LLLLLLL.LLLLLL..L.LLLLLLLLLLLL.LL 76 | LLLLLL.LL.LL.LLLLLL.LLLLLLLL.LLLLL.LLLLLL.LL.LLLLLL.LLLLLL.LLL.LLL.LL.LLL..LLLLLLLLLLL.LLLLL 77 | LLLLLLL.LLLL.LLLLLL.LLL.LLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL..LLLLL.LLLLLLLLLLLL.LLLLL 78 | LLLLLL.L.LLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LL.LLL.LLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL 79 | LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLL..LLLLL 80 | LLLL.L.LLLLL..LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLL.L.LLLLL.LLLLLL.LLLLL.LLLL.LLLLLLL 81 | LLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL 82 | LLLLL..L.LLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL..LLLLL.LLLLLL.LLLLL 83 | L....L.L.L..LLL.....L....LL...LL....LLLL....LLL.L.......L.....LL.....L..L.LL..LL....L...LL.L 84 | LLLLLL.LLLLL.LLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLL.LLLLL 85 | LL.LLL.L.LLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LL.LLLLL.L.LLLLLL.LLLLL.LLLLLL.LLLL. 86 | LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.L.LL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLL.L.LLL 87 | LLLLLL.LLLLL.LLLL.L.LLLLLLLLLLLLLL.LLLLLL..LLLLLLLL.L.LLLL.LLL.LLL.LLLLLL.LLLLL.LLLLLL.LLLLL 88 | LLLLLLLLLL.L.L.LLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL 89 | LLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL 90 | LLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL 91 | LLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL...LLLLL.L.LLLL.LLLLLLLLLLLL..LLLL 92 | LLLLLL.LL.LL.LLLLLLLLLLLLLLLLLL.LL.LLLLLL.LLLLLLLL..LLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLL 93 | LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL 94 | LLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLL.LL.LLLLLL.LLLLLLLLLL.LLL.LLLLLL..LLLL.LLLLLLLLLLLL 95 | -------------------------------------------------------------------------------- /12/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | parseLine = line: 5 | let 6 | m = builtins.match "(.)(.*)" line; 7 | in { 8 | op = lib.elemAt m 0; 9 | value = lib.toInt (lib.elemAt m 1); 10 | }; 11 | 12 | input = map parseLine (lib.splitString "\n" (lib.fileContents ./input)); 13 | 14 | initialState1 = { 15 | dx = 1; 16 | dy = 0; 17 | x = 0; 18 | y = 0; 19 | }; 20 | 21 | turnLeft = state: state // { dx = -state.dy; dy = state.dx; }; 22 | turnRight = state: state // { dx = state.dy; dy = -state.dx; }; 23 | 24 | nextState1 = state: instr: { 25 | N = state // { y = state.y + instr.value; }; 26 | S = state // { y = state.y - instr.value; }; 27 | E = state // { x = state.x + instr.value; }; 28 | W = state // { x = state.x - instr.value; }; 29 | L = lib.foldl' (state: _: turnLeft state) state (lib.genList throw (instr.value / 90)); 30 | R = lib.foldl' (state: _: turnRight state) state (lib.genList throw (instr.value / 90)); 31 | F = state // { 32 | x = state.x + instr.value * state.dx; 33 | y = state.y + instr.value * state.dy; 34 | }; 35 | }.${instr.op}; 36 | 37 | distance = state: 38 | (if state.x < 0 then -state.x else state.x) 39 | + (if state.y < 0 then -state.y else state.y); 40 | 41 | part1 = 42 | let 43 | result = lib.foldl' nextState1 initialState1 input; 44 | in distance result; 45 | 46 | initialState2 = { 47 | dx = 10; 48 | dy = 1; 49 | x = 0; 50 | y = 0; 51 | }; 52 | 53 | nextState2 = state: instr: { 54 | N = state // { dy = state.dy + instr.value; }; 55 | S = state // { dy = state.dy - instr.value; }; 56 | E = state // { dx = state.dx + instr.value; }; 57 | W = state // { dx = state.dx - instr.value; }; 58 | L = lib.foldl' (state: _: turnLeft state) state (lib.genList throw (instr.value / 90)); 59 | R = lib.foldl' (state: _: turnRight state) state (lib.genList throw (instr.value / 90)); 60 | F = state // { 61 | x = state.x + instr.value * state.dx; 62 | y = state.y + instr.value * state.dy; 63 | }; 64 | }.${instr.op}; 65 | 66 | part2 = 67 | let 68 | result = lib.foldl' nextState2 initialState2 input; 69 | in distance result; 70 | 71 | } 72 | -------------------------------------------------------------------------------- /12/input: -------------------------------------------------------------------------------- 1 | F29 2 | E5 3 | L90 4 | W1 5 | R90 6 | E1 7 | R90 8 | W5 9 | F32 10 | E2 11 | S3 12 | R270 13 | F61 14 | R180 15 | R180 16 | E2 17 | F13 18 | R180 19 | F18 20 | L180 21 | F15 22 | N2 23 | S2 24 | R270 25 | N2 26 | F81 27 | W4 28 | N2 29 | E1 30 | N5 31 | F5 32 | N3 33 | R90 34 | W5 35 | S1 36 | F20 37 | L90 38 | S2 39 | R90 40 | F81 41 | S2 42 | E1 43 | F59 44 | N1 45 | L180 46 | W3 47 | R90 48 | E5 49 | F2 50 | R90 51 | F28 52 | R90 53 | F70 54 | L180 55 | S4 56 | L90 57 | F97 58 | W2 59 | R180 60 | S5 61 | F12 62 | N4 63 | L90 64 | F47 65 | R90 66 | F20 67 | W3 68 | S2 69 | E2 70 | F29 71 | S2 72 | L90 73 | S1 74 | L180 75 | F92 76 | L90 77 | S4 78 | W3 79 | L90 80 | W5 81 | F56 82 | N3 83 | L90 84 | S4 85 | F83 86 | S2 87 | F82 88 | W4 89 | F34 90 | R90 91 | N5 92 | F85 93 | R90 94 | F17 95 | R90 96 | F15 97 | W1 98 | L90 99 | F55 100 | S3 101 | F38 102 | W1 103 | F38 104 | S3 105 | W1 106 | N1 107 | F77 108 | R180 109 | S5 110 | F89 111 | L90 112 | F62 113 | N4 114 | R90 115 | E3 116 | L180 117 | E2 118 | F44 119 | S4 120 | R90 121 | W2 122 | L180 123 | S4 124 | R90 125 | N5 126 | F30 127 | S5 128 | R90 129 | F88 130 | R90 131 | F10 132 | L90 133 | N5 134 | F45 135 | E5 136 | F51 137 | W5 138 | N3 139 | E3 140 | F93 141 | E5 142 | F85 143 | N5 144 | L90 145 | F6 146 | W4 147 | N3 148 | F25 149 | L90 150 | E2 151 | S4 152 | W1 153 | R180 154 | E4 155 | S3 156 | E2 157 | F26 158 | N3 159 | E3 160 | F32 161 | N3 162 | L90 163 | F25 164 | L180 165 | E3 166 | F46 167 | F12 168 | N3 169 | W4 170 | L90 171 | S2 172 | L90 173 | F31 174 | W4 175 | F75 176 | L180 177 | E3 178 | F79 179 | R90 180 | N5 181 | L270 182 | W5 183 | L180 184 | S5 185 | F19 186 | N2 187 | F90 188 | L180 189 | W3 190 | S4 191 | E2 192 | F85 193 | N1 194 | F62 195 | W4 196 | F77 197 | L180 198 | W1 199 | N2 200 | L90 201 | F86 202 | R90 203 | W5 204 | F34 205 | E1 206 | F72 207 | R90 208 | E3 209 | F5 210 | N2 211 | R90 212 | S2 213 | R270 214 | W4 215 | F58 216 | F19 217 | R180 218 | R90 219 | W4 220 | F60 221 | N1 222 | E1 223 | R90 224 | F27 225 | W4 226 | L90 227 | F35 228 | E1 229 | F11 230 | E4 231 | R90 232 | W5 233 | F68 234 | L90 235 | S2 236 | W3 237 | F2 238 | L90 239 | F24 240 | W4 241 | N4 242 | R90 243 | F32 244 | L90 245 | L90 246 | F22 247 | F91 248 | R90 249 | W1 250 | F23 251 | W2 252 | S1 253 | W3 254 | S2 255 | F97 256 | W4 257 | L90 258 | W1 259 | F16 260 | S4 261 | L180 262 | W4 263 | F48 264 | E5 265 | F21 266 | N3 267 | F2 268 | E2 269 | F75 270 | N5 271 | E2 272 | L90 273 | E3 274 | F76 275 | L90 276 | N1 277 | L90 278 | N5 279 | E1 280 | L90 281 | E2 282 | R90 283 | F40 284 | L90 285 | S5 286 | E1 287 | F8 288 | S1 289 | L90 290 | E4 291 | N3 292 | F10 293 | L180 294 | F68 295 | R90 296 | F89 297 | R90 298 | W1 299 | L180 300 | E2 301 | F48 302 | S2 303 | L90 304 | F61 305 | N3 306 | L90 307 | L180 308 | W2 309 | N2 310 | F32 311 | R90 312 | E2 313 | F74 314 | W4 315 | N5 316 | F78 317 | N2 318 | F62 319 | S1 320 | R180 321 | S2 322 | E1 323 | L90 324 | N4 325 | F85 326 | R90 327 | W4 328 | R90 329 | E1 330 | R180 331 | W3 332 | S5 333 | E1 334 | R270 335 | N4 336 | F89 337 | N4 338 | R90 339 | N1 340 | E2 341 | N3 342 | F89 343 | N5 344 | E1 345 | F17 346 | R270 347 | F58 348 | E1 349 | L90 350 | F38 351 | W4 352 | S1 353 | E2 354 | R90 355 | E2 356 | W2 357 | L90 358 | W5 359 | L90 360 | E2 361 | F1 362 | E1 363 | F34 364 | S4 365 | F16 366 | W5 367 | L180 368 | F31 369 | L90 370 | E2 371 | F46 372 | L180 373 | N5 374 | F64 375 | R90 376 | F58 377 | L90 378 | F15 379 | L90 380 | S4 381 | E3 382 | F74 383 | F26 384 | S2 385 | W2 386 | S4 387 | F81 388 | S4 389 | L180 390 | E1 391 | F21 392 | F53 393 | E5 394 | F55 395 | L270 396 | W2 397 | S2 398 | E1 399 | S2 400 | E3 401 | N2 402 | F24 403 | L180 404 | N1 405 | E5 406 | F60 407 | S1 408 | F54 409 | N1 410 | F9 411 | N3 412 | L90 413 | E3 414 | L90 415 | E3 416 | L90 417 | N1 418 | F28 419 | N4 420 | R180 421 | N5 422 | F44 423 | N2 424 | E3 425 | R90 426 | W4 427 | R180 428 | F69 429 | W3 430 | S2 431 | R180 432 | E3 433 | R270 434 | S4 435 | W2 436 | R90 437 | F69 438 | E3 439 | F44 440 | L90 441 | F87 442 | E4 443 | F21 444 | E1 445 | S2 446 | R90 447 | E5 448 | L90 449 | W5 450 | R90 451 | E1 452 | F66 453 | W4 454 | F51 455 | S3 456 | S4 457 | W3 458 | L90 459 | E1 460 | R90 461 | W1 462 | R180 463 | W1 464 | N1 465 | L180 466 | N3 467 | L180 468 | E2 469 | F14 470 | N2 471 | E5 472 | F95 473 | L270 474 | N4 475 | R90 476 | N1 477 | R90 478 | N1 479 | E4 480 | F90 481 | N3 482 | F35 483 | N5 484 | F74 485 | R90 486 | N3 487 | F64 488 | N1 489 | F28 490 | N2 491 | W2 492 | F7 493 | W4 494 | N2 495 | F37 496 | E3 497 | F100 498 | R90 499 | F36 500 | L90 501 | F41 502 | E1 503 | L90 504 | L90 505 | W1 506 | N3 507 | W2 508 | W3 509 | L90 510 | W5 511 | F100 512 | R90 513 | N2 514 | L180 515 | F7 516 | W2 517 | E2 518 | F77 519 | L180 520 | N2 521 | R180 522 | F60 523 | L90 524 | N5 525 | L90 526 | F72 527 | L270 528 | W1 529 | L180 530 | N5 531 | R90 532 | F54 533 | S3 534 | F70 535 | N1 536 | F72 537 | E4 538 | N5 539 | R90 540 | S1 541 | W1 542 | N3 543 | R90 544 | F45 545 | E4 546 | F32 547 | W5 548 | F78 549 | W3 550 | R90 551 | W4 552 | F58 553 | R90 554 | E5 555 | L90 556 | F3 557 | R90 558 | N1 559 | R90 560 | W1 561 | N4 562 | E1 563 | W3 564 | N5 565 | R90 566 | W5 567 | S3 568 | F25 569 | W4 570 | N3 571 | F55 572 | W2 573 | R90 574 | N1 575 | F98 576 | L90 577 | W3 578 | L270 579 | E1 580 | N3 581 | N2 582 | R90 583 | S1 584 | F39 585 | L90 586 | W2 587 | L90 588 | N3 589 | E3 590 | F80 591 | W1 592 | N1 593 | W4 594 | F25 595 | R90 596 | E3 597 | L180 598 | F21 599 | S4 600 | F75 601 | L90 602 | F76 603 | W5 604 | N4 605 | E2 606 | R90 607 | F44 608 | E3 609 | N1 610 | W3 611 | F49 612 | N2 613 | L180 614 | S4 615 | L90 616 | F55 617 | S4 618 | R90 619 | F14 620 | R90 621 | W5 622 | L90 623 | F85 624 | N2 625 | L90 626 | L90 627 | E3 628 | R90 629 | N3 630 | E4 631 | S5 632 | F75 633 | L90 634 | F60 635 | N2 636 | R180 637 | E2 638 | L90 639 | E2 640 | L180 641 | F27 642 | E4 643 | N4 644 | L90 645 | N2 646 | L180 647 | F91 648 | N4 649 | F47 650 | W2 651 | N2 652 | F63 653 | F63 654 | W4 655 | F28 656 | L90 657 | N1 658 | F57 659 | S1 660 | E2 661 | L90 662 | E5 663 | L180 664 | N3 665 | E4 666 | F70 667 | R90 668 | W5 669 | L90 670 | W1 671 | E3 672 | F18 673 | E3 674 | F15 675 | N1 676 | E4 677 | L90 678 | W1 679 | F49 680 | E3 681 | R90 682 | F61 683 | N3 684 | E2 685 | F69 686 | E1 687 | F7 688 | L90 689 | S1 690 | F73 691 | R90 692 | S5 693 | E2 694 | L90 695 | N1 696 | S4 697 | R180 698 | F8 699 | S1 700 | E5 701 | F44 702 | N1 703 | F39 704 | L90 705 | S1 706 | F83 707 | L90 708 | E4 709 | F59 710 | N4 711 | W2 712 | S3 713 | W2 714 | R90 715 | L270 716 | E4 717 | R90 718 | N5 719 | E4 720 | F22 721 | E1 722 | S3 723 | R90 724 | W5 725 | R270 726 | N1 727 | S4 728 | F39 729 | N4 730 | F78 731 | N4 732 | W3 733 | F34 734 | E5 735 | F31 736 | L90 737 | N3 738 | R180 739 | F75 740 | S2 741 | E1 742 | R180 743 | F89 744 | E5 745 | R180 746 | S1 747 | W3 748 | F97 749 | R180 750 | F54 751 | W2 752 | F6 753 | W5 754 | N3 755 | F58 756 | R90 757 | N2 758 | L180 759 | F2 760 | W3 761 | E3 762 | N3 763 | R180 764 | W1 765 | E3 766 | S3 767 | E2 768 | F87 769 | W5 770 | E3 771 | R90 772 | F63 773 | F30 774 | R90 775 | S3 776 | F69 777 | E2 778 | F87 779 | N1 780 | F95 781 | S4 782 | L90 783 | F52 784 | -------------------------------------------------------------------------------- /13/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | input = 5 | let 6 | lines = lib.splitString "\n" (lib.fileContents ./input); 7 | parseId = c: if c == "x" then null else lib.toInt c; 8 | in { 9 | earliest = lib.toInt (lib.elemAt lines 0); 10 | ids = map parseId (lib.splitString "," (lib.elemAt lines 1)); 11 | }; 12 | 13 | 14 | part1 = 15 | let 16 | ids = lib.filter (i: i != null) input.ids; 17 | mods = map (i: { 18 | id = i; 19 | waitTime = i - lib.mod input.earliest i; 20 | }) ids; 21 | result = lib.head (lib.sort (a: b: a.waitTime < b.waitTime) mods); 22 | in result.id * result.waitTime; 23 | 24 | initial = { 25 | period = lib.head input.ids; 26 | offset = 0; 27 | }; 28 | 29 | # Given a, b, c with 0 <= c < b 30 | # Returns first x that satisfies 31 | # a * x = b * y + c 32 | # Or 33 | # a * x =(modb) c 34 | r = a: b: c: 35 | let 36 | go = x: l: 37 | if l == c then builtins.trace "${toString a} * ${toString x} == ${toString l} == ${toString c} mod ${toString b}" x 38 | else builtins.trace "${toString a} * ${toString x} == ${toString l} != ${toString c} mod ${toString b}" go (x + 1) (lib.mod (l + a) b); 39 | x = go 0 0; 40 | y = (a * x - c) / b; 41 | in builtins.seq (builtins.trace "Computing the first x such that ${toString a} * x == ${toString b} * y + ${toString c}" null) (builtins.trace "Got x = ${toString x} and y = ${toString y}" (a * x)); 42 | 43 | sequenceMatch = seq: match: 44 | let 45 | # Should be lowest common multiple, but we only have primes anyways 46 | newPeriod = seq.period * match.period; 47 | 48 | # seq.period * k + seq.offset = match.period * n + match.offset 49 | # seq.period * k + (seq.offset - match.offset) = match.period * n 50 | # seq.period * k = match.period * n - (seq.offset - match.offset) 51 | # a = seq.period, b = match.period, c = seq.offset - match.offset 52 | 53 | diff = seq.period - seq.offset; 54 | 55 | res = r seq.period match.period (lib.mod (match.offset + diff) match.period); 56 | in { 57 | period = newPeriod; 58 | offset = res - diff; 59 | }; 60 | 61 | inputSequences = lib.filter (s: s.period != null) (lib.imap0 (n: id: { period = id; offset = -n; }) input.ids); 62 | 63 | part2 = (lib.foldl' sequenceMatch initial (lib.tail inputSequences)).offset; 64 | 65 | x = sequenceMatch { period = 17; offset = 0; } { period = 19; offset = -3; }; 66 | 67 | } 68 | -------------------------------------------------------------------------------- /13/input: -------------------------------------------------------------------------------- 1 | 1002460 2 | 29,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,41,x,x,x,x,x,x,x,x,x,601,x,x,x,x,x,x,x,23,x,x,x,x,13,x,x,x,17,x,19,x,x,x,x,x,x,x,x,x,x,x,463,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,37 3 | -------------------------------------------------------------------------------- /14/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | parseLine = line: 5 | let 6 | m = builtins.match "([a-z]+)(\\[([0-9]+)])? = (.*)" line; 7 | in { 8 | mem = { 9 | op = "mem"; 10 | address = lib.toInt (lib.elemAt m 2); 11 | value = lib.toInt (lib.elemAt m 3); 12 | }; 13 | mask = { 14 | op = "mask"; 15 | value = lib.elemAt m 3; 16 | }; 17 | }.${lib.elemAt m 0}; 18 | 19 | input = map parseLine (lib.splitString "\n" (lib.fileContents ./input)); 20 | 21 | initialState = { 22 | # 0 iff mask is 0 or X 23 | mask0 = 0; 24 | # 1 iff mask is 1 or X 25 | mask1 = 0; 26 | 27 | memory = {}; 28 | }; 29 | 30 | parseMask = mask: 31 | let 32 | chars = lib.stringToCharacters mask; 33 | mask0 = lib.foldl' (acc: el: 2 * acc + (if el == "1" then 1 else 0)) 0 chars; 34 | mask1 = lib.foldl' (acc: el: 2 * acc + (if el == "0" then 0 else 1)) 0 chars; 35 | in { 36 | inherit mask0 mask1; 37 | }; 38 | 39 | /* 40 | input 0 1 0 1 0 1 41 | mask0 0 0 0 0 1 1 42 | mask1 0 0 1 1 1 1 43 | want 0 0 0 1 1 1 = mask0 || (input && mask1) 44 | */ 45 | applyMask = mask: input: 46 | lib.bitOr (lib.bitAnd mask.mask1 input) mask.mask0; 47 | 48 | stateTransform1 = state: instr: { 49 | mask = state // parseMask instr.value; 50 | mem = state // { 51 | memory = state.memory // { 52 | ${toString instr.address} = applyMask state instr.value; 53 | }; 54 | }; 55 | }.${instr.op}; 56 | 57 | sum = lib.foldl' builtins.add 0; 58 | 59 | part1 = 60 | let finalState = lib.foldl' stateTransform1 initialState input; 61 | in sum (lib.attrValues finalState.memory); 62 | 63 | 64 | 65 | printBits = n: (lib.foldl' ({ n, r }: _: { n = n / 2; r = (if lib.mod n 2 == 0 then "0" else "1") + r; }) { inherit n; r = ""; } (lib.genList throw 36)).r; 66 | 67 | memoryAddresses = mask: input: 68 | let 69 | /* 70 | input 0 1 0 1 0 1 71 | mask0 0 0 0 0 1 1 72 | mask1 0 0 1 1 1 1 73 | floating 0 0 1 1 0 0 = mask0 xor mask1 74 | base 0 1 0 0 1 1 = (NOT out3) && (input || mask0) 75 | */ 76 | # Has all bits that are floating set to 1 77 | floating = lib.bitXor mask.mask0 mask.mask1; 78 | # The first memory address, where all floating bits are 0 79 | base = lib.bitAnd (lib.bitNot floating) (lib.bitOr input mask.mask0); 80 | 81 | # Iteratively duplicates all addresses if the latest floating bit is 1 82 | result = lib.foldl' ({ floating, addrs, power }: _: 83 | let 84 | f = lib.mod floating 2 == 1; 85 | newAddrs = lib.concatMap (addr: [ addr ] ++ [ (lib.bitOr addr power) ]) addrs; 86 | in { 87 | floating = floating / 2; 88 | addrs = if f then newAddrs else addrs; 89 | power = power * 2; 90 | } 91 | ) { 92 | # The current floating number, shifted one to the right for every iteration 93 | inherit floating; 94 | # The power of the last floating bit, doubled every iteration 95 | power = 1; 96 | # The resulting addreses, starting with the base one 97 | addrs = [ base ]; 98 | } (lib.genList throw 36); 99 | in result.addrs; 100 | 101 | stateTransform2 = state: instr: { 102 | mask = state // parseMask instr.value; 103 | mem = state // { 104 | memory = state.memory // lib.listToAttrs (map (addr: lib.nameValuePair (toString addr) instr.value) (memoryAddresses state instr.address)); 105 | }; 106 | }.${instr.op}; 107 | 108 | part2 = 109 | let finalState = lib.foldl' stateTransform2 initialState input; 110 | in sum (lib.attrValues finalState.memory); 111 | } 112 | -------------------------------------------------------------------------------- /14/input: -------------------------------------------------------------------------------- 1 | mask = X11001110001101XX01111X1001X01101111 2 | mem[32163] = 23587 3 | mem[59015] = 3487205 4 | mem[25831] = 33360 5 | mem[62711] = 224797 6 | mem[41307] = 1818 7 | mask = 1010001X010111X00101X1X101X1X01010X0 8 | mem[45083] = 11122937 9 | mem[3480] = 10 10 | mem[46489] = 4658914 11 | mem[10554] = 14018239 12 | mem[46503] = 702809 13 | mem[40599] = 21908484 14 | mask = 1X0X0111001X1X1000X11X11000110011000 15 | mem[27073] = 1598154 16 | mem[56277] = 895 17 | mem[64440] = 121221812 18 | mem[36973] = 803170 19 | mask = 01X0101101011X110X11XX0111111010X011 20 | mem[56954] = 862350849 21 | mem[56448] = 732 22 | mem[57698] = 10805529 23 | mem[9948] = 743476 24 | mem[54082] = 27464 25 | mem[26950] = 13890763 26 | mask = 1010001101XX11X0X10X000X00001X11X00X 27 | mem[4270] = 361512 28 | mem[8603] = 140991 29 | mem[11543] = 11280669 30 | mem[48952] = 13983 31 | mem[23994] = 160573183 32 | mem[21654] = 16471299 33 | mask = 1X0011X0XX10001000X1011XX1X110X10000 34 | mem[54082] = 204797 35 | mem[2442] = 88978843 36 | mem[43594] = 10538 37 | mem[50284] = 1009918861 38 | mem[44229] = 496323 39 | mem[12926] = 20879 40 | mem[49547] = 4018180 41 | mask = 1010X0X1X10111X0X10X0X0000XX10011110 42 | mem[21387] = 1595920 43 | mem[49543] = 426267846 44 | mem[33458] = 232911215 45 | mem[12713] = 36660 46 | mem[25009] = 1531450 47 | mem[160] = 41645 48 | mem[62607] = 29094926 49 | mask = 10X1X1010011X0100X0X0X10X1X0X0111000 50 | mem[41099] = 556 51 | mem[35924] = 165390 52 | mem[4217] = 95434 53 | mem[29377] = 256242448 54 | mem[65298] = 219301 55 | mem[2150] = 513838120 56 | mask = 101000X1X1X1110011XXX000110001X01000 57 | mem[40639] = 152100 58 | mem[47089] = 234875 59 | mem[21980] = 108670 60 | mem[13822] = 351059 61 | mask = 1X1011110111X11100010X100001X00110XX 62 | mem[48992] = 3047 63 | mem[56444] = 201961239 64 | mem[21371] = 204 65 | mem[24671] = 3709 66 | mask = 101X10010X01111011010101000X0001X010 67 | mem[391] = 1771 68 | mem[9761] = 167201870 69 | mem[26810] = 35048 70 | mask = X1100111X001001110X1XX1X1101X110001X 71 | mem[58134] = 62107560 72 | mem[1977] = 431050 73 | mask = XX1101110001X01XX0110111X11011X0X100 74 | mem[61811] = 3322 75 | mem[45400] = 126787711 76 | mem[11959] = 231430790 77 | mem[6529] = 50711275 78 | mask = 1010011100X110X10X010X011X10X001X101 79 | mem[35664] = 4018 80 | mem[51789] = 1147 81 | mem[9164] = 2673 82 | mem[3887] = 6903395 83 | mask = 1XX01101001XX0X10001X100X10X00011011 84 | mem[45588] = 44392 85 | mem[45672] = 130449 86 | mem[10651] = 199 87 | mem[13830] = 609557 88 | mem[16601] = 9139 89 | mem[39047] = 7390 90 | mem[15735] = 2200 91 | mask = X1100111X0011001001X10010100XX0X1100 92 | mem[47001] = 12904 93 | mem[60088] = 78 94 | mem[16541] = 35014846 95 | mem[36988] = 274445 96 | mem[64869] = 721 97 | mask = 111001101001001X1XX1010011X0111X1000 98 | mem[47089] = 484293694 99 | mem[32833] = 1324010 100 | mem[573] = 621230513 101 | mem[30223] = 4408118 102 | mem[21631] = 108617 103 | mask = 101X0101001XX0XX00011X10101X0111010X 104 | mem[818] = 847 105 | mem[7536] = 12876 106 | mem[61097] = 637 107 | mask = X11X01110X0110X01011011X1011XX000101 108 | mem[1160] = 2769715 109 | mem[11521] = 389 110 | mask = 1X0X1X11X0X110110X011101100111001011 111 | mem[18913] = 2463 112 | mem[60014] = 22803235 113 | mem[37134] = 6832 114 | mem[62311] = 85539171 115 | mem[35150] = 1323288 116 | mem[48099] = 1648075 117 | mask = 10001X11X11110100X0101X01001X0001011 118 | mem[48089] = 20 119 | mem[4229] = 1868 120 | mem[51778] = 69531 121 | mem[6163] = 803954017 122 | mask = 10X000110011X0100XX1110X011001X00000 123 | mem[44294] = 12646 124 | mem[17281] = 484 125 | mem[19939] = 492 126 | mask = 0XX0X11100XX1X1100111110X1100X001100 127 | mem[47104] = 5349940 128 | mem[12968] = 633 129 | mem[27118] = 388686386 130 | mem[22054] = 1418 131 | mem[26460] = 3963 132 | mem[27686] = 324058 133 | mem[8678] = 406066094 134 | mask = X1001X1011X0001000X1X0001101XX111X11 135 | mem[34728] = 4733 136 | mem[19944] = 3955289 137 | mem[73] = 2844 138 | mem[5056] = 3114323 139 | mem[61113] = 3346 140 | mask = 0XX011100001101010X1010X101X11XX1000 141 | mem[13529] = 4870075 142 | mem[32746] = 30227 143 | mem[16882] = 5182 144 | mem[58506] = 3864 145 | mask = 101011X1001X100101X10X01000000001101 146 | mem[16135] = 1425313 147 | mem[59176] = 2841231 148 | mem[26460] = 54607 149 | mem[7136] = 12152 150 | mask = 1010X11X001X10X1000X100X000101X1010X 151 | mem[23809] = 464 152 | mem[41790] = 25173055 153 | mem[19793] = 119 154 | mask = XX00101011000010001100000X11001XX00X 155 | mem[34368] = 338852 156 | mem[1953] = 158 157 | mem[33469] = 240238 158 | mem[26651] = 39001013 159 | mem[52523] = 39414 160 | mem[43956] = 4612 161 | mask = 10110X11XX11101100001010101X00000110 162 | mem[50811] = 5113517 163 | mem[53419] = 58853 164 | mem[23534] = 234 165 | mem[27568] = 164916174 166 | mem[16184] = 967 167 | mem[56977] = 14248978 168 | mem[9076] = 338687637 169 | mask = 100011010010000XX0011001X1X110000100 170 | mem[49329] = 7872 171 | mem[62711] = 917801821 172 | mem[20767] = 9510 173 | mem[41836] = 9669 174 | mask = 011001X000X110110X111X01101X0X1110X0 175 | mem[58112] = 8759 176 | mem[59015] = 249132 177 | mem[2696] = 6617538 178 | mem[4055] = 322572 179 | mem[35039] = 14480645 180 | mem[33920] = 1480 181 | mem[24136] = 1072057057 182 | mask = 101011X1001XX0100001X00001X1001X0000 183 | mem[23619] = 1830 184 | mem[23927] = 29452 185 | mem[64905] = 150741701 186 | mem[60932] = 18507 187 | mask = 10X0011X011X10110X0XX100101X00010X01 188 | mem[54685] = 201370 189 | mem[18104] = 2839230 190 | mem[62384] = 7435156 191 | mem[63305] = 444204 192 | mask = 01101X01X0011011001111XX110X000X0XX1 193 | mem[23354] = 50190934 194 | mem[33372] = 2936904 195 | mem[51383] = 965780683 196 | mask = X11001X1000110X100110X011X101XXX0X00 197 | mem[22184] = 43654247 198 | mem[45672] = 88907038 199 | mask = XXX001110011X0XX1001XX01X01010010010 200 | mem[8280] = 44185 201 | mem[53900] = 276378856 202 | mask = 1010011101X1X0110X01001100X01X1100X1 203 | mem[31239] = 200025883 204 | mem[19233] = 22660998 205 | mem[54966] = 459709 206 | mem[21900] = 128456203 207 | mem[27568] = 45525987 208 | mem[18207] = 1317041 209 | mem[4755] = 1465553 210 | mask = 101XX111X01110X10X01X11100010000110X 211 | mem[9761] = 6212379 212 | mem[6490] = 15160 213 | mem[32338] = 454253 214 | mem[21371] = 528675530 215 | mem[57305] = 149 216 | mask = 111X011110011001001X00110X01X1000001 217 | mem[5685] = 876 218 | mem[38670] = 90390560 219 | mask = 10100111X011X0110001001XX01100001XX0 220 | mem[19086] = 153283033 221 | mem[22316] = 982 222 | mem[9660] = 648 223 | mem[38272] = 7464642 224 | mem[23530] = 1073526128 225 | mask = 1X0011X0101X0010001111000100XX1110X0 226 | mem[61800] = 1612 227 | mem[25746] = 12896802 228 | mem[59222] = 402335 229 | mask = 10110111001110XX010101X11000X101X110 230 | mem[5330] = 38096565 231 | mem[48438] = 3312971 232 | mem[50454] = 213 233 | mem[51532] = 35683154 234 | mem[2857] = 162001059 235 | mask = X110X1X0001110110XX1XX01X00X10111010 236 | mem[35384] = 487 237 | mem[8386] = 4875 238 | mem[818] = 25314 239 | mem[9902] = 809 240 | mask = 01101X1000010010X01100X0X00111000101 241 | mem[11465] = 6937 242 | mem[9166] = 8060 243 | mem[30630] = 88490 244 | mem[35039] = 58041908 245 | mask = 1010X11001011X11010XX0X100X11X110101 246 | mem[31189] = 12546611 247 | mem[61841] = 10859 248 | mem[18402] = 3088 249 | mem[46169] = 298 250 | mem[42469] = 10635847 251 | mask = 111X1101X011X01100X11XX101X00X0X1111 252 | mem[9917] = 2696 253 | mem[8987] = 613809199 254 | mem[29213] = 462633736 255 | mem[3210] = 5696 256 | mask = 100010110111101001010100100XX00010XX 257 | mem[22919] = 1049 258 | mem[32274] = 1304246 259 | mem[50722] = 3730781 260 | mem[25729] = 473131 261 | mem[33167] = 255409 262 | mem[954] = 847404 263 | mask = XX1011X0000100100X11011110110XX01010 264 | mem[64019] = 453 265 | mem[33921] = 68992034 266 | mem[11994] = 5228 267 | mask = 0110XX1000010X101011100X11000XX0X101 268 | mem[35244] = 747081 269 | mem[2508] = 46321 270 | mask = 100011110111101001010110X001X0X00X01 271 | mem[33072] = 189542868 272 | mem[22582] = 495965 273 | mem[40368] = 152283413 274 | mem[12558] = 12822 275 | mem[28400] = 130947363 276 | mem[5692] = 50965428 277 | mask = 1X10X11100010011101111000111X10001X0 278 | mem[52617] = 3163 279 | mem[28750] = 3075 280 | mem[11316] = 18721092 281 | mask = 011X1011X101X11X00X110000X1001111011 282 | mem[36035] = 1783926 283 | mem[18174] = 89261 284 | mem[6538] = 434889 285 | mask = 011011100X011010101101X0111001X0100X 286 | mem[25969] = 10970 287 | mem[2186] = 132591 288 | mask = 10101X0X01111110000111X000010101X01X 289 | mem[7956] = 20198 290 | mem[32632] = 9868915 291 | mem[17009] = 616154170 292 | mem[33337] = 1948 293 | mem[28455] = 314 294 | mem[19300] = 437925314 295 | mem[53760] = 9859 296 | mask = X01X0X11010111X0010110111X1X0011X00X 297 | mem[54194] = 60308 298 | mem[55677] = 10602 299 | mem[47982] = 6803 300 | mask = 1010011XX0X110111101111X11101X1X0000 301 | mem[12226] = 26775502 302 | mem[7654] = 1776936 303 | mem[25032] = 9029 304 | mem[63355] = 2515 305 | mem[44393] = 51402 306 | mem[19754] = 538701 307 | mask = 101001X1001110110011001100XXX0001XX1 308 | mem[17878] = 2952 309 | mem[28744] = 1204082 310 | mem[44294] = 167 311 | mem[54229] = 1360071 312 | mem[58603] = 5499 313 | mask = 1010011100X110X11X011XX01110101110XX 314 | mem[19454] = 484695 315 | mem[51120] = 2797 316 | mem[24926] = 2203 317 | mem[62232] = 2795361 318 | mem[4928] = 135948629 319 | mask = 101011X10111XX1X0001011X0000010XX00X 320 | mem[51586] = 51038500 321 | mem[16550] = 10911116 322 | mem[39368] = 31165 323 | mem[49995] = 2240467 324 | mem[20935] = 58885075 325 | mask = 01X00110X0X1101X10111XX1000011000001 326 | mem[60395] = 14487 327 | mem[45597] = 58180 328 | mem[4169] = 20594 329 | mem[28774] = 3668360 330 | mem[46407] = 161563088 331 | mask = 10101X0101011X000100X0000X0010010110 332 | mem[21371] = 8802 333 | mem[32905] = 123119533 334 | mem[4770] = 106677838 335 | mask = 11X0X10100111011X0010011111000X111X0 336 | mem[43143] = 7717 337 | mem[9164] = 377145 338 | mem[39883] = 57 339 | mask = 1011X101001000100001001X10100X0100X1 340 | mem[43124] = 5241585 341 | mem[22122] = 960211786 342 | mem[31235] = 4256719 343 | mem[32461] = 560355 344 | mem[62468] = 18038 345 | mask = 1010011001X1X0X101X101010000X1010001 346 | mem[48307] = 186177048 347 | mem[11940] = 218581 348 | mem[44812] = 72594882 349 | mem[32461] = 794715 350 | mem[40357] = 142382 351 | mem[9612] = 7990 352 | mem[32943] = 2523 353 | mask = X110X11X0001X01X1011XXX011X011001000 354 | mem[4569] = 390383592 355 | mem[8258] = 223605244 356 | mem[14022] = 27470197 357 | mem[44813] = 1232213 358 | mem[15480] = 364141654 359 | mask = 1X1011X100X100110001X001001010101011 360 | mem[21024] = 32037758 361 | mem[38961] = 4442700 362 | mem[60415] = 478809 363 | mem[9366] = 1425318 364 | mem[18104] = 4027612 365 | mem[48952] = 1698 366 | mem[9164] = 3844 367 | mask = 1X10011X100XX001001XX0110110000X01X1 368 | mem[63362] = 961021193 369 | mem[61648] = 10624 370 | mem[8540] = 1240358 371 | mem[22072] = 180594 372 | mem[45028] = 48614278 373 | mem[51941] = 437953 374 | mask = X010001X011X10100101XX0X011101XX0100 375 | mem[28400] = 20048177 376 | mem[38442] = 42972 377 | mem[19202] = 137 378 | mask = 1110X10X0011001X00110000X00X101X101X 379 | mem[45776] = 29115 380 | mem[46228] = 82002990 381 | mask = 0110011100X1X011101101X10100110X11X0 382 | mem[2178] = 1415 383 | mem[7573] = 59211 384 | mem[63355] = 14666328 385 | mask = 111111011X11001100010X1XX100X000111X 386 | mem[36973] = 251101 387 | mem[45549] = 49149 388 | mem[11185] = 11173 389 | mem[36931] = 9105286 390 | mem[34000] = 191861 391 | mem[4112] = 5803908 392 | mem[46851] = 898742 393 | mask = 101010X10101X10011000X0000000001111X 394 | mem[21952] = 58087941 395 | mem[7811] = 310568 396 | mem[12683] = 7296 397 | mem[40986] = 1593 398 | mem[4484] = 217102381 399 | mask = 111X01X00X011011101111001X0011000010 400 | mem[34000] = 42900698 401 | mem[29787] = 486803 402 | mem[16456] = 314970629 403 | mem[2178] = 127921 404 | mem[5330] = 3477920 405 | mem[41836] = 507753704 406 | mem[19939] = 1233 407 | mask = 10X11X1110X1X011010111X0000101011110 408 | mem[42088] = 43182 409 | mem[55372] = 7107 410 | mem[20352] = 707842 411 | mem[38160] = 4365 412 | mask = 10X101XX1011X0X1X0010101X0010100X011 413 | mem[57996] = 825 414 | mem[9164] = 38731 415 | mem[10590] = 1024 416 | mask = 0110XXXX0X011011001111X11010XX0X1000 417 | mem[43004] = 23865126 418 | mem[26521] = 62786105 419 | mem[58508] = 16251607 420 | mem[44915] = 6296 421 | mem[50928] = 15905704 422 | mem[28304] = 6883261 423 | mask = 10000X1X0111101000010001X01110X0110X 424 | mem[38961] = 892 425 | mem[21387] = 654 426 | mem[40691] = 70505975 427 | mask = 011X10110001101XX0111011111XX0X00000 428 | mem[26664] = 190634 429 | mem[41638] = 58433745 430 | mem[33818] = 31913 431 | mask = 1110110000111X110101000X00X0X010001X 432 | mem[21371] = 827 433 | mem[48330] = 554110094 434 | mem[4159] = 13842042 435 | mem[28294] = 10751539 436 | mem[4122] = 3155 437 | mem[56641] = 143543 438 | mask = 10X0110XX010X0XX0X01010010000001100X 439 | mem[42088] = 28605 440 | mem[26003] = 2052146 441 | mem[2810] = 12539132 442 | mem[19177] = 873302110 443 | mem[45682] = 198549 444 | mem[53419] = 12015 445 | mask = 01101100000X0XX00001X110110000111X00 446 | mem[13216] = 42793 447 | mem[32720] = 1691682 448 | mem[61256] = 2824 449 | mask = 10100111XX111X0X01010001001XX1010101 450 | mem[9076] = 33 451 | mem[35540] = 2369998 452 | mem[56213] = 472 453 | mask = 0X0010X011000010X0111000X10100001001 454 | mem[33599] = 292 455 | mem[48557] = 63 456 | mem[61148] = 84252 457 | mem[21382] = 4805 458 | mem[21707] = 599022397 459 | mask = 0110X1110X01X011101100X0110101000001 460 | mem[2445] = 15421 461 | mem[22230] = 421726 462 | mem[31424] = 179041731 463 | mem[64905] = 287710 464 | mem[46793] = 19157238 465 | mask = 10100110X10X00X10101111X11X10100X101 466 | mem[388] = 231948622 467 | mem[21332] = 55144051 468 | mem[25129] = 24447 469 | mem[2442] = 458 470 | mask = 11101100000X001X000101X01010X1011010 471 | mem[19300] = 1121636 472 | mem[48626] = 4127847 473 | mem[37338] = 2796197 474 | mem[22754] = 385623 475 | mem[3467] = 12303468 476 | mask = X11011X0000X0010X0X100010X00111100X0 477 | mem[20168] = 46314 478 | mem[30633] = 7925538 479 | mem[32746] = 7822 480 | mem[37513] = 22922 481 | mem[9366] = 8809 482 | mask = 11100X1100010011101100X0101000011XX1 483 | mem[21371] = 544068236 484 | mem[65001] = 127152183 485 | mem[9112] = 4281720 486 | mem[33376] = 54760474 487 | mem[27066] = 47706947 488 | mem[10567] = 20664563 489 | mask = 10X00X11X01110010X010X11011001010100 490 | mem[41952] = 16538323 491 | mem[44409] = 127 492 | mem[32732] = 88470340 493 | mem[39136] = 1209 494 | mem[52852] = 4841355 495 | mem[57307] = 18767970 496 | mask = 10100X110X111X100101X1X010010X0000X0 497 | mem[60932] = 43059 498 | mem[38522] = 266295 499 | mem[14489] = 257072 500 | mem[56504] = 4614424 501 | mem[47257] = 103706 502 | mem[51586] = 11495785 503 | mask = 101XXXX100111011000X10100011X101010X 504 | mem[954] = 515172677 505 | mem[53419] = 2673 506 | mem[34982] = 737 507 | mem[4945] = 23383 508 | mask = 001001X1001X111100X110X011X0X0000100 509 | mem[55053] = 1024580 510 | mem[55436] = 18571176 511 | mem[22582] = 1874 512 | mem[39435] = 78890341 513 | mem[31752] = 4058 514 | mem[4134] = 1478 515 | mask = 10X0X1110X11101X0X01X10110X01X001X01 516 | mem[24668] = 15910647 517 | mem[35266] = 766999241 518 | mem[57305] = 145297 519 | mem[7722] = 249220230 520 | mem[11092] = 35301 521 | mem[47089] = 5070 522 | mask = 0110011000011011X011XXX0X0001100X0X0 523 | mem[43956] = 78016 524 | mem[3712] = 87083821 525 | mem[36931] = 3887 526 | mem[50618] = 38029 527 | mask = 101001X0010110110101X11X0X01X101010X 528 | mem[4168] = 66691 529 | mem[51120] = 276061 530 | mem[7259] = 8999648 531 | mask = 11000XX1000X001X1X111010010X00000X0X 532 | mem[26947] = 6243 533 | mem[14746] = 166248 534 | mem[59885] = 723042 535 | mem[45400] = 53392 536 | mem[44876] = 749 537 | mem[59029] = 1815 538 | mask = X0101X010011X01X0001X1100011111011X0 539 | mem[6490] = 1443315 540 | mem[9164] = 900 541 | mem[29237] = 868260102 542 | mem[53419] = 893281 543 | mem[61685] = 1369185 544 | mem[4228] = 739257 545 | mem[45110] = 4469052 546 | mask = 11X0011XX0X100111011100X1X0XX1001001 547 | mem[19944] = 33579152 548 | mem[9221] = 53082 549 | mem[12164] = 85657 550 | mem[18757] = 6173 551 | mem[9612] = 38383098 552 | mem[41658] = 441286882 553 | mask = XX10011100X11011X0X111X1XX1X10011000 554 | mem[15544] = 380788 555 | mem[19086] = 141583 556 | mem[34269] = 9666 557 | mem[22877] = 1051665868 558 | mem[32360] = 7 559 | mask = 1X1011110011X011000X1010X0111X1010X1 560 | mem[13883] = 5817 561 | mem[4217] = 15681 562 | mem[8703] = 171924 563 | -------------------------------------------------------------------------------- /15/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | 3 | lib = import ~/src/nixpkgs/lib; 4 | 5 | #input = [ 16 11 15 0 1 7 ]; 6 | 7 | speak = state: n: /*builtins.trace "[${toString (state.index + 1)}] Speaking ${toString n}"*/ { 8 | last = n; 9 | index = state.index + 1; 10 | log = arr.set state.last state.index state.log; 11 | }; 12 | 13 | arr = import (fetchTarball { 14 | url = "https://github.com/infinisil/fastnixarray/archive/fd6215d4cf1a46d8599233ffb530f748bb3df185.tar.gz"; 15 | sha256 = "0bjcyh56bms2za5gdx701871vha31qd07biz1z0ykh7gwlvlm6ay"; 16 | }); 17 | 18 | initialState = lib.foldl' speak { 19 | log = arr.emptyArray; 20 | last = lib.head input; 21 | index = 1; 22 | } (lib.tail input); 23 | 24 | next = state: 25 | let 26 | value = arr.get state.last state.log; 27 | in if builtins.isNull value then /*builtins.trace "${toString state.last} hasn't been spoken before, so we speak 0"*/ 0 28 | else state.index - value; 29 | #in /*builtins.trace "${toString state.last} has been spoken before at ${toString value}"*/ result; 30 | 31 | iterateUntil = cond: trans: 32 | let 33 | iterateUntilN = n: state: lib.foldl' (state: _: 34 | if cond state then state else trans state 35 | ) state (lib.genList throw n); 36 | 37 | go = n: state: 38 | if cond state then state 39 | else builtins.trace 40 | "Condition not successful yet after ${toString (n - 1)} iterations, going for another ${toString n}" 41 | (go (n * 2) (iterateUntilN n state)); 42 | in go 1; 43 | 44 | # input = [ 3 1 2 ]; 45 | 46 | input = [ 16 11 15 0 1 7 ]; 47 | 48 | p = 10000; 49 | 50 | iterateN = n: trans: initial: 51 | lib.foldl' (acc: i: 52 | if lib.mod i p == 0 then builtins.trace "Progress: ${toString (i / p)}/${toString (n / p)}" (trans acc) 53 | else trans acc 54 | ) initial (lib.genList (i: i) n); 55 | 56 | runFor = n: 57 | let 58 | trans = state: 59 | let 60 | toSpeak = next state; 61 | new = speak state toSpeak; 62 | in builtins.seq new.log new; 63 | #final = iterateUntil (state: state.index >= n) trans initialState; 64 | final = iterateN (n - initialState.index) trans initialState; 65 | in final.last; 66 | 67 | part1 = runFor 2020; 68 | part2 = runFor 30000000; 69 | 70 | 71 | speak2 = state: n: [ n state ]; 72 | # [ 6 [ 3 [ 0 null ] ] ] 73 | 74 | 75 | #next2 = state: 76 | # let 77 | # initial = builtins.elemAt state 0; 78 | # x = iterateUntil (v: builtins.isNull v || builtins.elemAt v 0 == initial) (v: builtins.elemAt v 1) (builtins.elemAt state 1); 79 | # #go = i: state: 80 | # # if builtins.isNull state then 0 81 | # # else if builtins.elemAt state 0 == initial then i 82 | # # else go (i + 1) (builtins.elemAt state 1); 83 | # in go 1 (builtins.elemAt state 1); 84 | 85 | 86 | 87 | initial2 = lib.foldl' (acc: el: [ el acc ]) null input; 88 | 89 | # builtins.compile ? 90 | 91 | #test = next2 initial2; 92 | 93 | #res = 94 | # let 95 | # r = builtins.foldl' (acc: _: let x = next2 acc; in builtins.seq x [ x acc ]) initial2 (lib.genList throw (20200 - lib.length input)); 96 | # in builtins.elemAt r 0; 97 | 98 | 99 | # builtins.withMutable (a: 100 | 101 | /* 102 | 103 | int arr[10000]; 104 | while (...) { 105 | } 106 | 107 | builtins.get :: StateMonad Value 108 | builtins.put :: Value -> StateMonad () 109 | 110 | builtins.bind :: m a -> (a -> m b) -> m b 111 | 112 | builtins.runState 113 | 114 | builtins.mutableArrayLoop 1000 0 (get: set: exit: if get 0 == 10 then exit else set 0 (get 0 + 1)) 115 | builtins.mutableArray 1000 0 (a: if a.get 0 == 10 then a.exit else a.set 1 (a.get 0 + 1)) 116 | 117 | builtins.runMutableArray 1000 0 (arr: do { 118 | arr.set 10 10 119 | r <- arr.get 10 120 | return 10 121 | }); 122 | 123 | builtins.mutableWhile (get: set: exit: if get 0 == true then exit else set 5 true) 100000 0 124 | */ 125 | 126 | mutableArrayLoop = count: init: fun: 127 | let 128 | initial = lib.genList (_: init) count; 129 | in (iterateUntil (v: v.exit) (v: 130 | let 131 | get = lib.elemAt v.arr; 132 | set = i: v: { inherit i v; }; 133 | res = fun get set {}; 134 | newArr = lib.take res.i v.arr ++ [ res.v ] ++ lib.drop (res.i + 1) v.arr; 135 | in rec { 136 | exit = res == {}; 137 | arr = if exit then v.arr else newArr; 138 | } 139 | ) { exit = false; arr = initial; }).arr; 140 | 141 | foo = mutableArrayLoop 10 0 (get: set: exit: if get 5 == 10 then exit else set 5 (get 5 + 1)); 142 | 143 | 144 | } 145 | -------------------------------------------------------------------------------- /2/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | input = lib.splitString "\n" (lib.fileContents ./input); 5 | 6 | parseLine = line: 7 | let 8 | words = lib.splitString " " line; 9 | counts = lib.splitString "-" (lib.elemAt words 0); 10 | in { 11 | low = lib.toInt (lib.elemAt counts 0); 12 | high = lib.toInt (lib.elemAt counts 1); 13 | letter = lib.removeSuffix ":" (lib.elemAt words 1); 14 | pass = lib.elemAt words 2; 15 | }; 16 | 17 | valid1 = { low, high, letter, pass }: 18 | let 19 | count = lib.length (lib.filter (c: c == letter) (lib.stringToCharacters pass)); 20 | in low <= count && count <= high; 21 | 22 | parsedInput = map parseLine input; 23 | 24 | part1 = lib.length (lib.filter valid1 parsedInput); 25 | 26 | valid2 = { low, high, letter, pass }: 27 | let 28 | chars = lib.stringToCharacters pass; 29 | first = lib.elemAt chars (low - 1) == letter; 30 | second = lib.elemAt chars (high - 1) == letter; 31 | in first != second; 32 | 33 | part2 = lib.length (lib.filter valid2 parsedInput); 34 | } 35 | 36 | -------------------------------------------------------------------------------- /2/input: -------------------------------------------------------------------------------- 1 | 14-15 v: vdvvvvvsvvvvvfpv 2 | 3-11 k: kkqkkfkkvkgfknkx 3 | 6-10 j: jjjjjjjjjj 4 | 5-10 s: nskdmzwrmpmhsrzts 5 | 13-15 v: vvvvvvkvvvvjzvv 6 | 11-13 h: hhhhhbhhhhdhhh 7 | 14-15 r: rrrrrrrrzrrrrrtl 8 | 2-9 c: llhctjgbz 9 | 13-15 s: ssssxssssssssjs 10 | 6-8 c: lccccqcc 11 | 8-9 n: nnnnnmnch 12 | 4-5 n: jnnnmmpxngbrknzb 13 | 4-7 n: knlnqnnndnn 14 | 13-18 g: ggggggggnggggggggggp 15 | 5-6 m: mmmmgm 16 | 5-10 l: lvlllglllpll 17 | 7-12 z: pszgzqzzzzkw 18 | 1-2 j: pjjqw 19 | 15-16 n: nnnnnnnnnnnnnnpn 20 | 8-14 z: mzzzjzzzzhzzzztznzz 21 | 5-19 q: rnsdfgkqlqjdvrmtsqqh 22 | 1-5 f: ffffff 23 | 4-5 h: hhhhh 24 | 1-7 g: cglgjgflgggxv 25 | 2-3 g: gggpg 26 | 2-8 m: gbsmqmmmsmh 27 | 1-2 j: jjhkmqr 28 | 10-12 s: sssstsstpsssssp 29 | 9-15 k: tkbkkknkcnkgwkfkkkpk 30 | 6-7 m: mmmmmmmm 31 | 6-7 s: lsspssss 32 | 9-13 k: kkgjrvkkkkkkmkkkkzd 33 | 3-5 m: lbmmmzpwm 34 | 2-12 x: xxgwxxtbttcxzmlfwx 35 | 10-13 k: kkkkvkkkkkgkwkzkkkk 36 | 10-12 t: ttdftttttrtqt 37 | 4-8 z: zbzzzzzz 38 | 8-11 g: gctgdgwtspgg 39 | 2-5 l: lllvl 40 | 4-5 f: fwdspfmtts 41 | 5-8 z: zzhzmzzdzzz 42 | 11-12 x: xxxxwxxxxxxx 43 | 17-18 h: hhhhhhhhhhhhhhhhqm 44 | 9-14 j: jtkjwxjgjjjjjzjq 45 | 5-6 p: ddgdbkpdsd 46 | 2-5 c: xczcczc 47 | 6-15 t: ttgjktpwqthftfrt 48 | 13-16 t: tttttttttttttttq 49 | 9-11 t: tgttttttftttc 50 | 4-9 z: zzmzzzzzzzzzc 51 | 5-8 d: sddtvddb 52 | 5-6 l: llllpd 53 | 15-16 s: sssssssssssssssb 54 | 14-16 p: ppppppppppppppph 55 | 2-10 r: mjnczrrnlnv 56 | 9-10 s: ssspsssssrd 57 | 3-5 d: dddddq 58 | 2-3 v: llfv 59 | 7-12 n: dnnnlnbnnnncn 60 | 5-6 g: gsgggg 61 | 5-9 t: tltbtttttt 62 | 1-20 r: rtqtcmmgzfqmxtxqhdrn 63 | 2-6 l: hlkkll 64 | 4-6 c: cwccccc 65 | 3-4 c: gcrdcz 66 | 1-8 v: vvlvdgpvg 67 | 6-17 g: gjccgdglgzgtcggdx 68 | 1-17 l: nlczbmbrwcvgtjmcvcq 69 | 5-11 z: nzppckcknfwllzzzrpp 70 | 6-11 s: smsdjvsssss 71 | 3-4 t: cttt 72 | 1-4 q: tbcq 73 | 2-4 m: jmmmmm 74 | 2-8 h: hhhhhhhm 75 | 9-11 h: phrhhhvhchqhmhh 76 | 6-9 v: vvvvvmvvrvvvvv 77 | 1-2 f: nxfgjfffp 78 | 5-8 w: wwwwtnckwd 79 | 6-12 x: xxnxscxkxxtf 80 | 8-11 l: lllllllllstmllllll 81 | 9-11 p: ppppppppvtfpp 82 | 5-17 f: ffvwffpkfjffbtlfnftl 83 | 2-6 b: gbbgbbbbrbxk 84 | 8-9 t: trtftttttt 85 | 13-17 r: rrgrrvrrrrrbrrzrqr 86 | 10-11 k: kkkkkkrkkkk 87 | 9-11 c: cccccccccncc 88 | 2-5 j: jdfwzrjjtjt 89 | 10-13 r: zrrprxhrrxzmmrbr 90 | 8-13 s: sssjsssgssssbs 91 | 5-6 b: bbbhhkh 92 | 8-9 z: fzrzzzzxgfz 93 | 7-9 l: bllllmllhl 94 | 5-11 g: mqbfgrlgxfgcgggjdstc 95 | 4-11 m: mmmgmmmmmmmxms 96 | 14-17 p: lpppppppppzpppppp 97 | 7-9 d: ddddddddd 98 | 14-15 n: nnnnnnnnnnnnntz 99 | 8-17 n: nnnbgzqbnndnzfsnmsmj 100 | 12-15 l: lllkqllwdxlllvl 101 | 3-11 t: lpdztztgmdwtztj 102 | 2-5 m: rslsm 103 | 5-11 c: ckptcgwqshct 104 | 3-4 v: vvvdv 105 | 4-8 d: dddrhddhddd 106 | 2-5 n: brnnnnn 107 | 1-4 p: qtpp 108 | 5-7 l: lxblllflwl 109 | 16-17 t: ttttttttttttttthm 110 | 5-18 h: hhhthhhhhhhhhhhhhh 111 | 9-17 j: jjjjjjjjbnjjjjjjjjj 112 | 6-7 g: gfggnggrgg 113 | 4-6 n: nnnnwq 114 | 8-9 z: zzzczxzpwzlzdcsz 115 | 7-10 w: wwswwwvwwtwww 116 | 6-8 w: whwwwwlww 117 | 2-14 c: cpccccccrccccck 118 | 1-3 t: bqtbfdrdltn 119 | 3-8 w: qwjhwrnjwsb 120 | 2-4 g: gghg 121 | 2-11 d: htdtljjxrnddxbdnfkwf 122 | 12-14 b: bgbglrlpckgsxbjvqm 123 | 9-14 q: qqgvqqqqqqmqqq 124 | 2-16 m: mbmmmmmmhmmmmmzsbm 125 | 11-12 n: nnxnnnnnnnnn 126 | 6-12 r: rbrfbrnrrrprrczrqr 127 | 1-3 n: nmnqtz 128 | 17-18 h: hhhhhhhhhhhhhhhhfs 129 | 11-13 k: rkmkwrknzfkkm 130 | 2-3 w: bwwwwz 131 | 8-12 s: mssssssssssc 132 | 8-10 f: vzpcxfdfvqjpdkdh 133 | 1-2 b: kbbx 134 | 2-11 d: gqddddcdddf 135 | 3-9 z: lzzqztpzzlzlz 136 | 8-12 k: gkkfkkkmpkkkkktk 137 | 1-4 l: lsqm 138 | 9-11 m: mmzmmmmmmmv 139 | 16-18 f: fffchfffffffffffffw 140 | 7-8 v: wfhbqvxrvqpqvv 141 | 15-16 v: vvvvvvvvvvvvvvtvv 142 | 1-8 c: scwcrqclccccc 143 | 12-15 d: bpdvrddgdtfdgdd 144 | 2-4 k: gkkk 145 | 14-15 x: lxsxljxfxwxxjcwnxxv 146 | 6-7 p: hjxqnppmknskpb 147 | 7-13 b: bbbbbbcblbbbbbvb 148 | 7-9 j: gjjjpjjjhvqj 149 | 3-6 n: nnnnnnn 150 | 7-12 h: wxlhhhbjhhhhxhm 151 | 3-5 t: ttttt 152 | 3-4 n: ntnn 153 | 8-16 b: bhrjmbbbsbbbfbbbpbb 154 | 4-10 p: npsjlpppzgncww 155 | 4-6 p: pvpfxqp 156 | 1-2 f: fvxjf 157 | 3-6 t: trnktdttt 158 | 3-5 v: vvvvvmd 159 | 3-6 z: bzmdfpbwckf 160 | 3-4 h: hhhh 161 | 2-4 x: tshbsbxlkpgs 162 | 1-4 p: ppppbppppppppppp 163 | 2-4 c: cccwc 164 | 6-11 w: sbwwwwwqwmkw 165 | 1-2 f: bxff 166 | 3-8 h: rshhnqkvhh 167 | 2-4 l: lpllll 168 | 9-13 m: ltlmvcnnmmgtm 169 | 4-5 j: szjjjmjb 170 | 6-11 h: hkhdhkhhhhh 171 | 1-4 v: vvlq 172 | 16-17 b: pbdnsbbxbxgbdcqcr 173 | 1-18 n: nnnnnmbnnnnnnnnnnn 174 | 7-12 p: ppwtxzpvpppf 175 | 4-5 r: rrrrr 176 | 13-14 s: sgmdvqpxqqtstgspskf 177 | 4-7 h: hhhwchwh 178 | 7-18 d: ddlddddhjhbdddjdddd 179 | 4-6 l: llllll 180 | 15-16 n: nnnnnnnnnnnnnnzn 181 | 11-16 p: pppdplppppgpppmppppt 182 | 4-5 w: fwzbn 183 | 1-3 p: sjpfb 184 | 3-4 b: bbgbb 185 | 2-13 n: pdnnjnnnnnnnnnn 186 | 6-11 w: wwwkwdwwvcmwg 187 | 1-6 t: dhtmfk 188 | 4-7 d: wgrtpqldqldl 189 | 2-15 z: zjzzzzzzgzzzzjzpzh 190 | 1-6 h: hshhch 191 | 1-2 n: kdnnnnnqnnnnn 192 | 6-8 m: mdfjcclk 193 | 7-19 d: ddwdddddfnddddddddj 194 | 12-15 q: snqnppbsfjzvkxgkfc 195 | 6-7 n: nnnnnnn 196 | 3-4 x: xxghmxsz 197 | 5-6 t: tttgtsjts 198 | 3-5 f: mftfffcgwc 199 | 12-13 w: wpwwwwwwwwwzw 200 | 3-7 m: mmmmmmmmm 201 | 15-18 x: xxxtxxwdvxxxxxxxxkxs 202 | 4-5 w: wnpwwzw 203 | 17-19 n: nnnnnnnnnnnnqnnnndn 204 | 7-8 d: ddddddrf 205 | 9-11 t: ttqtttthttxttt 206 | 1-4 c: gccbr 207 | 5-11 w: wwwwtwmwwwwlw 208 | 6-8 v: vvmwvhvxvgsvftv 209 | 2-11 s: lkvssdschmsgqbbws 210 | 3-7 k: kmkxkckvg 211 | 3-10 l: llxllllllglrllhl 212 | 1-3 b: gbbb 213 | 18-19 v: vvvsvvvvvvvvvvvvvvv 214 | 8-9 d: tzddvdddddd 215 | 2-4 t: tgtbpcv 216 | 1-3 r: hrzrt 217 | 2-4 f: ffqq 218 | 5-6 c: cccjzh 219 | 3-4 j: jjln 220 | 6-8 l: lllllllllll 221 | 9-10 n: nnnnnnnnfr 222 | 8-9 x: xxxxxxxvcx 223 | 5-10 w: wpwwwbwwww 224 | 14-15 p: pppppppppppdphrppp 225 | 9-19 h: whhcthhxhhhhhhghjtwz 226 | 9-13 z: zzzzzpzzzhtzvnzzzzz 227 | 11-13 l: llllllllzlqql 228 | 6-11 b: bhlwpmbbbjzbcxwzmtc 229 | 2-3 q: fqqhfqr 230 | 12-14 m: mmmmdmmmmmmmsm 231 | 1-3 t: gggctqtfpxtrt 232 | 2-3 k: kbkk 233 | 11-14 d: dddddcdddfddddd 234 | 8-19 n: pnnnjnnnwgnnnnsnnnd 235 | 9-10 r: rrtrrrvrqrrrpr 236 | 4-12 k: kxskkkckkkzkz 237 | 1-10 h: tjvhhphpzhjrlhhht 238 | 8-9 c: pkcccccmc 239 | 3-5 h: slwlgwnhcxxdhk 240 | 1-8 l: cllllllqll 241 | 3-4 q: wzqthkjvqct 242 | 4-6 d: ddddddddddd 243 | 2-6 q: qqqbxm 244 | 6-9 b: bbbbbbqbsw 245 | 3-6 c: ccwkpdjccfvc 246 | 9-10 r: rrrrtrrrrr 247 | 1-5 d: phzdmtzshlz 248 | 5-7 q: fqqqqqrqq 249 | 4-5 v: vvvvr 250 | 3-5 k: kkgkk 251 | 3-7 h: wxhgkfhhhqnhdfhg 252 | 5-7 m: mmmwmmmmm 253 | 1-3 z: qsvrzwnxzvl 254 | 7-12 x: tpzblhzfdmxqqmmjfwq 255 | 9-12 m: mmmqmmmmmdmmmm 256 | 15-18 t: ttttttttttttttthtt 257 | 2-12 b: tblhkbgnbbfqvd 258 | 2-3 m: rmqv 259 | 8-17 m: jmcndnqmdjdtqnbvmpn 260 | 5-14 l: lxlfvjnbllllmlllllsb 261 | 4-5 r: rtlmrxxrrnrt 262 | 6-7 k: kkksmkg 263 | 16-19 q: bkwfqstbmqqhzqvqvcqd 264 | 12-13 l: lllllllllllpll 265 | 2-9 m: zgxdbmzrmbbdbw 266 | 7-9 d: bdddddzdk 267 | 18-19 g: wfwggwhxrnnspmvgjrg 268 | 17-18 w: wwwwwwwwwwwwwwwwwwww 269 | 2-6 z: kzzzfzbh 270 | 3-4 c: pcqk 271 | 5-6 t: tthtpx 272 | 10-13 x: xxxxxxxtdtkxqxqxxxx 273 | 1-2 b: qbwd 274 | 13-19 l: llhxsxlllllpllllllfl 275 | 14-15 n: nnnnmnnnnnnnnnqn 276 | 6-7 m: mjmhsdmmm 277 | 3-5 r: qqshck 278 | 8-15 c: clbcccrccscccpcwcc 279 | 9-12 k: kkcwkklkkkcnkkxkk 280 | 4-5 v: vvvppvv 281 | 2-8 t: dxtgttjj 282 | 1-8 r: tqrlhfzk 283 | 8-9 n: zhmtnfsrr 284 | 10-15 d: ddddmldddzddgnk 285 | 13-17 z: jzpzzzzzzzvwnzzbz 286 | 1-5 d: ddkdd 287 | 4-6 x: xsxgbf 288 | 3-8 k: wkckkkcw 289 | 5-7 r: ndprnrxrrrbzrpnrz 290 | 4-6 n: nnnnnnn 291 | 7-8 q: qbmxfhqqqqmhqqq 292 | 9-10 k: swgkcrkdkkjfmkkkjl 293 | 6-8 s: kzqbsxrchhvvfvkqhz 294 | 3-4 h: hmgh 295 | 10-11 b: bsbfbkbwbhh 296 | 9-13 z: nnzzbvzzrzkjnbzqfzzp 297 | 1-11 x: xsxnqgjsqzxxnxd 298 | 12-13 m: mmmmmmmmmmmvm 299 | 11-20 n: vjsnfnnsgnnnmnnnnnwn 300 | 4-11 q: qqqhqnpqbnrqhpd 301 | 10-16 s: hszrsssktsspdtsrssss 302 | 1-4 m: ldmhj 303 | 3-14 l: llxjlmllflzdbll 304 | 11-17 m: mmmmmmmmmmmmmmpmmmm 305 | 1-7 c: jcccccl 306 | 15-16 x: xjxxxxxxxxxxxxxxx 307 | 5-7 v: cvtvcvv 308 | 7-12 p: npppqpgptpjkjpdp 309 | 12-16 c: cwvmnknsbccvccrckqcf 310 | 5-13 v: vrvvvjvvpvvvwvbv 311 | 2-14 l: bkllllllllllldlllk 312 | 4-6 x: qxxxpxs 313 | 9-11 s: sbssssssssm 314 | 7-8 q: vgctvvqq 315 | 3-8 g: ggtgggggggg 316 | 5-6 b: pbbctbbbvnbjbbb 317 | 1-2 w: jwww 318 | 12-14 z: zszzzzznzzztzz 319 | 2-3 j: fnmgcjbjt 320 | 4-9 c: cccphccccpthcwwc 321 | 5-12 g: ggsgxggggsgqggggg 322 | 4-5 v: vvvvvv 323 | 8-17 q: hdhtqlwpzqqqqqpqqhq 324 | 9-15 s: sschdsssnvssvss 325 | 7-8 d: sdhkdtpcdwgddtdd 326 | 1-2 d: ddjdd 327 | 5-9 b: zbzbbbklzbbb 328 | 9-10 g: gggggggggg 329 | 2-4 t: kttt 330 | 6-13 t: pttsttttttttzt 331 | 16-17 h: hhhhhhhhmhhhhhhtdhh 332 | 4-10 r: rmpldrbrqcfqrkhbnqc 333 | 6-14 z: zjzcpzzxzzzctzjz 334 | 6-17 v: hsfctvxwpgsvfnfxwncq 335 | 14-16 p: ppppppppppppplpppppp 336 | 15-18 l: lllllslllllllgnllf 337 | 7-15 v: vvvvvvfpvnvvsvvgvv 338 | 3-4 x: xxsx 339 | 8-13 z: zzwzzrzzzzzqqz 340 | 7-8 r: hrsrrrrzrb 341 | 3-4 b: bzfg 342 | 5-7 h: dhhthhhhr 343 | 1-4 v: vcvv 344 | 5-6 k: pkkkqkkk 345 | 13-20 j: jjjjjsjjjjjjjjjjjjjj 346 | 3-6 p: pgtpptpxptvc 347 | 1-3 v: tvvvv 348 | 6-15 b: mbbbbbbbbbbbbkbb 349 | 11-15 q: qmqqqqqhqqqqqqqqdqcs 350 | 2-6 g: dggggr 351 | 1-4 j: jjldsjjhfg 352 | 2-4 h: vhkwhhnhbhx 353 | 3-5 z: zzzzzz 354 | 2-4 s: stmw 355 | 12-13 k: wkbcmmkhpklkdnnkdvk 356 | 19-20 b: bbbbbbbbbbbbbbbbbbbj 357 | 6-9 w: vwwwtcpwwgw 358 | 3-5 j: jbsjpjj 359 | 10-13 c: cdccqpccccccc 360 | 7-9 q: qpqqqqqqw 361 | 15-16 p: ppppppppppppppbd 362 | 6-13 n: nnnnnqnnnnndknnnnnn 363 | 11-14 t: ttttqtttttjtttt 364 | 4-6 t: tttltz 365 | 3-5 n: nnnrj 366 | 2-13 h: hhhhhhshhmhlkh 367 | 1-6 x: xxxxxcxxxx 368 | 4-7 v: ddswdvq 369 | 3-5 d: xjksdvdddddwcrqzj 370 | 6-7 x: xxxxxfxx 371 | 3-6 b: bbqbbll 372 | 9-12 p: pppppppplppj 373 | 12-13 w: wwwwwwwwwwwwzww 374 | 5-11 q: qztqqwvldnm 375 | 1-4 m: qmmj 376 | 3-7 l: llpllwllt 377 | 2-8 h: hmhhhhhrsfhh 378 | 8-10 g: gggggggqgv 379 | 5-7 g: pggzgggggggb 380 | 4-7 v: gvvxvrv 381 | 3-4 l: llkf 382 | 2-6 q: wqzpqqvdhhjlhkhmwtft 383 | 2-3 n: nnnrd 384 | 1-5 h: kfqqk 385 | 7-12 z: qczzzzdlclzzdpfgzzz 386 | 2-4 m: vrjmnqrmrmvm 387 | 4-6 h: hhhbkhpghh 388 | 5-7 z: zzzzgwbz 389 | 5-7 d: ddddkfdbdnd 390 | 8-10 q: qqxqqgtxqwqg 391 | 5-14 b: bbbbzbbrbbrbbnbbbbbb 392 | 8-10 z: vzzpzkzzgzzzzz 393 | 8-9 w: wwwwwwwwb 394 | 5-11 d: ddqdhddgddddd 395 | 2-9 h: fhhhhhhhhhh 396 | 7-12 b: bbjbbwxbcwbbnb 397 | 1-3 m: tmmdmmmm 398 | 2-3 b: bqtnkbjhlrvz 399 | 2-9 z: nzrbzzrzlzzzvzt 400 | 2-4 v: vvmv 401 | 9-10 q: fccjqpwhqqq 402 | 2-12 q: qqqqqfqqqqqqvqqq 403 | 1-4 c: cxnc 404 | 5-6 q: qqzhqqzqqqj 405 | 2-3 k: vkkk 406 | 8-9 n: nnmnnnxnnnnnqtwp 407 | 2-3 b: jrbzvcb 408 | 4-5 w: wwlnk 409 | 4-15 d: wdpddddmdddddddddd 410 | 10-14 d: dddqdxfddjbfddd 411 | 5-6 t: pttttmttp 412 | 3-4 b: bbgdbbb 413 | 5-6 b: rgtqbbb 414 | 7-14 b: pwpbbhbvbzxfbbb 415 | 6-10 p: zppvhbpmcpwpprp 416 | 1-15 p: bpfdpppxxmkppppmg 417 | 9-14 w: hmlxdbdcqmxxhw 418 | 1-9 t: zrqqtdbwpqdd 419 | 4-6 n: knrnlnznn 420 | 4-9 l: gclwdmllglblnlzn 421 | 5-7 c: ckccbvvgtlc 422 | 8-11 p: ppppppppxpp 423 | 13-14 w: wwwwwwwwwwwdwh 424 | 17-18 k: kkkkkkkkkkkkkkkkkk 425 | 7-11 c: qccmcnccccc 426 | 2-7 m: vmbnrmmngtqkjlmmt 427 | 9-12 m: mtmmmmmmmxnr 428 | 8-12 j: rjjdjvdjjfhj 429 | 14-16 h: hhlhwhhhhhhhhgbhh 430 | 10-12 w: dxwwwwlwwwwkwlwpwdl 431 | 1-3 w: wmwcwrfbpwtzwf 432 | 1-6 j: bjjjjjjj 433 | 8-13 f: ffffffffffffgf 434 | 1-6 g: lghdgt 435 | 6-8 s: sssslsfb 436 | 16-17 c: cccccccccnmcccmkc 437 | 3-4 z: zmzz 438 | 8-11 c: cccccccdcccc 439 | 8-15 p: lcnvhbjldhfsgwfvtbp 440 | 3-4 q: qqqq 441 | 5-7 b: bcpqbdq 442 | 1-4 t: ttttttttttttdtttt 443 | 3-14 v: cvlrwvzvjkdbdd 444 | 4-8 l: fcdhlwwl 445 | 4-5 m: mmmmpm 446 | 3-4 h: hhqlhl 447 | 5-6 r: mrrrqrr 448 | 4-5 c: cvccc 449 | 11-15 p: pppppppshpjpppszppp 450 | 6-8 j: fjzbjjjjvkjj 451 | 3-7 q: qqsqqqqq 452 | 1-16 p: jpppqppppppvppdwp 453 | 2-5 g: jgwlxzgbhpmqp 454 | 5-6 p: pppppplppp 455 | 7-18 r: wmbbsjrmmzzdlxbwcfhp 456 | 1-4 w: wvwqn 457 | 6-7 p: pppppcmp 458 | 15-16 h: zhhhhhhhhhhhhhhhhh 459 | 2-16 h: hrhhhhlthhwhqjhht 460 | 14-17 k: kkkkkdkkkkxkkskkxkk 461 | 15-16 d: dddddddddddddddf 462 | 2-17 v: vwvvvvvvvvvbvvmvvr 463 | 7-8 v: vvvvvvtd 464 | 1-4 f: lftr 465 | 2-4 h: hhrq 466 | 10-15 s: qsnnssxsvtfssdssss 467 | 16-17 n: nnnnnnnnnnnnnnnnn 468 | 1-4 r: bldfswjgvrsf 469 | 10-11 n: lnxknqwlnnxc 470 | 9-14 k: tjxclnrddxnpmg 471 | 3-10 v: tvvvqmvsvcvsc 472 | 3-4 v: vnxrv 473 | 1-6 k: kkgkdkmj 474 | 3-4 h: jhbrh 475 | 8-9 c: ctczkccknntcccrc 476 | 13-14 t: ttsttdtcttttttj 477 | 1-9 b: bfwjbbxbd 478 | 9-10 m: xmdvtsbmgg 479 | 5-6 w: wwwwww 480 | 2-6 l: djlwlwkl 481 | 5-6 h: hhvjtrkhh 482 | 3-5 b: bsbbl 483 | 5-7 p: vxpwppsppp 484 | 2-4 d: zbnddd 485 | 3-4 s: msjss 486 | 4-7 l: llqllll 487 | 6-18 w: wwwwwwwwwwwwwwwwwlw 488 | 13-14 h: hqnlxqhfwlvhhh 489 | 7-9 p: ppppppcphpp 490 | 5-8 x: bjfxkbqxpzxhxwvxx 491 | 4-5 h: hhhpphgh 492 | 4-5 c: sczcccccc 493 | 4-10 n: nnfnnnsdgnnsj 494 | 5-6 j: jwjjmjj 495 | 1-9 c: hcrlmrcdjwhqn 496 | 3-5 x: xxjxvx 497 | 7-13 x: xxvxxblxxnxxlx 498 | 3-6 w: wwjwwwf 499 | 14-18 m: mnmmmmmmmmmmmmjmmmm 500 | 3-5 t: tslttjqvnb 501 | 1-2 v: sfkvhj 502 | 2-4 c: ccctc 503 | 5-10 r: rrqptljvxtkrwsfdbr 504 | 3-4 q: qbwqngvm 505 | 1-4 t: nttnt 506 | 8-10 f: fqmfrffftv 507 | 6-7 h: hkhhhhhv 508 | 9-17 f: hfzhbmrxsfwfxdffh 509 | 1-10 t: tthttgtgtgttctt 510 | 2-3 b: tlbsbcxzbfplpjlsvncg 511 | 8-16 t: tdtttttpttttttttttt 512 | 8-16 k: jkkmzlkkgvkkkwtj 513 | 13-16 v: vvvvvvvnvvdvhvvw 514 | 7-9 v: vvvvxvhlqvzmc 515 | 4-6 l: gdjscq 516 | 9-17 f: fffffqffsfffffffhff 517 | 4-5 g: ggggb 518 | 2-4 w: wnmh 519 | 7-8 g: ggjgrqfgg 520 | 11-13 k: rrkgxzkkqnljs 521 | 11-15 v: vsvvvqvvvvwvvjcvvv 522 | 13-15 c: ccccccccccccccvccc 523 | 1-6 n: jpmcnjdbdn 524 | 3-4 v: xvlffppmgzwvv 525 | 6-12 j: jjjjjslsjbpj 526 | 10-11 l: lrhljlqllldblll 527 | 8-11 h: hdhghhczmxhhhhhw 528 | 2-3 z: ztnt 529 | 6-8 x: jxxxxqxmm 530 | 2-6 n: nwnnntnnjt 531 | 8-13 z: ztzzzzzbzzzzq 532 | 4-13 v: vxvvvxvmvvvvvvhvv 533 | 11-13 t: ntttftttxtstttwt 534 | 5-6 d: dddznd 535 | 10-15 t: trxttttttbbstttt 536 | 2-4 t: tblp 537 | 8-11 l: xllllllwlldl 538 | 12-13 m: mmsmmmmmmmmvcm 539 | 3-4 t: tthb 540 | 10-12 c: cpsclccmccctccc 541 | 11-12 k: pkkkrkkkkqkfkk 542 | 11-13 v: vvbvvlvvvvvvt 543 | 6-11 p: xkxfdpkkrdpb 544 | 13-14 h: hhqskrdhrhphbb 545 | 2-6 r: rdrrrr 546 | 1-4 p: nppg 547 | 5-6 h: hgpbhh 548 | 4-5 l: mrgzlxlchgjgwrlmvxl 549 | 6-11 b: bbbbbbbbbbbbb 550 | 2-5 s: svsvss 551 | 10-18 j: jjjdjjjjzjfjjjjjbj 552 | 1-14 p: tjphtjfnbhhgrmzdp 553 | 2-4 v: vvvv 554 | 5-7 q: vqvnbqdqhwqxqv 555 | 6-7 m: mmmmmlj 556 | 9-10 g: ggggggggggg 557 | 7-13 n: sqnjnnrnnfnnn 558 | 2-4 f: fbrfkhfkfcgjfp 559 | 2-3 b: wfwjlbx 560 | 16-17 r: rrrrrrrrrdrrrrrrr 561 | 3-7 b: vkksbzbbhpwb 562 | 2-4 m: fmcr 563 | 9-20 v: vfvvxnvvdwhvxvvvqlvj 564 | 6-9 b: jgjrcbnftrlbhp 565 | 4-9 x: hrqtpwzjxxx 566 | 7-9 h: hhhhhxnhdh 567 | 7-8 k: kkkkrtsphkk 568 | 6-7 n: jnnnblnnj 569 | 10-15 d: dddddddddkddddt 570 | 2-8 p: npbdhcgpl 571 | 9-10 x: xqxxxxxzxvx 572 | 5-9 k: khtkkwkkxqm 573 | 1-5 t: stttttttgttttt 574 | 5-13 w: wwhfjkshrwfpnlwjjmq 575 | 4-9 x: rzfrxzcxvxxx 576 | 3-4 g: hgfgg 577 | 2-3 n: nnnn 578 | 11-14 j: jjjjjjjjjjjjjj 579 | 9-10 m: mmmmmmmmmm 580 | 7-8 m: mmmmzmkmjhhwzmmwp 581 | 2-5 r: rrzrr 582 | 3-4 w: vnwpww 583 | 5-9 h: hzhhhhhjgmswvbxfr 584 | 6-10 h: cvhhhlhhhz 585 | 4-5 g: xxgggzg 586 | 1-2 d: dddcf 587 | 5-8 v: vvvvvvvpxv 588 | 7-9 b: bbkbjbpsbbbbtkblmr 589 | 6-8 f: fffffmfgfff 590 | 2-8 f: zfskzfjjwfjsf 591 | 4-5 v: lvdvdvv 592 | 4-5 p: ppbkrjp 593 | 6-14 z: zzzzzrzzzzzzzhzzw 594 | 5-7 g: cbbfngwggzs 595 | 2-4 n: nfpnnhnkpgmjdgc 596 | 11-14 h: hhhqchbhhhwhhhqjjhhn 597 | 5-7 q: qqqqqqq 598 | 2-3 s: sssjs 599 | 11-17 w: wwwxwwwwwwhwwwwwrwww 600 | 12-13 n: nnhtsnxqndxnlnnn 601 | 8-10 j: jjjjjjjhjj 602 | 15-16 z: zzzzzzzzzzzzzzzg 603 | 2-5 j: jfjpk 604 | 1-10 z: mzfzzzzzzpzzz 605 | 13-15 v: vcvvrvdvvvvvvvvvvv 606 | 11-12 j: jljjljqjvjmhjjj 607 | 1-7 c: cctccvv 608 | 6-17 s: slqssbsswsssszswsss 609 | 16-17 s: klksgsgtpsnrpslzs 610 | 12-13 m: mmmmmmmmmxmmfm 611 | 18-20 v: vvvvvvrvvvvvvvvvvlvs 612 | 18-19 d: ddddddddddddddddddv 613 | 4-5 p: srsjp 614 | 2-5 d: czvdk 615 | 5-11 w: pwgbslprbkk 616 | 15-16 b: bbbbbbbbbbjbbbbqnb 617 | 7-8 h: hhhhhwxt 618 | 11-12 g: ggggggggtqggg 619 | 10-11 m: mmmmmmmmmfk 620 | 4-6 m: qvlmmbmmmdrmpcqmmfq 621 | 1-10 r: xrrrrdrrrnrvzrrrrmrr 622 | 5-9 p: pljpvppkgc 623 | 13-14 j: jjjjjjjqjjjjwv 624 | 6-8 g: gggggggqg 625 | 2-7 b: bbkkdwb 626 | 3-16 q: fqqqqlqqqqqqqqqhqqqh 627 | 3-5 x: xfjxv 628 | 1-2 h: hhtkkpvhk 629 | 1-13 d: dddddddddddddddddd 630 | 7-8 x: kxxvngmqxcrqsxxlx 631 | 1-4 m: zvmr 632 | 1-11 n: wnfnnnsnftrnnfn 633 | 6-13 h: gcrjcphhhhpgh 634 | 1-4 h: jghv 635 | 7-10 m: mvtqpjmvvmvgp 636 | 4-7 j: pjjhjjjj 637 | 4-5 c: ccmcc 638 | 1-3 d: ddddd 639 | 2-4 g: gdglgwn 640 | 3-8 z: mbzznvds 641 | 3-11 k: fkjttkdkkqbkkkkr 642 | 5-10 n: nnnnwvnnncnnnnn 643 | 1-5 p: wdnxzn 644 | 2-4 h: phhhhhth 645 | 10-12 p: ppwpwkpgppvppppr 646 | 2-6 r: cdrxrrfrrztbq 647 | 6-15 g: gpjggfgcglqgfggw 648 | 3-4 q: qfqgq 649 | 2-6 m: mmmmmf 650 | 10-11 f: fffffffffff 651 | 5-12 g: bvggjfggkggggrqn 652 | 5-16 q: qbqjqqqxzqqqnqmhqq 653 | 3-5 g: gggggg 654 | 3-6 w: wzpxfbkkwtfdswwq 655 | 6-7 x: xccxxrwfp 656 | 12-13 q: qqqqqqqqqqqqq 657 | 7-12 k: kpkkkktkkkkf 658 | 5-7 f: kjlffrf 659 | 9-12 b: rnlzpmxcbbbbbzb 660 | 7-16 t: tztqtdvrrtgtzjtbtpt 661 | 14-15 g: ghkblgpbgbrtdgg 662 | 6-10 h: hdtqhhhhmlhh 663 | 6-13 g: gggggzgggwggl 664 | 7-9 v: kvtqvdsvvvwvpvgkhfl 665 | 10-12 b: bbbbbbbbbmbtbbbb 666 | 11-18 d: ddbddldhgzpkdcdddwd 667 | 12-13 k: kkklkkkkkkkkkk 668 | 3-4 v: rdvztvgv 669 | 4-9 n: zzjtntjcdlt 670 | 11-14 r: rrrrgrrrrbrrrrrrrrr 671 | 1-4 q: qkvq 672 | 2-9 z: wgpmpmxdz 673 | 13-19 p: pmpqjpppppppjpppppkp 674 | 3-4 s: smxwrsmt 675 | 1-5 m: mmsmhmm 676 | 11-14 p: pptmpppnpppspp 677 | 11-12 c: crcccpccfpcncccc 678 | 17-18 x: xnqxxxxxxxxxxxxxxxxx 679 | 1-2 v: cppsvk 680 | 4-6 p: gnpppg 681 | 2-9 r: krbjwprvrrsmrbrjcfl 682 | 2-12 x: cnqxhvppvzkxc 683 | 1-4 g: bgggg 684 | 3-4 j: jjjj 685 | 4-6 l: lwnlljgsdtl 686 | 1-8 v: vvfhxlcq 687 | 11-17 s: wsssmjsjbfstglsss 688 | 6-10 p: pprkpdpsgvm 689 | 13-15 r: rrqrrrrrrrrrrrrr 690 | 3-4 v: vvvj 691 | 1-10 k: kxprmfhcqkcknpqqggt 692 | 9-10 k: lrkkkkkkxtk 693 | 2-14 r: rrdtrmxjwrxgrv 694 | 8-12 q: qqqqqqqwqqqqq 695 | 4-7 v: vvddhcs 696 | 3-4 h: ghhzsvfkghshhz 697 | 9-12 z: zzwctlnpzlzzzbhz 698 | 14-16 w: wwwwwwwwwwwwwlwlwwww 699 | 11-16 r: frrrrrrrrgrnfrrcdr 700 | 2-3 l: jrlkln 701 | 11-12 w: dhwpwzdpwzkf 702 | 8-12 h: shpthhjhlhhhsd 703 | 4-5 n: nnnnnnnnnnnnn 704 | 5-9 d: dddtqdddm 705 | 2-8 p: kpkhwtptjl 706 | 1-9 k: rhvfjdgmjfckqnbjkxk 707 | 8-12 s: srsfbqgqcjgstkldlzbj 708 | 10-11 x: xkmxbndwvxx 709 | 10-19 k: zksnmwtkdkzkkxnvkjk 710 | 4-5 f: qjnfpsfqqfgmf 711 | 1-9 f: fvfffprxffffsphpfff 712 | 2-9 j: njgjjjbqjnmjxbhj 713 | 2-5 z: zzzxzbfp 714 | 8-15 f: ffffdqflmfffffrfw 715 | 5-15 c: cxmltcccmcmgvjg 716 | 2-3 p: pzqp 717 | 2-8 d: fttcqdzdq 718 | 6-10 p: sgphkqkspxbpfsjd 719 | 5-6 p: pppppf 720 | 5-15 r: rrrgrrrrsrcrrrnr 721 | 11-12 t: ttttttttttlt 722 | 10-11 w: wwwwwwwhxtwwww 723 | 9-10 h: wklhbssjkr 724 | 9-14 j: rjjgjjjfhjjpnbjjjj 725 | 2-3 d: dddd 726 | 6-14 q: qqqqqkqmqqqqqqq 727 | 14-15 w: wwwwwwwwwwlwwxw 728 | 5-9 s: vzssssssn 729 | 13-14 n: nnnnnnnnnnnnxt 730 | 1-9 w: cpwtwvngszwwzpwwcw 731 | 1-2 n: nnnnnn 732 | 7-18 b: bbbbbwbbbbbbbbbbrbb 733 | 4-7 f: pfgfwhw 734 | 7-13 q: qqqqqqsqqqqqhqqqq 735 | 3-10 n: gnpjzgndrntnb 736 | 9-13 q: qlqqqqqqqqrrqpqh 737 | 16-19 m: mrqcmmpmmmmmmmmcqmfm 738 | 5-11 p: fgkdvbqwpsfbpjpprgp 739 | 7-11 q: fqqwdqfkqqqrssqqtp 740 | 5-6 t: trtfkvg 741 | 17-18 h: hhhhhhhhhhhhhhhhhh 742 | 6-18 l: lllllklllllllllllbll 743 | 4-9 q: hqqxqqqql 744 | 1-5 j: jjjjnjjjj 745 | 3-4 g: jxggg 746 | 14-16 j: zljnjjsjjjjjjjjjfjjj 747 | 7-9 m: pmzmmzjmxpcbrqnmmmm 748 | 3-7 z: zlczjzlnrtkfss 749 | 2-15 s: xzswpvgnwwjkzws 750 | 15-16 z: zkzzzzzztzqzzzwzzzz 751 | 6-12 f: fcffffffpfffhx 752 | 9-14 p: kptdgpcvplhjhnppst 753 | 9-11 h: hhhhhhhhhhmhx 754 | 2-3 c: cccc 755 | 8-18 s: sszslksjsrsssssssws 756 | 1-6 h: rgvjlphbbhhhnkzz 757 | 2-7 r: rlzrhrrrk 758 | 17-19 h: hhhhhhhhhhhhhhhhhhhh 759 | 2-4 j: wjzjqj 760 | 5-6 b: bbbvdx 761 | 7-13 k: ztqlwthlsdkrdww 762 | 1-2 m: tmmm 763 | 16-19 d: ddcddddddjdjdddpddd 764 | 2-3 n: tvxj 765 | 13-14 z: zzzzzzzzzzzzpz 766 | 6-7 x: xxxxxxl 767 | 2-3 q: qnrw 768 | 7-10 l: ljlvfhgrmllkhlxlq 769 | 2-4 b: bbbq 770 | 16-17 h: hshhhhhhhmhhhhhckh 771 | 1-6 r: rrkrrr 772 | 14-16 n: nnnnnnnnnnnnnnqnnn 773 | 5-11 h: fhhlhhhhhhjktdhngj 774 | 3-4 g: gzgdvgqgq 775 | 2-4 r: hvrg 776 | 7-11 b: bbgcbbbqbwsbgbbbk 777 | 5-9 m: hfpmxpmvmb 778 | 17-20 v: vvvtvtvvvvvvvvvvqvvb 779 | 1-20 z: pszbttwrmqvlrgkmmlwz 780 | 9-16 h: hhhhhhhhhhhhhbhth 781 | 1-2 n: nhnhh 782 | 1-10 n: wnnnnnnfnrnn 783 | 1-5 k: sjkkk 784 | 1-7 k: lklkkkpkk 785 | 4-6 n: nnnznwn 786 | 14-15 s: sssssssssssssds 787 | 9-14 z: zzzzjzbzzzzzzzz 788 | 16-19 g: ggggfrgzgggggggnggg 789 | 9-13 v: vphvvvvvvjvvvmvv 790 | 2-3 l: lvvxpvvqzhdzrk 791 | 4-7 c: qdhclzccwcbmvcsz 792 | 5-8 s: stsskssws 793 | 3-4 c: kbxp 794 | 2-10 b: dtlqbbsvzbbklbgbf 795 | 8-10 s: smsslsbrsbcvsjsts 796 | 2-4 k: kkkkl 797 | 15-16 x: xxzxfxxrdxxfxpxrxn 798 | 11-18 h: hhnrdhhhhhhhhhhhjxh 799 | 1-2 n: plzvhknwjn 800 | 4-9 w: wwzkwwwwxww 801 | 2-3 l: lllp 802 | 3-9 j: fkzjnhqzpjjd 803 | 4-6 k: skkltk 804 | 3-4 k: klvkkkk 805 | 3-4 k: kkkg 806 | 10-11 d: bqdkzpxnfdd 807 | 12-14 r: rqrrrrrrrrrlfxrr 808 | 2-3 r: znrf 809 | 1-4 j: hgzjjtnw 810 | 1-6 w: mwwtwwww 811 | 14-16 d: spddddtddzjsbdcx 812 | 3-4 x: xxbf 813 | 11-12 r: vrrrkdrsrnhrnrvrr 814 | 1-4 c: clmw 815 | 3-8 t: ztvndgtx 816 | 7-10 z: zzzzzzzzzzzzzv 817 | 4-12 t: tbrthtwtchtt 818 | 1-7 h: hwhqrvhqhfh 819 | 4-7 s: ssfssss 820 | 5-13 s: kjtsspjmzrfxp 821 | 4-7 z: zzzzzzzz 822 | 5-15 h: gvhhrscmwmdhhhghhn 823 | 7-8 r: rrrrrrns 824 | 6-9 r: zrrrrrddr 825 | 7-15 v: vvghgtjwwvzwhrk 826 | 14-17 c: cccccsccccccnbtchc 827 | 2-3 k: kgrgr 828 | 15-17 k: kkkkkkkkkkkkkkvkk 829 | 10-11 f: fffffffffvj 830 | 6-8 r: prdnmrrzg 831 | 3-4 f: kcfx 832 | 4-5 k: kkkkkz 833 | 4-15 t: ztttttqhcpstwtt 834 | 1-6 g: cvgghtg 835 | 9-15 j: jtrxvjtjhjjjsjj 836 | 9-10 f: fffcffffff 837 | 10-11 r: hjflczjkqrq 838 | 3-8 k: jssmkkkbpkkjsvnhwkh 839 | 6-10 g: ngggkggmbggtcgg 840 | 15-16 x: xxxxxxxxxxxcxxjx 841 | 8-9 k: kkkkkkkkn 842 | 7-8 b: rbbbbbxdbb 843 | 2-5 w: wwwdwmkhvd 844 | 1-6 v: hfpwkxgvv 845 | 12-14 z: zzzzzzzzzzzjzz 846 | 14-16 s: ssrsmssssssssssss 847 | 3-6 z: zdmzjkc 848 | 2-4 m: mmbb 849 | 13-18 w: lwwwwwkrwwwwwwwwwksw 850 | 5-6 r: bwjrjgrrrrjbg 851 | 5-9 r: rrxmrrlrrj 852 | 2-4 g: gggk 853 | 5-10 s: ssssgmssrscptfrc 854 | 6-8 q: qqqqqzqqq 855 | 16-17 m: kmmmmmqmxmlpsmmmm 856 | 7-10 t: thxvtttztttjttvtkrcc 857 | 2-4 p: pppp 858 | 4-8 q: njdqbqqqrxd 859 | 2-5 w: gwmwklnkfmwjjggw 860 | 10-16 m: mmmmmmmmmzkmmmmw 861 | 1-2 w: btkxj 862 | 1-3 z: pzphlh 863 | 7-10 j: jjjjrpcpjgjjkz 864 | 3-5 j: jjljjj 865 | 1-5 l: lkzflppcgpll 866 | 4-6 m: mmmmmrm 867 | 2-4 m: vmzmmmdhcmntntlrgqk 868 | 8-9 x: xxwxxxlbxxx 869 | 1-2 s: rwrbhvt 870 | 1-5 d: dfdhdd 871 | 6-7 z: zzzzzfz 872 | 12-14 v: vvvdlvqvvnvkkm 873 | 2-7 s: skftlhmfdgpsp 874 | 9-11 q: rlqcqvqqqqqqqqq 875 | 5-6 g: ggmgwtg 876 | 5-7 m: mmmmmmmmmmmmmm 877 | 4-12 f: qffmdmffzfdff 878 | 8-10 k: lkwlkvkkkkkkkkkqk 879 | 15-17 p: qppppqppppppppzpv 880 | 3-4 x: xxxxx 881 | 7-8 x: xxqxdxxxxx 882 | 6-10 b: bbbbmsnkfbdrbnbtlnvb 883 | 3-16 d: ddmdddddrddddddp 884 | 8-11 n: nnnnnnnmnjdd 885 | 3-4 v: vvgd 886 | 11-13 n: nnnnnnnnnnfnn 887 | 5-10 n: nnnnpjnngcnqnn 888 | 7-11 w: wtwbbtzswqt 889 | 1-6 f: fffffwfff 890 | 8-10 q: qqvqqqqqqq 891 | 2-3 h: hhhh 892 | 17-18 m: mmmmmmmmmmmmmmmmqmmm 893 | 10-11 f: ffffffffffdff 894 | 2-4 z: zzzz 895 | 5-6 g: gggghz 896 | 6-19 n: nnnnnqnnnnnxnvnknnnn 897 | 2-6 h: rhhdbk 898 | 2-5 w: fnkwgww 899 | 4-5 c: cqcdgtmcccrbcckng 900 | 1-12 h: hkwptjwxmmgfhbvgj 901 | 4-5 g: pbhtb 902 | 1-11 h: hhhhhhhhhhhhh 903 | 5-11 v: gfrfvfqmgsnrtqkvq 904 | 13-14 s: sstssssscssdssss 905 | 3-8 b: tzjqgnkbbzzvrsb 906 | 8-9 b: bbbbbbbvb 907 | 7-13 r: rrhdcvrrtxmrzrmfxr 908 | 3-6 s: lsshsk 909 | 2-6 g: rqzpqtxmbggsgg 910 | 4-5 b: lbbffb 911 | 3-4 m: kmpm 912 | 8-18 w: wwwwhwwhwwwwmwwpbdw 913 | 6-7 n: nnnnnjn 914 | 6-9 r: ggrrsqrrrqrhbmrqzgd 915 | 7-9 g: rggggggzc 916 | 1-8 n: nnltwnnwn 917 | 6-8 r: rrrrrpxvr 918 | 4-12 c: ccccccccccchcccc 919 | 1-3 g: mrbgf 920 | 6-12 p: zfpsppknppvpmlrspbn 921 | 1-4 g: jxmmns 922 | 1-11 q: zdzhtqsxkcrklwk 923 | 2-4 x: svqmxxl 924 | 7-8 l: lllrwllll 925 | 9-18 v: zkhlxtqvvcvndkzkvvt 926 | 2-9 f: fksffshzx 927 | 2-5 j: jkjnj 928 | 4-15 j: qjjjmvjjpvmjjjbj 929 | 1-5 p: kpppx 930 | 1-6 v: vjttbvffvdhvk 931 | 4-17 l: wlsqvxkrjlltlnxnmds 932 | 1-3 p: pdzqnp 933 | 1-3 h: hhhh 934 | 2-14 z: mmvzzvzzkzhzszvqzzf 935 | 3-6 q: qqrjsxqqq 936 | 3-5 h: hrhvr 937 | 1-8 k: kkskktnkklzdkjgk 938 | 17-18 p: ppppvpppqppppmpppxpp 939 | 2-8 f: fffjsfbp 940 | 9-10 v: vvvfvvvtvxltsvv 941 | 6-12 j: jpvptjqpkjwjr 942 | 15-16 v: vvvvvvvvvvvvvvvp 943 | 6-8 q: qqpqbqqvqq 944 | 10-12 n: nnnnnnnnnnnjn 945 | 13-14 n: nnnnnnwnnnnnxgnn 946 | 2-3 k: kkkxl 947 | 2-3 w: ldmm 948 | 14-19 m: fphmmmmmmkmmmbmdmmw 949 | 4-7 w: wwwgjwww 950 | 8-9 d: dddwdddddd 951 | 6-7 w: wwwfwfvtw 952 | 2-6 j: hlcpkj 953 | 1-3 m: xsmmc 954 | 1-9 b: bbbbbbbbbbb 955 | 1-4 z: zsgz 956 | 2-12 v: vpvvvvvvvvvmvv 957 | 2-16 c: vccjrtcckcccckcsc 958 | 4-15 d: cqxpptqpwmqbvsvvt 959 | 2-14 q: qqqfqwpqzqsmqqvqrxjr 960 | 9-10 w: wvkfhfkhwjvw 961 | 6-10 q: tqqmqktxqfvq 962 | 4-11 f: kvqlfqxfrsf 963 | 7-14 m: rmxmmmmmmmmmmmmxmm 964 | 18-19 v: vvvvvvvsvvvvvvvvvvvv 965 | 7-8 x: fxnxxjjx 966 | 5-6 d: dzddrd 967 | 9-11 b: bbbbbrbssqtbb 968 | 14-16 x: sxxxlxxxxxsxxxxxxxx 969 | 5-9 t: wtttttbptttttqttmtt 970 | 11-13 l: lllllflllwsll 971 | 7-8 r: rrrmprjcv 972 | 6-9 p: plvpdzzppptpkpkpgp 973 | 2-13 g: chmjgvkvsplztzvtlzl 974 | 6-8 z: czzzzjzkg 975 | 1-5 l: jlltpfwlrl 976 | 6-7 d: jddcggqmdddd 977 | 3-5 c: cxbbc 978 | 13-14 p: ppqpppppppppbs 979 | 3-7 w: rwwnqlw 980 | 4-5 v: vvvvv 981 | 9-10 v: vvvvvvvvvm 982 | 3-5 z: zmxzlz 983 | 7-8 c: cccccchdc 984 | 2-4 d: drddctmgd 985 | 3-4 n: nnnn 986 | 3-10 q: cbqszqfqqqbvrrtsfq 987 | 4-17 p: pppkppppppppppppwp 988 | 11-12 n: nnnnnnnnnnnn 989 | 14-15 d: dddddddddddddxn 990 | 6-11 k: gbmbzkcmzskpkhp 991 | 2-10 z: zrzzzzzzzjzzz 992 | 1-2 q: wvqq 993 | 11-14 d: ddddddddddhddn 994 | 2-7 h: hhhhhhhhxh 995 | 10-19 m: mmkmmmmdmmmmmqhvpldm 996 | 2-10 j: jbmjjjrcjj 997 | 7-9 c: ccccplccccc 998 | 7-19 c: cckcbwlcccccccccczp 999 | 9-13 z: zzzzzzjmzzzzp 1000 | 16-20 j: vjkjjcjjrjjmtnbjjjnj 1001 | -------------------------------------------------------------------------------- /3/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | input = lib.splitString "\n" (lib.fileContents ./input); 5 | 6 | parseLine = line: map (c: c == "#") (lib.stringToCharacters line); 7 | 8 | parsedInput = map parseLine input; 9 | 10 | count = diffRow: diffColumn: 11 | let 12 | go = rowIndex: columnIndex: 13 | if rowIndex >= lib.length parsedInput then 0 14 | else 15 | let 16 | row = lib.elemAt parsedInput rowIndex; 17 | field = lib.elemAt row (lib.mod columnIndex (lib.length row)); 18 | value = if field then 1 else 0; 19 | rest = go (rowIndex + diffRow) (columnIndex + diffColumn); 20 | in value + rest; 21 | in go 0 0; 22 | 23 | part1 = count 1 3; 24 | 25 | part2 = count 1 1 * count 1 3 * count 1 5 * count 1 7 * count 2 1; 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /3/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 | -------------------------------------------------------------------------------- /4/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | input = lib.fileContents ./input; 5 | 6 | passports = map (lib.replaceStrings [ "\n" ] [ " " ]) (lib.splitString "\n\n" input); 7 | 8 | passportFields = line: 9 | let 10 | entryPair = entry: 11 | let parts = lib.splitString ":" entry; 12 | in lib.nameValuePair (lib.elemAt parts 0) (lib.elemAt parts 1); 13 | entries = lib.listToAttrs (map entryPair (lib.splitString " " line)); 14 | in entries; 15 | 16 | parsedInput = map passportFields passports; 17 | 18 | matches = regex: str: builtins.match regex str != null; 19 | 20 | schema = { 21 | byr = str: matches "[0-9]{4}" str && (lib.toInt str >= 1920 && lib.toInt str <= 2002); 22 | iyr = str: matches "[0-9]{4}" str && (lib.toInt str >= 2010 && lib.toInt str <= 2020); 23 | eyr = str: matches "[0-9]{4}" str && (lib.toInt str >= 2020 && lib.toInt str <= 2030); 24 | hgt = str: 25 | let 26 | res = builtins.match "([0-9]+)(cm|in)" str; 27 | value = lib.toInt (lib.elemAt res 0); 28 | in if res == null then false else { 29 | cm = value >= 150 && value <= 193; 30 | "in" = value >= 59 && value <= 76; 31 | }.${lib.elemAt res 1}; 32 | hcl = matches "#[0-9a-f]{6}"; 33 | ecl = str: lib.elem str [ "amb" "blu" "brn" "gry" "grn" "hzl" "oth" ]; 34 | pid = matches "[0-9]{9}"; 35 | }; 36 | 37 | validPass = checkValues: pass: lib.all (name: 38 | pass ? ${name} && (checkValues -> schema.${name} pass.${name}) 39 | ) (lib.attrNames schema); 40 | 41 | part1 = lib.length (lib.filter (validPass false) parsedInput); 42 | part2 = lib.length (lib.filter (validPass true) parsedInput); 43 | 44 | } 45 | -------------------------------------------------------------------------------- /4/input: -------------------------------------------------------------------------------- 1 | eyr:2027 2 | hcl:#602927 3 | hgt:186cm byr:1939 iyr:2019 pid:552194973 ecl:hzl 4 | 5 | pid:657988073 eyr:2020 byr:1996 6 | ecl:brn 7 | hcl:#866857 iyr:2015 8 | hgt:164cm 9 | 10 | hcl:#fffffd 11 | byr:1951 cid:321 iyr:2017 eyr:2022 ecl:brn hgt:62in pid:#6ef4e1 12 | 13 | eyr:2025 iyr:2011 14 | byr:1980 15 | hcl:#fffffd cid:129 pid:420023864 16 | hgt:150cm 17 | ecl:brn 18 | 19 | eyr:2029 20 | hcl:#ceb3a1 hgt:187cm 21 | byr:1925 ecl:amb pid:223151011 iyr:2016 22 | 23 | hcl:#cfa07d ecl:brn eyr:2022 pid:135392110 iyr:2010 24 | hgt:190cm 25 | byr:1959 26 | 27 | eyr:2024 cid:225 iyr:2018 28 | pid:522856696 byr:1961 29 | hcl:#a97842 ecl:grn 30 | 31 | eyr:2024 byr:1964 ecl:brn iyr:1976 32 | hcl:#866857 hgt:190cm pid:562135232 33 | 34 | hgt:193cm pid:#6e4342 iyr:2011 byr:1936 cid:296 hcl:z 35 | ecl:#3b8ed3 eyr:2022 36 | 37 | cid:154 byr:1985 38 | pid:503255860 ecl:gry eyr:2023 39 | hcl:#efcc98 iyr:2014 40 | 41 | eyr:2026 iyr:2012 pid:631051435 byr:1986 42 | ecl:amb 43 | hgt:154cm hcl:#341e13 44 | 45 | hcl:#623a2f 46 | pid:318048681 ecl:brn 47 | eyr:2035 48 | hgt:155cm 49 | cid:179 50 | byr:1984 51 | iyr:2019 52 | 53 | iyr:2013 hcl:#733820 54 | eyr:2024 hgt:189cm ecl:amb byr:1969 pid:185953891 55 | 56 | hcl:#cfa07d 57 | ecl:#38f2a6 iyr:2013 hgt:61cm eyr:2021 58 | byr:2012 pid:33668114 59 | 60 | pid:47030948 hcl:4946ca iyr:2019 61 | hgt:189 62 | ecl:#1d136d byr:2013 eyr:2024 cid:51 63 | 64 | ecl:grn iyr:2011 hgt:162cm byr:1935 hcl:#c0946f 65 | pid:883047970 cid:51 66 | eyr:2020 67 | 68 | pid:013760919 69 | iyr:2018 70 | byr:1942 ecl:blu hcl:#623a2f eyr:2020 71 | cid:221 hgt:155cm 72 | 73 | hgt:152cm eyr:2030 ecl:amb iyr:1986 hcl:#7d3b0c pid:29797863 74 | byr:2000 75 | 76 | hgt:176cm 77 | byr:1995 pid:546676799 iyr:2013 ecl:brn hcl:#fffffd 78 | eyr:2023 79 | 80 | byr:1955 pid:634493767 81 | eyr:2028 iyr:2015 ecl:oth 82 | 83 | hcl:#7d3b0c iyr:2020 cid:150 hgt:174cm pid:893757190 84 | eyr:2027 ecl:oth byr:2002 85 | 86 | eyr:2029 pid:790648045 byr:1978 87 | iyr:2012 hcl:#efcc98 ecl:blu hgt:66in cid:256 88 | 89 | iyr:2020 90 | byr:1945 hgt:155cm 91 | cid:209 92 | eyr:2027 93 | hcl:#0eeb2d ecl:hzl pid:048725571 94 | 95 | hcl:#cfa07d byr:2000 iyr:2011 96 | pid:381372526 ecl:oth eyr:2023 hgt:162cm 97 | 98 | ecl:blu pid:544462408 eyr:2030 hgt:171cm iyr:2018 99 | hcl:#602927 byr:1994 100 | 101 | hcl:#733820 102 | iyr:2011 hgt:187cm ecl:hzl pid:533405863 byr:1962 cid:266 103 | eyr:2025 104 | 105 | byr:1975 106 | hcl:#b6652a 107 | iyr:2019 pid:967013712 108 | eyr:2029 hgt:155cm 109 | ecl:oth 110 | 111 | iyr:2010 112 | eyr:2022 ecl:amb pid:052112145 byr:1982 hgt:190cm hcl:#b6652a 113 | 114 | iyr:2012 hgt:183cm hcl:#b6652a 115 | byr:1950 ecl:hzl pid:946714779 eyr:2030 116 | 117 | eyr:2027 118 | pid:686010502 119 | cid:103 byr:1993 hcl:#ceb3a1 ecl:gry hgt:70in iyr:2018 120 | 121 | hcl:#733820 iyr:2012 hgt:157cm byr:1976 122 | eyr:2030 ecl:gry 123 | 124 | ecl:hzl byr:1955 hgt:180cm iyr:2017 eyr:2022 hcl:#6b5442 125 | pid:732940101 126 | 127 | cid:299 hgt:188cm byr:1924 ecl:oth pid:905274031 iyr:2010 eyr:2024 hcl:#18171d 128 | 129 | eyr:2024 130 | hgt:174cm byr:1999 iyr:2013 131 | pid:021076124 hcl:#7f450a ecl:gry 132 | 133 | hcl:#866857 134 | iyr:2016 ecl:oth hgt:176cm 135 | byr:1940 136 | pid:398320693 eyr:2026 137 | 138 | hgt:172cm eyr:2020 139 | hcl:#733820 iyr:1931 ecl:#a0c290 pid:158cm 140 | 141 | ecl:blu iyr:2018 eyr:2025 142 | hcl:#341e13 143 | byr:1990 pid:444561212 hgt:182cm 144 | 145 | hcl:#602927 hgt:165cm pid:240732315 ecl:oth 146 | eyr:2023 byr:1976 147 | 148 | iyr:2016 ecl:brn pid:377612846 eyr:2021 149 | byr:1967 hcl:#733820 hgt:153cm 150 | 151 | hgt:187cm 152 | iyr:2018 153 | eyr:2030 ecl:blu byr:1925 154 | hcl:#733820 cid:114 155 | pid:207103786 156 | 157 | hgt:184cm ecl:blu 158 | cid:111 iyr:2018 159 | pid:361909532 eyr:2025 160 | 161 | ecl:grn byr:1968 iyr:2019 162 | hgt:184cm 163 | pid:381103495 hcl:#7d3b0c eyr:2026 164 | 165 | iyr:2019 byr:1945 166 | pid:727826617 hcl:#01adfd eyr:2020 167 | hgt:151cm 168 | 169 | cid:280 170 | iyr:2011 hcl:#efcc98 ecl:hzl eyr:2029 byr:1924 hgt:171cm 171 | pid:235809608 172 | 173 | hcl:#602927 byr:1973 pid:599786261 eyr:2029 hgt:172cm iyr:2010 ecl:gry cid:97 174 | 175 | iyr:2017 176 | eyr:2027 177 | pid:768895320 hgt:163cm hcl:#866857 178 | byr:1940 ecl:oth 179 | 180 | hgt:178cm hcl:#6b5442 iyr:2013 byr:1959 pid:823221334 181 | 182 | iyr:2014 pid:534201972 ecl:hzl hgt:150cm 183 | hcl:#da8af3 byr:1945 cid:263 184 | eyr:2024 185 | 186 | pid:469575516 187 | hgt:189cm byr:1994 eyr:2025 188 | iyr:2010 ecl:blu hcl:#efcc98 189 | cid:341 190 | 191 | cid:167 eyr:2024 byr:1999 pid:797138561 hcl:#888785 192 | hgt:60in iyr:2015 193 | 194 | iyr:2014 hcl:#866857 cid:103 195 | pid:909549652 byr:1967 hgt:174cm ecl:amb 196 | eyr:2023 197 | 198 | pid:813003671 ecl:oth hgt:61in cid:95 199 | iyr:2016 byr:1995 eyr:2027 200 | 201 | eyr:2021 202 | hcl:#fffffd 203 | pid:000088706 iyr:2014 ecl:blu 204 | hgt:166cm byr:1951 205 | 206 | cid:287 207 | ecl:grn byr:1941 iyr:2017 hcl:#18171d hgt:162cm pid:511728076 eyr:2022 208 | 209 | pid:209898040 byr:1968 eyr:2025 hcl:#18171d 210 | ecl:brn iyr:2017 211 | hgt:191cm 212 | 213 | byr:1932 214 | hcl:z hgt:190cm 215 | cid:201 iyr:2016 pid:#02dfcc ecl:#6b9341 eyr:2004 216 | 217 | iyr:2013 hcl:#ceb3a1 218 | hgt:191cm pid:501799813 219 | ecl:hzl 220 | byr:1993 eyr:2020 221 | 222 | ecl:blu cid:315 223 | pid:897450687 hgt:179cm byr:1984 eyr:2029 iyr:2012 hcl:#a97842 224 | 225 | iyr:2011 ecl:gry hcl:#6b5442 pid:299193732 eyr:2020 byr:1945 hgt:190in 226 | 227 | hgt:158cm eyr:2022 pid:090738381 byr:1992 iyr:2017 228 | hcl:#fffffd ecl:oth 229 | 230 | eyr:2028 cid:92 ecl:amb hcl:#573edf pid:765588435 231 | iyr:2016 232 | hgt:179cm 233 | byr:2002 234 | 235 | eyr:2025 236 | pid:128081454 hcl:#967d2f hgt:190cm iyr:2015 ecl:oth 237 | 238 | hgt:189cm eyr:2025 239 | ecl:gry 240 | hcl:#888785 241 | byr:1993 pid:001825574 cid:239 iyr:2019 242 | 243 | byr:2013 pid:0758189515 hcl:z eyr:2034 iyr:1971 ecl:gry hgt:100 244 | 245 | eyr:2026 byr:1943 hcl:#3638a2 iyr:2011 pid:539139386 246 | hgt:156cm ecl:hzl 247 | 248 | eyr:2030 pid:016597738 iyr:2017 249 | hgt:173cm ecl:brn hcl:#733820 byr:1956 250 | 251 | eyr:2028 252 | iyr:2018 253 | pid:822607758 hcl:#cfa07d ecl:brn hgt:167cm byr:1974 254 | 255 | eyr:2020 256 | byr:1980 257 | hgt:65in iyr:2020 258 | ecl:oth hcl:#efcc98 259 | pid:397182705 260 | 261 | iyr:2015 byr:1954 262 | hcl:#ceb3a1 eyr:2024 pid:398087239 263 | 264 | cid:256 hcl:234fc4 ecl:zzz 265 | hgt:177in eyr:2027 iyr:2015 pid:159cm byr:2022 266 | 267 | iyr:2018 cid:209 hcl:#a928b0 byr:1976 ecl:hzl pid:920448637 eyr:2025 hgt:158cm 268 | 269 | pid:96925844 iyr:2016 eyr:2030 hcl:#888785 ecl:gry 270 | byr:1984 cid:223 hgt:165cm 271 | 272 | byr:1964 pid:831479208 hgt:153cm iyr:2014 273 | eyr:2024 274 | ecl:brn hcl:#18171d 275 | 276 | iyr:2019 ecl:brn 277 | hgt:185cm 278 | byr:1958 hcl:#ceb3a1 279 | eyr:2026 280 | pid:827043482 281 | 282 | iyr:2020 hgt:67in cid:116 283 | hcl:#733820 ecl:blu pid:426593479 byr:1922 eyr:2026 284 | 285 | eyr:2022 hcl:#fffffd 286 | cid:330 pid:951768959 byr:1969 iyr:2019 hgt:156cm 287 | 288 | eyr:2030 ecl:oth byr:1929 289 | hgt:151cm cid:223 hcl:#111544 pid:083495633 290 | iyr:2019 291 | 292 | eyr:2025 293 | iyr:2016 ecl:blu hgt:166cm byr:1967 294 | pid:739606431 295 | 296 | eyr:2021 ecl:gry hcl:#ceb3a1 297 | pid:788420638 byr:1922 iyr:2020 hgt:161cm 298 | 299 | byr:1956 eyr:2025 300 | hcl:#888785 ecl:oth 301 | pid:705051840 302 | hgt:158cm 303 | 304 | pid:047851403 byr:1937 hcl:#cfa07d 305 | iyr:2015 306 | hgt:192cm eyr:2025 307 | 308 | hgt:178cm cid:194 309 | iyr:2019 byr:1923 hcl:#c0946f pid:411527076 ecl:gry eyr:2022 310 | 311 | hgt:186cm 312 | iyr:2014 byr:1956 eyr:2027 ecl:brn 313 | pid:976268893 hcl:#341e13 314 | 315 | iyr:2011 cid:81 hcl:#18171d hgt:183cm byr:1958 ecl:brn eyr:2025 pid:389943720 316 | 317 | eyr:2028 byr:1972 ecl:amb hcl:#c0946f pid:593351635 hgt:165cm 318 | 319 | iyr:2012 byr:1991 ecl:blu hcl:#341e13 hgt:169cm cid:156 pid:599766528 320 | 321 | byr:2029 322 | hgt:75cm 323 | pid:319443119 iyr:2001 eyr:2020 cid:306 ecl:zzz 324 | 325 | hcl:#866857 cid:273 ecl:grn byr:1948 hgt:167cm iyr:2014 pid:256331758 eyr:2021 326 | 327 | iyr:2016 eyr:2024 ecl:oth hcl:#733820 328 | byr:1977 329 | pid:423680717 hgt:158cm cid:241 330 | 331 | hcl:#341e13 pid:788619400 byr:1954 ecl:hzl cid:153 hgt:185cm eyr:2024 iyr:2017 332 | 333 | hcl:#cfa07d ecl:blu hgt:161cm eyr:2026 pid:621023569 byr:1928 iyr:2016 334 | 335 | cid:91 336 | byr:2024 hgt:168in 337 | iyr:1951 338 | ecl:xry 339 | eyr:1979 340 | hcl:aa8fc8 341 | pid:166cm 342 | 343 | eyr:2028 cid:155 hgt:159cm 344 | byr:1952 345 | pid:875326712 346 | ecl:brn 347 | iyr:2012 348 | hcl:#18171d 349 | 350 | eyr:2026 hcl:#733820 byr:1990 351 | hgt:163cm 352 | ecl:amb iyr:2015 pid:162682954 353 | 354 | iyr:2020 pid:936952728 byr:1969 ecl:brn 355 | hgt:151cm hcl:#c0946f eyr:2029 356 | 357 | hgt:189cm pid:132928469 358 | ecl:amb hcl:#866857 359 | byr:1928 eyr:2026 iyr:2013 360 | 361 | ecl:grn pid:185240766 iyr:2012 362 | hgt:190cm byr:1952 hcl:#623a2f 363 | eyr:2020 364 | 365 | byr:2021 366 | eyr:2026 hgt:67cm ecl:#ef67e5 hcl:z iyr:1935 367 | pid:4900748653 cid:64 368 | 369 | hgt:69in hcl:#7d3b0c cid:248 370 | eyr:2022 pid:076116194 byr:1979 371 | ecl:gry iyr:2016 372 | 373 | byr:1991 eyr:2021 hgt:180cm iyr:2020 374 | cid:127 ecl:blu 375 | hcl:#44e350 376 | 377 | byr:1954 hcl:#733820 iyr:2018 pid:002868205 378 | hgt:150cm 379 | ecl:brn 380 | eyr:2021 381 | 382 | pid:524531652 hcl:#623a2f cid:80 383 | ecl:amb 384 | iyr:2017 385 | eyr:2020 hgt:170cm byr:1927 386 | 387 | pid:424660272 iyr:2018 hcl:#efcc98 eyr:2021 cid:238 hgt:187cm byr:1970 ecl:blu 388 | 389 | byr:1923 390 | pid:946014113 cid:273 391 | iyr:2013 hgt:175cm ecl:brn hcl:#602927 eyr:2020 392 | 393 | hcl:#6b5442 cid:88 ecl:gry iyr:2012 byr:1929 394 | hgt:71in 395 | eyr:2022 pid:581329373 396 | 397 | eyr:1960 398 | ecl:oth 399 | iyr:2017 pid:022131529 cid:79 400 | hgt:184 401 | byr:2005 hcl:#6b5442 402 | 403 | eyr:2030 pid:422677836 iyr:2011 404 | hcl:#fffffd byr:1925 hgt:60in ecl:gry 405 | 406 | cid:325 hgt:158cm byr:1971 ecl:hzl pid:517329528 hcl:#18171d eyr:2026 iyr:2011 407 | 408 | byr:1937 409 | cid:259 410 | eyr:2030 hgt:176cm ecl:blu pid:321795494 iyr:2017 411 | 412 | pid:551525002 413 | ecl:grn 414 | eyr:2026 iyr:2013 cid:230 hgt:74in hcl:#cfa07d byr:1954 415 | 416 | pid:004366607 417 | hcl:c39522 hgt:66cm 418 | ecl:#21a3e9 eyr:2024 cid:139 419 | 420 | ecl:xry 421 | eyr:2037 byr:2016 iyr:1994 cid:98 pid:522572315 422 | hgt:158cm hcl:0ee9d4 423 | 424 | cid:70 eyr:2028 hgt:179cm 425 | pid:073189127 ecl:grn iyr:2018 hcl:#142217 426 | byr:1977 427 | 428 | pid:045852463 429 | cid:69 iyr:2020 ecl:brn byr:1948 eyr:2020 hgt:64in hcl:#733820 430 | 431 | cid:268 432 | byr:1970 eyr:2025 hgt:178cm pid:512594967 iyr:2011 ecl:brn hcl:#733820 433 | 434 | eyr:2025 hcl:#18171d 435 | iyr:2014 byr:1950 hgt:161cm 436 | pid:329927551 437 | 438 | byr:1956 eyr:2024 hgt:163cm pid:965746490 439 | hcl:#a97842 ecl:brn 440 | cid:100 iyr:2010 441 | 442 | cid:112 eyr:2027 pid:864571411 hgt:190cm 443 | iyr:2011 byr:1962 ecl:grn hcl:#602927 444 | 445 | ecl:gry cid:54 iyr:2011 hcl:#6b5442 byr:1922 446 | eyr:2025 pid:689641249 447 | hgt:159cm 448 | 449 | eyr:2028 450 | cid:323 iyr:2020 451 | hgt:158cm 452 | ecl:hzl pid:876082513 byr:1941 453 | 454 | hcl:#18171d hgt:160cm pid:910116712 455 | ecl:oth iyr:2014 byr:1927 456 | eyr:2023 457 | cid:226 458 | 459 | iyr:2030 hcl:#602927 eyr:2030 ecl:grn cid:183 hgt:186cm byr:1963 460 | pid:706533329 461 | 462 | cid:279 463 | eyr:2026 iyr:2015 byr:1958 pid:120633047 hgt:150cm 464 | ecl:hzl hcl:#866857 465 | 466 | iyr:2019 467 | byr:1989 hcl:#733820 ecl:hzl pid:470596304 hgt:187cm eyr:2022 468 | 469 | eyr:2027 hcl:#888785 cid:346 470 | iyr:2013 hgt:167cm ecl:hzl byr:1994 pid:528844948 471 | 472 | hcl:#fffffd pid:969181309 473 | iyr:2014 474 | hgt:192cm eyr:2025 byr:1970 475 | ecl:amb 476 | 477 | eyr:2026 iyr:2012 478 | hcl:#341e13 ecl:oth pid:053348609 479 | byr:1931 hgt:167cm 480 | 481 | eyr:2029 ecl:grn pid:030276279 iyr:2013 hgt:182cm hcl:#fffffd 482 | byr:1967 483 | 484 | byr:1949 485 | eyr:2022 486 | hcl:#ceb3a1 iyr:2016 ecl:oth hgt:177cm 487 | cid:224 pid:745439371 488 | 489 | iyr:2016 byr:1940 eyr:2028 pid:351021541 hcl:#341e13 ecl:amb hgt:64in 490 | 491 | cid:309 492 | hgt:74in pid:698666542 493 | hcl:#866857 ecl:oth byr:1953 494 | iyr:2019 495 | eyr:2021 496 | 497 | iyr:2013 498 | byr:1979 eyr:2023 hgt:186cm ecl:brn 499 | cid:236 500 | pid:727367898 501 | hcl:#733820 502 | 503 | hgt:65cm byr:1956 504 | eyr:2025 pid:371685442 iyr:2016 ecl:oth cid:245 hcl:#623a2f 505 | 506 | hgt:155cm ecl:grn hcl:#888785 507 | eyr:2027 iyr:2010 byr:1927 508 | pid:916070590 509 | 510 | hgt:179cm 511 | ecl:blu hcl:#866857 byr:1993 iyr:2019 cid:332 eyr:2022 pid:354895012 512 | 513 | iyr:2029 hgt:69cm 514 | hcl:#efcc98 515 | pid:179cm cid:216 byr:2007 ecl:oth 516 | eyr:2025 517 | 518 | iyr:1988 hgt:187 hcl:z 519 | ecl:#30e67c byr:2020 520 | pid:225115160 eyr:2037 521 | 522 | eyr:2021 iyr:2011 hgt:188cm 523 | ecl:hzl 524 | byr:1965 pid:455044780 525 | 526 | ecl:gry pid:750994177 527 | byr:2002 528 | iyr:2016 529 | eyr:2023 hgt:61in 530 | hcl:#fffffd 531 | 532 | iyr:2020 533 | ecl:gry pid:304482618 534 | hcl:#18171d eyr:2027 535 | byr:1955 hgt:177cm 536 | 537 | hgt:187cm byr:1981 pid:795201673 538 | eyr:2020 539 | cid:154 540 | hcl:#b6652a iyr:2017 ecl:oth 541 | 542 | ecl:gry byr:1954 hgt:151cm iyr:2019 543 | cid:101 544 | eyr:2026 hcl:#cfa07d pid:930011749 545 | 546 | ecl:zzz eyr:1955 pid:#d45ed4 cid:338 iyr:2030 hcl:z 547 | byr:1999 548 | 549 | eyr:2020 pid:861636258 hgt:166cm hcl:#7d3b0c ecl:brn 550 | iyr:2018 cid:125 byr:1958 551 | 552 | iyr:2014 eyr:2022 553 | hgt:67 554 | hcl:#7d3b0c ecl:brn byr:1935 pid:409864761 555 | 556 | hcl:#866857 iyr:2012 cid:94 557 | pid:483584137 byr:2000 ecl:blu hgt:178cm eyr:2022 558 | 559 | byr:1946 ecl:hzl iyr:2015 eyr:2028 hgt:184cm 560 | hcl:#602927 561 | pid:947292495 562 | 563 | byr:1974 cid:96 hgt:59in eyr:2028 pid:358779220 hcl:#6b5442 ecl:gry iyr:2014 564 | 565 | hcl:#61154f byr:1932 566 | hgt:167cm ecl:brn cid:126 eyr:2022 567 | 568 | ecl:gry 569 | iyr:2014 hgt:169cm 570 | byr:1926 eyr:2020 571 | hcl:#866857 572 | pid:463772660 573 | 574 | pid:654733578 ecl:hzl cid:111 iyr:2010 575 | hcl:#fffffd eyr:2024 hgt:191cm byr:1943 576 | 577 | eyr:2021 578 | hgt:74cm hcl:#c0946f iyr:2026 579 | pid:164776417 byr:1977 580 | 581 | ecl:#6db74f iyr:1921 pid:442332495 582 | byr:2018 583 | hcl:z cid:101 eyr:1949 584 | 585 | cid:332 byr:2022 586 | ecl:blu 587 | eyr:2038 588 | iyr:1939 589 | hcl:518816 hgt:191cm 590 | pid:10107923 591 | 592 | pid:168853141 iyr:2010 eyr:2021 byr:1996 ecl:hzl hgt:183cm 593 | hcl:#733820 594 | 595 | hgt:62in pid:556617728 596 | hcl:336a3b eyr:2023 597 | byr:2029 598 | ecl:xry iyr:2016 599 | cid:89 600 | 601 | ecl:hzl hcl:#efcc98 602 | iyr:2020 cid:297 hgt:181cm 603 | pid:075811396 eyr:2023 byr:1960 604 | 605 | eyr:2030 hcl:#602927 ecl:brn 606 | iyr:2015 hgt:75in byr:1995 607 | 608 | ecl:grn cid:237 hcl:#8936bb hgt:183cm eyr:2028 609 | iyr:2015 byr:1998 610 | 611 | pid:550427102 hgt:67in byr:1991 ecl:gry hcl:#efcc98 612 | 613 | cid:274 hgt:70cm 614 | iyr:2022 eyr:1961 hcl:00f05b 615 | byr:1948 ecl:gmt 616 | 617 | ecl:blu iyr:2018 618 | hgt:153cm eyr:2020 pid:831302208 byr:1927 hcl:#18171d cid:150 619 | 620 | iyr:2018 621 | byr:1973 hcl:#ceb3a1 622 | cid:215 623 | hgt:192cm pid:770473271 eyr:2027 ecl:blu 624 | 625 | iyr:2019 eyr:2021 hcl:#623a2f ecl:hzl hgt:174cm byr:1962 626 | pid:589533254 627 | 628 | iyr:2012 ecl:hzl 629 | hgt:184cm cid:292 byr:1991 pid:677889195 hcl:#a97842 630 | 631 | iyr:2010 632 | pid:#4f47c3 633 | hgt:154in 634 | cid:69 635 | hcl:z byr:2022 636 | ecl:#e36a65 637 | 638 | ecl:#5ff50c pid:499582878 hcl:#b6652a hgt:171cm iyr:2016 639 | byr:1930 eyr:2024 640 | 641 | hgt:159cm byr:1936 eyr:2028 642 | hcl:#6b5442 ecl:amb iyr:2015 pid:658019126 643 | 644 | byr:1928 pid:599970280 eyr:2026 ecl:grn hgt:158cm hcl:#18171d 645 | cid:239 iyr:2013 646 | 647 | pid:684820830 hgt:182cm ecl:oth hcl:#c0946f eyr:2023 648 | iyr:2018 649 | 650 | iyr:2019 ecl:blu pid:668361647 cid:348 651 | byr:1952 hcl:#602927 652 | eyr:2021 hgt:71in 653 | 654 | hgt:165cm 655 | ecl:grn eyr:2030 iyr:2010 pid:256350027 hcl:#7d5994 cid:193 byr:1947 656 | 657 | hcl:#602927 iyr:2019 ecl:gry eyr:2029 658 | byr:1931 cid:118 hgt:153cm pid:911300650 659 | 660 | eyr:2025 hgt:154cm 661 | hcl:#866857 iyr:2016 ecl:grn pid:515526226 byr:1936 662 | 663 | hcl:#623a2f hgt:160cm iyr:2019 ecl:oth 664 | pid:932621460 665 | eyr:2030 666 | byr:1990 667 | 668 | hcl:#623a2f ecl:blu eyr:2027 cid:277 pid:662549708 669 | byr:1949 iyr:2016 hgt:176cm 670 | 671 | iyr:2010 eyr:2021 672 | byr:1947 673 | pid:223603325 ecl:gry 674 | 675 | ecl:gry pid:145738978 eyr:2029 iyr:2020 676 | hcl:#733820 byr:1949 hgt:183cm 677 | 678 | hgt:63in eyr:2028 iyr:2011 hcl:#a97842 byr:1941 ecl:gry 679 | pid:091089766 680 | 681 | hcl:#fffffd 682 | cid:275 hgt:157cm 683 | eyr:2021 byr:1978 684 | ecl:hzl iyr:2020 pid:242258232 685 | 686 | pid:239061408 ecl:oth 687 | eyr:2023 iyr:2011 hgt:192cm byr:1949 hcl:#733820 cid:132 688 | 689 | byr:1954 690 | hgt:152cm ecl:brn pid:667414305 eyr:2021 691 | cid:282 692 | iyr:2014 693 | hcl:#341e13 694 | 695 | iyr:2018 696 | pid:745564182 hgt:186cm eyr:2028 hcl:#7d3b0c byr:1935 ecl:gry 697 | 698 | iyr:2014 699 | eyr:2026 hcl:d26483 700 | byr:1972 pid:611712147 hgt:163cm ecl:#57d27c 701 | 702 | cid:322 eyr:2025 byr:1937 703 | iyr:2020 704 | ecl:blu hcl:#cfa07d hgt:158cm 705 | pid:150255302 706 | 707 | eyr:2030 iyr:2011 hcl:#866857 byr:1974 ecl:blu pid:755213661 hgt:155cm 708 | cid:116 709 | 710 | hcl:#866857 pid:679616797 711 | ecl:gry hgt:166cm byr:1999 iyr:2014 eyr:2025 712 | 713 | iyr:2019 hcl:#fffffd 714 | hgt:158cm 715 | eyr:2028 pid:835993614 byr:1920 716 | 717 | ecl:brn pid:742320152 iyr:2013 718 | hgt:151cm eyr:2025 cid:63 byr:1931 hcl:#200aaa 719 | 720 | byr:1950 cid:155 ecl:xry 721 | hgt:150cm 722 | iyr:2014 723 | eyr:2027 hcl:#615954 pid:596469710 724 | 725 | byr:1946 hgt:166cm ecl:gry 726 | hcl:#18171d cid:261 iyr:2016 pid:267318602 eyr:2021 727 | 728 | ecl:gry hgt:185cm iyr:2013 pid:092573029 729 | eyr:2023 byr:1956 hcl:#b6652a 730 | 731 | byr:1997 hgt:172cm eyr:2021 iyr:2014 pid:337403043 732 | ecl:blu hcl:#efcc98 733 | 734 | hgt:190cm iyr:2015 byr:1949 eyr:2023 735 | pid:230935940 736 | 737 | byr:1980 hgt:171cm eyr:2021 pid:9435249395 738 | ecl:oth 739 | hcl:#a97842 740 | iyr:2017 741 | 742 | byr:2011 hcl:#b6652a eyr:2039 ecl:hzl iyr:1923 743 | hgt:186cm pid:239188418 cid:93 744 | 745 | pid:791787662 cid:51 ecl:gry hcl:#602927 hgt:160cm iyr:2020 746 | eyr:2028 byr:1975 747 | 748 | ecl:amb pid:720900081 byr:1978 hcl:#a97842 hgt:183cm iyr:2016 749 | eyr:2022 750 | 751 | eyr:2027 hgt:157cm pid:628454234 752 | hcl:#18171d ecl:gry iyr:2017 cid:345 byr:1988 753 | 754 | byr:1985 pid:996422540 755 | iyr:2013 hgt:66in ecl:grn 756 | eyr:2020 hcl:#341e13 757 | 758 | eyr:2022 759 | pid:186cm 760 | cid:214 iyr:2017 hcl:#866857 ecl:brn byr:1988 hgt:161cm 761 | 762 | iyr:2019 eyr:2025 pid:752184592 hgt:154cm byr:1966 hcl:#18171d cid:119 ecl:grn 763 | 764 | hcl:#b6652a cid:100 byr:1974 pid:477922277 eyr:2024 ecl:grn iyr:2011 hgt:59in 765 | 766 | iyr:2013 ecl:brn 767 | hgt:184cm eyr:2023 byr:1969 768 | pid:514127885 hcl:#6b5442 769 | 770 | hcl:#cfa07d 771 | iyr:2020 byr:1923 ecl:gry hgt:64in eyr:2029 cid:111 772 | 773 | byr:1921 hgt:73in pid:971490088 iyr:2016 eyr:2025 hcl:#866857 cid:271 ecl:blu 774 | 775 | ecl:oth 776 | eyr:2023 iyr:2019 hgt:179cm 777 | byr:1953 pid:226869705 hcl:#602927 778 | cid:63 779 | 780 | hgt:175cm ecl:hzl iyr:2010 byr:1938 eyr:2021 pid:718683561 hcl:#341e13 781 | 782 | iyr:2023 hgt:189in byr:2030 pid:171cm ecl:#447c00 hcl:z eyr:2022 783 | 784 | ecl:blu eyr:2026 785 | hgt:191cm iyr:2020 hcl:#888785 pid:128824091 cid:99 byr:1982 786 | 787 | eyr:2026 pid:333173949 iyr:2017 ecl:oth byr:1928 hcl:#fffffd 788 | hgt:151cm 789 | 790 | hcl:#6b5442 ecl:grn byr:1945 791 | pid:888990994 792 | cid:168 eyr:2026 iyr:2016 793 | hgt:158cm 794 | 795 | ecl:grn iyr:2013 796 | byr:1931 pid:716975878 hgt:168cm hcl:#cfa07d eyr:2023 797 | 798 | pid:815050555 799 | ecl:blu 800 | hgt:161cm hcl:#888785 eyr:2025 801 | iyr:2020 byr:1980 802 | 803 | pid:470039281 804 | byr:1967 iyr:2017 805 | ecl:gry eyr:2021 806 | hgt:171cm 807 | hcl:#7d3b0c 808 | 809 | hcl:#bdf8d6 iyr:2018 byr:1954 eyr:2030 810 | ecl:blu hgt:184cm pid:694267794 811 | 812 | hcl:#cfa07d byr:1971 ecl:brn 813 | iyr:2016 hgt:167cm eyr:2027 pid:237865320 814 | 815 | byr:1921 eyr:2028 816 | iyr:2014 pid:186145415 cid:215 ecl:oth hgt:176cm 817 | hcl:#a97842 818 | 819 | pid:925805272 820 | hcl:#7d3b0c 821 | eyr:2030 822 | hgt:65in ecl:blu 823 | 824 | byr:1992 825 | cid:278 826 | ecl:oth hgt:65in hcl:#c0946f 827 | iyr:2013 828 | pid:092712496 eyr:2024 829 | 830 | hgt:151cm 831 | iyr:2018 hcl:#18171d 832 | byr:1971 pid:599220575 cid:321 833 | eyr:2030 834 | ecl:brn 835 | 836 | byr:1956 iyr:2016 hcl:#b6652a 837 | pid:109381754 838 | ecl:hzl cid:233 839 | 840 | iyr:2015 byr:1988 841 | hcl:#866857 ecl:amb 842 | pid:274656754 843 | hgt:152cm eyr:2022 844 | 845 | eyr:2028 ecl:amb cid:285 846 | byr:1947 847 | hgt:186cm pid:165847317 hcl:#733820 iyr:2013 848 | 849 | hcl:#866857 pid:601229952 eyr:2023 ecl:brn 850 | hgt:191cm 851 | cid:183 852 | 853 | hgt:191cm iyr:2018 hcl:#b50bab byr:1936 eyr:2025 pid:422563929 ecl:oth 854 | 855 | ecl:gry 856 | eyr:2025 hgt:181cm 857 | hcl:#a97842 858 | byr:1971 iyr:2010 pid:267796608 859 | 860 | hcl:#0fd3b0 eyr:2030 861 | iyr:2014 ecl:oth pid:606512017 hgt:173cm cid:301 862 | byr:1999 863 | 864 | byr:1937 cid:277 865 | pid:148179917 hgt:179cm hcl:#602927 iyr:2018 866 | eyr:2029 ecl:grn 867 | 868 | hcl:#7d3b0c 869 | byr:1960 870 | ecl:hzl hgt:162cm 871 | iyr:2015 pid:014246579 872 | eyr:2023 873 | 874 | ecl:blu eyr:2020 875 | iyr:2011 byr:1955 hcl:#777876 hgt:188cm pid:988764375 876 | 877 | iyr:2012 ecl:amb hcl:#18171d 878 | pid:524961020 byr:1983 hgt:173cm eyr:2028 879 | 880 | hgt:153cm hcl:#efcc98 pid:127759635 881 | iyr:2019 byr:1932 882 | ecl:hzl eyr:2020 883 | 884 | eyr:2025 pid:421725637 885 | ecl:gry iyr:2013 886 | hcl:#c0946f 887 | byr:1971 888 | 889 | iyr:2015 pid:654033544 890 | cid:176 891 | hgt:163cm 892 | byr:1923 ecl:brn hcl:#866857 893 | 894 | hcl:#623a2f byr:2013 895 | hgt:76cm ecl:#5cd4a8 iyr:2007 896 | eyr:2035 cid:128 pid:122621229 897 | 898 | hcl:#927794 iyr:2019 byr:1964 hgt:158cm 899 | ecl:oth pid:269737193 eyr:2025 900 | 901 | iyr:2014 cid:181 902 | ecl:blu byr:1949 hcl:#341e13 eyr:2026 pid:120077363 hgt:174cm 903 | 904 | cid:161 eyr:2024 hcl:z 905 | pid:638178037 hgt:151cm byr:1920 ecl:oth 906 | iyr:2011 907 | 908 | ecl:brn eyr:2023 hgt:161cm hcl:#a97842 byr:1977 cid:79 pid:177001463 iyr:2014 909 | 910 | byr:1938 eyr:1967 911 | ecl:grn pid:302413712 hcl:#888785 hgt:183cm iyr:2010 912 | 913 | hgt:164cm 914 | byr:1955 pid:772380994 iyr:2015 hcl:#c0946f eyr:2025 ecl:amb 915 | 916 | hcl:#602927 917 | eyr:2021 byr:1924 hgt:171cm cid:161 ecl:amb iyr:2019 918 | 919 | hgt:119 920 | hcl:7d1404 eyr:1957 921 | pid:143311761 iyr:2027 922 | byr:1939 ecl:#de1d21 923 | 924 | hgt:182cm 925 | iyr:2015 ecl:blu cid:205 pid:136552613 hcl:#ceb3a1 byr:1992 926 | 927 | ecl:blu iyr:2013 cid:54 byr:1998 928 | hcl:z hgt:172cm eyr:2034 pid:#ec3c3a 929 | 930 | byr:1975 ecl:blu eyr:2025 hcl:#623a2f 931 | pid:358585328 932 | iyr:2012 933 | 934 | pid:282306278 935 | byr:1958 ecl:grn hgt:190cm iyr:2020 hcl:#18171d cid:276 eyr:2024 936 | 937 | byr:1955 eyr:2028 iyr:2017 938 | hgt:177cm ecl:grn 939 | pid:111002386 hcl:#6b5442 940 | 941 | eyr:2026 pid:694088201 hcl:#866857 hgt:169cm byr:1957 ecl:amb iyr:2018 cid:109 942 | 943 | hgt:171cm ecl:blu iyr:2013 944 | eyr:2021 945 | hcl:#6b5442 byr:1965 946 | pid:268169550 947 | 948 | pid:803092066 949 | eyr:2023 iyr:2010 hcl:#a97842 ecl:grn byr:1956 hgt:191cm cid:173 950 | 951 | eyr:2024 952 | iyr:2012 byr:1991 ecl:gry pid:946620993 953 | hgt:190cm hcl:#b6652a cid:181 954 | 955 | iyr:2019 hcl:#cfa07d cid:75 hgt:175cm 956 | eyr:2022 pid:062548271 ecl:oth 957 | 958 | cid:262 959 | byr:1956 960 | iyr:2014 pid:860561420 hcl:#888785 hgt:176cm 961 | 962 | hcl:#efcc98 hgt:188cm pid:828180303 iyr:2013 byr:1932 ecl:gry eyr:2028 963 | 964 | eyr:2029 965 | hcl:#341e13 byr:1992 ecl:brn iyr:2012 cid:292 966 | pid:644391775 hgt:150cm 967 | 968 | ecl:grn hgt:182cm eyr:2026 hcl:#ceb3a1 byr:1982 pid:625704144 iyr:2013 969 | 970 | byr:1926 971 | iyr:2013 ecl:brn hcl:#812218 eyr:2025 hgt:150cm pid:610910806 972 | 973 | hgt:61in byr:1926 iyr:2017 eyr:2020 ecl:oth 974 | hcl:#623a2f pid:347974562 975 | 976 | hgt:185cm eyr:2023 ecl:blu byr:1940 pid:123961293 iyr:2014 977 | hcl:#a97842 978 | 979 | iyr:2011 byr:1984 hgt:172cm eyr:2020 hcl:#692e6c ecl:grn pid:342962046 980 | 981 | ecl:blu hcl:#b08932 pid:343331979 982 | iyr:2019 983 | hgt:193cm byr:1985 984 | cid:269 eyr:2023 985 | 986 | hcl:#fffffd ecl:blu 987 | pid:483091240 988 | iyr:2011 eyr:2022 byr:1988 989 | 990 | iyr:2019 991 | hgt:177cm 992 | pid:516533115 993 | cid:294 ecl:amb hcl:#ceb3a1 byr:1922 994 | 995 | byr:1965 eyr:2023 hcl:#cfa07d 996 | iyr:2013 997 | hgt:193cm ecl:grn 998 | pid:931305875 999 | 1000 | ecl:hzl 1001 | byr:1944 hgt:164cm 1002 | hcl:#fffffd 1003 | iyr:2019 eyr:2029 pid:141532765 cid:209 1004 | 1005 | iyr:2013 hgt:189cm 1006 | ecl:brn 1007 | pid:604140631 eyr:2022 hcl:#ceb3a1 1008 | byr:1935 1009 | 1010 | ecl:amb hcl:#888785 byr:1959 1011 | cid:287 pid:849438430 hgt:152cm 1012 | eyr:2027 1013 | iyr:2020 1014 | 1015 | byr:1988 hcl:#623a2f eyr:2029 ecl:brn iyr:2018 hgt:167cm pid:470443459 1016 | 1017 | cid:276 1018 | hcl:#341e13 1019 | eyr:2021 1020 | iyr:2012 ecl:hzl hgt:175cm 1021 | byr:2027 pid:271833606 1022 | 1023 | eyr:2027 1024 | iyr:2010 pid:970527839 hgt:164cm byr:1974 hcl:#623a2f 1025 | ecl:amb 1026 | 1027 | eyr:2020 ecl:grn byr:1932 iyr:2013 pid:104193512 1028 | hcl:#c0946f 1029 | 1030 | eyr:2030 1031 | byr:1982 hgt:65in ecl:blu 1032 | hcl:#623a2f 1033 | pid:570953460 iyr:2020 1034 | 1035 | eyr:2020 byr:1922 1036 | hcl:#602927 pid:803264417 iyr:2019 1037 | ecl:grn 1038 | hgt:169cm 1039 | 1040 | ecl:amb hcl:#866857 byr:1963 hgt:170cm 1041 | eyr:2028 1042 | pid:762546796 iyr:2017 1043 | 1044 | eyr:2035 pid:54291174 1045 | cid:184 1046 | iyr:1980 hgt:176cm ecl:gry hcl:#733820 byr:1974 1047 | 1048 | iyr:2013 hcl:#c0946f pid:408646971 hgt:63in cid:84 1049 | byr:1951 1050 | ecl:amb eyr:2028 1051 | 1052 | eyr:2021 hcl:#6b5442 byr:1994 hgt:170cm ecl:amb pid:348959147 1053 | iyr:2013 1054 | 1055 | byr:1957 1056 | ecl:hzl hgt:156cm pid:890752588 eyr:2025 1057 | hcl:e7c520 cid:199 iyr:2017 1058 | 1059 | hgt:169cm iyr:2016 1060 | cid:180 hcl:#733820 eyr:2024 ecl:hzl pid:661114936 byr:1928 1061 | 1062 | iyr:2015 eyr:2020 byr:1941 hgt:179cm pid:148063033 1063 | hcl:#6b5442 ecl:brn 1064 | 1065 | iyr:1935 pid:14292032 byr:2020 1066 | eyr:1956 ecl:#c9bc33 1067 | hgt:59cm hcl:#cfa07d 1068 | 1069 | hgt:165cm iyr:2010 1070 | eyr:2023 1071 | hcl:#733820 pid:312465756 1072 | cid:112 byr:1993 ecl:amb 1073 | 1074 | eyr:2032 ecl:grt iyr:1963 1075 | byr:1964 1076 | pid:#f5628c 1077 | hcl:z hgt:111 1078 | 1079 | hgt:169cm iyr:2012 1080 | hcl:#623a2f cid:291 ecl:oth 1081 | pid:809080900 byr:1979 eyr:2023 1082 | 1083 | iyr:2021 eyr:2033 ecl:gmt hgt:59cm byr:1967 1084 | pid:2498700612 1085 | 1086 | byr:1953 ecl:oth iyr:2013 1087 | hcl:#b6652a pid:442586860 1088 | 1089 | pid:095687847 eyr:2022 hgt:151cm byr:1967 iyr:2017 ecl:oth hcl:#866857 1090 | 1091 | hcl:#866857 pid:983640144 hgt:61cm 1092 | ecl:hzl 1093 | byr:1991 1094 | iyr:1930 eyr:2024 1095 | 1096 | ecl:oth hcl:#602927 eyr:2025 iyr:2013 hgt:151cm byr:1992 pid:812583062 1097 | -------------------------------------------------------------------------------- /5/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | input = map lib.stringToCharacters (lib.splitString "\n" (lib.fileContents ./input)); 5 | 6 | parseLine = line: 7 | let 8 | rowEntries = map (c: c == "B") (lib.take 7 line); 9 | columnEntries = map (c: c == "R") (lib.drop 7 line); 10 | entriesToNumber = lib.foldl' (acc: el: acc * 2 + (if el then 1 else 0)) 0; 11 | row = entriesToNumber rowEntries; 12 | column = entriesToNumber columnEntries; 13 | in row * 8 + column; 14 | 15 | passes = lib.sort (a: b: a > b) (map parseLine input); 16 | 17 | part1 = lib.head passes; 18 | 19 | part2 = lib.head (lib.concatLists (lib.zipListsWith (a: b: lib.optional (a - b == 2) (a - 1)) passes (lib.tail passes))); 20 | } 21 | -------------------------------------------------------------------------------- /5/input: -------------------------------------------------------------------------------- 1 | BFFFBFFRLR 2 | FBBBFFBRRL 3 | FFBFBFFRRR 4 | FBBFBFFRRR 5 | BBBFFFFLLR 6 | FFBFBBFRRR 7 | BFFBBFFLRL 8 | BBBFBBFLRR 9 | BFFBFBFLRR 10 | BBBFFBFLLL 11 | BFBFBBBRRR 12 | FBBBBBFLRR 13 | BBFFBBFRRL 14 | BFBBBBBRLR 15 | FBBFFFFRLR 16 | BBFFBFFRRL 17 | FBBFFFBRRR 18 | FFBBBBFRRL 19 | BFBBBFFRRR 20 | BBBFBFBRRR 21 | FBFFBFBRLR 22 | BFFBBFBLLL 23 | BBFFFFFRRL 24 | FBBBBFBRLR 25 | FBBBBBFRLR 26 | BFFBBBFLRR 27 | FBFBFBFLLR 28 | FFBFFFBRRR 29 | BBBFFBBLRR 30 | BBBFFBBLRL 31 | BBFBFFBLRR 32 | BBBFFFFRRL 33 | FBFFFBFLRR 34 | BBFBBBFRLL 35 | BBBFFBFLRR 36 | FBFFFFBLRR 37 | FBBBBBFLRL 38 | BBFFFBBRRL 39 | BBFFBFBLRL 40 | BBBFBBFRLR 41 | FFBBFFFRRL 42 | BBFBBBFLRL 43 | BFBBFFBRRR 44 | BFBFFBFLRR 45 | BFBBBFFRLR 46 | FFFBBBBLRL 47 | BBFBFFBRRL 48 | FBFBBFBLRL 49 | FBBBBBBRLL 50 | FBBFBBFLLR 51 | FBBBFFFLLR 52 | BFFFFFBRLR 53 | BBFFFBBLRL 54 | FBBBFFBLRL 55 | FFFBBBBRRR 56 | FBBBFBFLRR 57 | BFFBFFBLLL 58 | BFBBBBBLLR 59 | BBFFFFBLRR 60 | FFBFFFBRRL 61 | BFFFBFFRRL 62 | FFBBFBFLLL 63 | FBFFFFFLRR 64 | FBFFBFFLRR 65 | FBBBFFFRRR 66 | FBFFBFBLRR 67 | FFBBBFFRLR 68 | BBFFFFFRLR 69 | BFFFBFBRRR 70 | FBFBBBFRLL 71 | FFBBFFBRRL 72 | FFBBBBBRLL 73 | FBBFFBBRRR 74 | FBBBFFBLLR 75 | FBBFBFFLRR 76 | FBFFFBFRLR 77 | BBFFBFFLLL 78 | BFBFFFBLRL 79 | BFFBBFFLLL 80 | FBFBBBFRRR 81 | BFFBFFFLLL 82 | BBFBBFFRLR 83 | BFFBBBBRLL 84 | FBBFFBBRRL 85 | FFBFFFFRLR 86 | BFBFBFBLRR 87 | FFBBBBBRRR 88 | FFBBFBBLLR 89 | FBBFFBFLRR 90 | FBFBBBBLLL 91 | BFBBBBFRRR 92 | FFBFBBFLLR 93 | BFBFBBFRLL 94 | BFBFFFBRRL 95 | FFBBFBFRRR 96 | FBFFBBBRLR 97 | BBBFFBFRRR 98 | FFBFFFFRRL 99 | BFBFFBBLRR 100 | FBBBBFBLLL 101 | FFFBFFFRRR 102 | BBFBBFBRRL 103 | FFFBFFBRRR 104 | FBBBFBFLLR 105 | FFBBFFFLLR 106 | BFFBBFFRRR 107 | FFBBFBBLRR 108 | FFBBBBBLLR 109 | BBFBFBFRRL 110 | BBFBBFBLLL 111 | BBFBFBFRLR 112 | BBFBFFBRRR 113 | FFBBFBBLRL 114 | FBFFFFFRLR 115 | FBFBFBBLRR 116 | BFFFFBFRLL 117 | BBBFFBBRRR 118 | FFBFBFFRRL 119 | BFFFBBFLLL 120 | FBBBBBBLRL 121 | BFBBFBFRRR 122 | BFFFFFBLLR 123 | BFBBBFFLRL 124 | BBBFFFBRRL 125 | BBFBFFFLRR 126 | FBFFFFFRRR 127 | BBFFFBBLRR 128 | FBFBBFBRLR 129 | FBFBBBBRLL 130 | FBFFFFFRRL 131 | FBFBBFFRLR 132 | BFBBFBBRLL 133 | BFFBBFFRRL 134 | FBFFFBBRLR 135 | FFBBBBFLRL 136 | BFBBBBBRRL 137 | BBFBBBFRRL 138 | FFBBBFFLRR 139 | FBBBBFBRLL 140 | BFFFBFFLRL 141 | BFBFBFBLLL 142 | BBFFBFFRLR 143 | FBBBBFBRRR 144 | BFBBFFBLRR 145 | FBFFBBBLRR 146 | FBFFFFFLLL 147 | BFFBFBFRRL 148 | FBBFFBFRRL 149 | BBFBFBBRRL 150 | BBFBBFBRRR 151 | BFBFBBFLRL 152 | BBFBFFBLLR 153 | BBFFBFBLRR 154 | FBBFFFBLRL 155 | BFBFFFFRRL 156 | BFBBFBFRRL 157 | BFBBFFBLLL 158 | BFFFFBFLLL 159 | BBFBFFFLLR 160 | BFFFBFBLLL 161 | BBFBFBFRRR 162 | BFFBBBFLLL 163 | FBFFFFBRLR 164 | BFFBBFBLRR 165 | BBFBBBFRLR 166 | BBFBFBBRLR 167 | BFBBBBBRLL 168 | BFFFFFFLRR 169 | FFBBBBFLLR 170 | BBBFFBFLLR 171 | BFBFBBFRRL 172 | BBFBBBFRRR 173 | FFBBBBFLRR 174 | FBFBBFBLLL 175 | FFBBBFFRLL 176 | FBFBFFFRLR 177 | BFBBBFBLLL 178 | BFBFBFBRRL 179 | BBBFBBBLRR 180 | BBFBBFFLLR 181 | BFBFFFBLLL 182 | BFFBFFFLLR 183 | FBFBFFBLLR 184 | BBFFFBBLLL 185 | BBFFBFBLLR 186 | FFBFBBFLLL 187 | BFFFFBFRLR 188 | FBFFBFFLRL 189 | BFBFFBFRLL 190 | BBFFBBBRLR 191 | FBFBFFFRRL 192 | FBFBBFFRRR 193 | FBFBFBBLLL 194 | BFBFBBBRRL 195 | BFBFFBFRRL 196 | BBBFBFFLLL 197 | FFBFBBBRLR 198 | FBFBBBFLRR 199 | FBBFBBBRRR 200 | BFBBBBFRRL 201 | FFFBFBBLLL 202 | FFFBBBFLLR 203 | FFFBBBFRRR 204 | FFBBFFFLRR 205 | FFBFBFBLRL 206 | FBBFBBFLLL 207 | FFFBBFBRLL 208 | FBFFBFBRLL 209 | FFBBFBBRLR 210 | BBFBFFFLLL 211 | BFBFFBFLRL 212 | FFFBFBFLLL 213 | BBBFBFBRLL 214 | FFBFBBBRRL 215 | FBBBBFBLLR 216 | BBBFBFBRRL 217 | BFBBBFBLLR 218 | FFFBBFFLRR 219 | BFBBFFBRLL 220 | FFBFBBFRRL 221 | BBFFFFFRRR 222 | BBBFFBBRLR 223 | BFFFBBBRRR 224 | BBBFFFFRLL 225 | BBFBBBBLRL 226 | FFBFBFFLRL 227 | FFBFBFBRRL 228 | BFFBFFBRRR 229 | FBFFFBBRLL 230 | FBBFBBBRLR 231 | BFFFFFBLRL 232 | FFBBFFBLRL 233 | BBBFFBBRRL 234 | FFBFBFFLLL 235 | FBFFFBFRLL 236 | BFBFFBFRRR 237 | BFBFBBFLRR 238 | FFBBFFBRRR 239 | BFBFBBFRLR 240 | FFFBBBBRLL 241 | BBFBBBFLLR 242 | FBFFBBBLLL 243 | FFBFBFFLLR 244 | BBFFFBBRLL 245 | BFBFBFFRRR 246 | BFBFBFBRLL 247 | BFFFFBBLRL 248 | FFBFFBFLRL 249 | BFBBFFBRLR 250 | FBBBBBFLLR 251 | FBFBFFFLLL 252 | BBFBFFFLRL 253 | BBBFBFFLLR 254 | FFFBFBFLLR 255 | BFFBFBBRLL 256 | FBBFBBBLLL 257 | BFFFBFBRRL 258 | FFFBBFBLRR 259 | FBFFBFFRLL 260 | BBFFBBBRRL 261 | BFBBFBBLRR 262 | FBFFBFBRRR 263 | FBFFBBFRRL 264 | BBFFFBFRLL 265 | FFBBBFBLRR 266 | BFFFBBFRRR 267 | BBBFFBFLRL 268 | FFBFFBFLLR 269 | FBFFBFFLLL 270 | FFFBBBFLLL 271 | BFBFBBBLRL 272 | BFBBFBFLRR 273 | BFBFFFBRLL 274 | FBFBFFBRRR 275 | BFFFBBFRLL 276 | FBBFFBFRRR 277 | BBBFFBBLLL 278 | FBFFFFBRLL 279 | FFBBBFBLLR 280 | BBFFBFFRRR 281 | FFFBBBBLRR 282 | BBFFFFBRRL 283 | BBFBFBBLRL 284 | FBBBFBFLRL 285 | FBFFBBFRLL 286 | FFBFBBBLLL 287 | BFBFBFFRLL 288 | FBBBFBBRLL 289 | FBFBBFBRRL 290 | BBFFBFFLRR 291 | BBFFFFBRLR 292 | FFFBBBBRLR 293 | BFFFBBFLRL 294 | BFBFBFFLRR 295 | FBBBBFFRRR 296 | FBFBBBBLLR 297 | FBBFFBBRLR 298 | BFBFBBBLLR 299 | BBBFFBBLLR 300 | BFBFFFFLRR 301 | BFFFBBBRLR 302 | BBFFFFBLLR 303 | FBFBBFFLRL 304 | BFFBFFBLLR 305 | BFFFBFBLRR 306 | BFBBBBFLRL 307 | BBBFFBFRLL 308 | BFBBFBFLLL 309 | BBBFFFBLRL 310 | FFBFBBFRLR 311 | FBBBFBBRRL 312 | FBFFBBFLRL 313 | FBBBBFFLRR 314 | FFFBBBFLRR 315 | FBBFBFFLLL 316 | BBFFFFFLLR 317 | BBBFFFBLLL 318 | BFFBBBBRRR 319 | BFFBBBBLLL 320 | FBFBBBBRRL 321 | FFFBBFBLLR 322 | BBFBFBBLLR 323 | BBFBFFBRLR 324 | FFFBFBBRLR 325 | FBFFFBFLLL 326 | FBFBBBBRRR 327 | FBBFBBFRRL 328 | FBBBFBFRRL 329 | BBFBBFFLLL 330 | BFBBFFFLLR 331 | FBBFFFFLLR 332 | BFBBBFFLRR 333 | BBFBBFFRRR 334 | BBFBFFBLLL 335 | FFFBBFFLRL 336 | FBBBBFBLRL 337 | FBBBBBBLLR 338 | BFBBFFFRRR 339 | FBBFBFFLRL 340 | BFBBBBBLLL 341 | FFBBFFBLLL 342 | BBBFFBBRLL 343 | FFBBBBFRRR 344 | FBBFFFBRLL 345 | BBFBFBFRLL 346 | BFBFFBBLLR 347 | BFFFFFFRRR 348 | BFFFFFFRRL 349 | FBFBFBBRRL 350 | FBBFBFBLRL 351 | BBBFBBFLLL 352 | FBFFBFFRRR 353 | BFFFFBBLLR 354 | FBFFBBBLLR 355 | FBBBFFBLLL 356 | FFBBBFBLLL 357 | BFFFBFBLRL 358 | FBBFBBFLRL 359 | BBFFFBBRLR 360 | BFBFFFFLLL 361 | BBFFBBBRRR 362 | FBFBFFBRLL 363 | BFFBFBFLLL 364 | FFBFFFBRLL 365 | FFBFFFBRLR 366 | BBBFFFFLLL 367 | FFBFFBFRRL 368 | BFFBBBFRLR 369 | BBFFFFFLRR 370 | FBBBFFBRLR 371 | BFBFFBFRLR 372 | BFFBFFFLRL 373 | BFFBFFFRLR 374 | FBBFFFFLLL 375 | FBFFFBFLLR 376 | FBFBFFBRLR 377 | BFFFFBBRRR 378 | BBBFBFFRRL 379 | FFFBBFFLLL 380 | FFBBFFFRRR 381 | FBBFFBFLRL 382 | BFFBFBBLLR 383 | FFBBBFBRRR 384 | FFFBFBFRRL 385 | FFBBBBBLLL 386 | BBFFBBBLLR 387 | FFFBBBFRRL 388 | BFFFBBFLRR 389 | BFFBFFFRRR 390 | BFBBBFFRLL 391 | FBBFFBBLRL 392 | FBBFBBFLRR 393 | FBBFFBBLRR 394 | FFBFFBBLRL 395 | FBBFFBFRLL 396 | BFFBBBFRRL 397 | FBFBFFFLLR 398 | FFBFBBBLLR 399 | FFFBFBFRLL 400 | BBBFBBBLRL 401 | FBBFFFFLRR 402 | FBBBFFFRLL 403 | BBFBBBBRLL 404 | FBFBFFFRLL 405 | FBFFFFFLRL 406 | BFBFFFFRRR 407 | BBFFBBFLRL 408 | FBBFFBFRLR 409 | FFBBFFFRLL 410 | BFBBFFFLRL 411 | BBFBFFFRRR 412 | BBFBFFFRLR 413 | FBFBBBFRLR 414 | BFBBFFBRRL 415 | BBBFFBFRRL 416 | BFFFFFFRLL 417 | FFFBFFBRLR 418 | BBFFFBFLRR 419 | FBBFFBFLLL 420 | FBFFBFBLLR 421 | FBFBBFBLRR 422 | FBFBFBFRRR 423 | FFBFBFBRLL 424 | BFBFFFBRLR 425 | BFBBFFBLLR 426 | FBBBFBFRLL 427 | FBBFBFBLLR 428 | FFFBBFFRRL 429 | FBFBFFBLRR 430 | FBBFBFBRLL 431 | FBFFFFBLLR 432 | FBBBFFFLRL 433 | BBBFBBFRRL 434 | FBBFFFFRLL 435 | BFBBBBFLLL 436 | BFFBBBFLLR 437 | FBFBBBFLLL 438 | FBBFFFFRRL 439 | BFFFBFFRRR 440 | BBBFFFBLLR 441 | FFBBFBFRLR 442 | FBBFBBBRLL 443 | BBFFFFFLRL 444 | FBBFFBFLLR 445 | BFBFFBBRRR 446 | BFBBFFFRRL 447 | FFBBBBFRLL 448 | BBFBFFBRLL 449 | BFFFFFBLLL 450 | FFBBBFBLRL 451 | FFFBBFFRRR 452 | BBFBFBFLRR 453 | FFFBFFBLRL 454 | BFFFBBBLRL 455 | BFBBFBBLLR 456 | FFBBBFFRRL 457 | BBFFFBFLLR 458 | BFFFFBBLRR 459 | FFBFFBFRRR 460 | FFBFBFFRLL 461 | FBFBBBBLRR 462 | FFFBBFBRRR 463 | BFBFBFBRRR 464 | FFFBFBFLRR 465 | BFFBFFFRLL 466 | BFFFFFBRRL 467 | BFFBFBFLLR 468 | BBFFBBFRLR 469 | BFFFFFFLLR 470 | BBFFFBBRRR 471 | BBFBFBBRLL 472 | FFFBBBFRLR 473 | FBFBBBFRRL 474 | FFFBFFBRRL 475 | BFBFFFFLLR 476 | BFBBFBBRRL 477 | FFBFBFFRLR 478 | FFFBBBBLLL 479 | FFBFBFBRRR 480 | FBBFBBBLRR 481 | BFFBFFBLRL 482 | BFFFBFFLLR 483 | BFFFFBFLLR 484 | BBFBFBBLRR 485 | BFFBFFFRRL 486 | BFFBBFBRLL 487 | BBFFBFBRRL 488 | BBBFFFFRRR 489 | BFFBFFBRLL 490 | FBFBBFFRLL 491 | FBBFFFFLRL 492 | BBBFBFFLRR 493 | FFBBBBBLRL 494 | FBBFFFBRLR 495 | FFBBBBBRLR 496 | FBBBFFBLRR 497 | FBBBFBBLLR 498 | FFBBBFFLLR 499 | BFFFFFFLLL 500 | FFFBFBBRRL 501 | FFBBBBFRLR 502 | FBFFFFBRRR 503 | FFBFFBBLLL 504 | FBBFFBBLLR 505 | FFFBFBFRRR 506 | BFFBBFBLRL 507 | BFBFFFBLLR 508 | BBFFFFBRRR 509 | FBBFBFBLRR 510 | FBBFFFBRRL 511 | FFBBBFFRRR 512 | FBFFFFBLRL 513 | FBBFFFBLLL 514 | FBFFFBBLRL 515 | FBFBFBFLLL 516 | BFFBFFFLRR 517 | BFBFFBFLLL 518 | FFBFFBBLRR 519 | FBFBFFBRRL 520 | FBFBBBBRLR 521 | BBFFBFBRRR 522 | BBBFBBFLRL 523 | BFBBFBBLLL 524 | FFBFBFBLLR 525 | FBBBBFFLRL 526 | FFBBFBBRRR 527 | FBFFBBBRLL 528 | FFBBFFFLLL 529 | BFFFFFBRLL 530 | BBFBBBBLLR 531 | FBBBFFBRRR 532 | BFFBBFBRLR 533 | FBBBBFBRRL 534 | BBFFBBFLRR 535 | FFBFBFBLRR 536 | FFFBFBBRRR 537 | FFBFFFFRLL 538 | FBBFFFFRRR 539 | BFBFBFFLLR 540 | BBFFBFFLLR 541 | FFBFBBBRRR 542 | BFBBBFFRRL 543 | BBFFBFFRLL 544 | FBFBBFFLLL 545 | BFFBFBBLRL 546 | FFBFFBFLRR 547 | BBFBFFFRRL 548 | BBFBFBFLLL 549 | FBBBFFFLRR 550 | FBBFFBBLLL 551 | BBFFBBFRLL 552 | FFBBFBBRRL 553 | BBFBBFFLRL 554 | BFBFFBFLLR 555 | BBBFFFBRLL 556 | FFBBFBFLRL 557 | FBFBFBBLRL 558 | FFBFFFFLLR 559 | BBFBBBBRRR 560 | FBBFFBBRLL 561 | FFBBBFBRLL 562 | FFBFFBBLLR 563 | BBFBBBBLLL 564 | BFBBBFFLLR 565 | BBFBBFBRLR 566 | FBBBBBFLLL 567 | FBBBBFFRLR 568 | BFBBFFFLRR 569 | FFBFBFBLLL 570 | BFFFFBFRRR 571 | FBFBFBFRLL 572 | FFBFBBFLRL 573 | BFFFFBBLLL 574 | BBFBFFFRLL 575 | FBFFFBBRRR 576 | FBFBBBBLRL 577 | BBFFBBBLLL 578 | BFFFBBBLLL 579 | BFBBBFBLRL 580 | BFFBFBBLRR 581 | BBFFBFBRLR 582 | BBFFFBBLLR 583 | BFBFFFFRLR 584 | BBFBFFBLRL 585 | BFFFBFFLLL 586 | BFBFFFBLRR 587 | FFBBFFFLRL 588 | FBFBFBBRLR 589 | FBFFBBBRRL 590 | BBBFBFBRLR 591 | BFFFBFBRLR 592 | BBFFBBBRLL 593 | FBBBBBBRRR 594 | FFFBFBBLRL 595 | BFBBFFFLLL 596 | FBBFBFBRLR 597 | FFBFFBBRRR 598 | BFFBBBBLLR 599 | FBFBFBBLLR 600 | BFBFBBBRLR 601 | FBFBBBFLRL 602 | BBFBBBFLRR 603 | FBBBBFFRRL 604 | FBBBFBBRLR 605 | FFFBFFBLRR 606 | BFFFFBFLRL 607 | BBBFFBFRLR 608 | FFBFBFBRLR 609 | BBBFBFFLRL 610 | BBFFFFFLLL 611 | FBFFBBFLRR 612 | FFBBFBFLRR 613 | FFBBBBBRRL 614 | BBFFBFBLLL 615 | FFBFFFBLLR 616 | BFFFFFFLRL 617 | FFBBFFBRLL 618 | FFBBFBFRLL 619 | FBBBFFBRLL 620 | BBFFFFBRLL 621 | FFBFFBBRRL 622 | BBFFBBBLRR 623 | BBBFBFBLRR 624 | FFBBBBBLRR 625 | FBBFBBBRRL 626 | BFBBFBFRLL 627 | FBFFBFFRLR 628 | FFFBBBBLLR 629 | FFFBBFBRRL 630 | FFBFBBFLRR 631 | FFBFFFFLRR 632 | BFBFBBFRRR 633 | BFFFFFFRLR 634 | FFBFFBBRLL 635 | BFBFBBFLLL 636 | BBFBFBFLLR 637 | BFBFFFFRLL 638 | BFBBFBFLLR 639 | FFBBFBFRRL 640 | FFBBBFFLLL 641 | FBBBFBBLLL 642 | BBBFBBFLLR 643 | BFFBBFFRLR 644 | FBBFBBBLLR 645 | FFFBBBFLRL 646 | BFFFFBBRLR 647 | BFBBFBFRLR 648 | FBBBFFFRLR 649 | BBBFBFBLRL 650 | BFBFBBBLLL 651 | BBFFBBFLLR 652 | BBFBBFBLRR 653 | FFBFFBFLLL 654 | FBBFBBFRRR 655 | FBBFBBFRLR 656 | BFBFBFFRRL 657 | BFFFFBBRRL 658 | FFBBFFBRLR 659 | FFFBFBFLRL 660 | FBFFFFFRLL 661 | FBFFBBFLLL 662 | FBFFFFBLLL 663 | BBBFFFFRLR 664 | FFFBBBFRLL 665 | FBBFBFFRLL 666 | FFFBBFFRLR 667 | FBBFBFFLLR 668 | BFFFBFBRLL 669 | BFBFFBBLRL 670 | FBBFBFBRRR 671 | BFFFBFBLLR 672 | FBFBFBBRLL 673 | FBBFBFBLLL 674 | FFFBBFBRLR 675 | FBBBFBFLLL 676 | BBBFBBFRRR 677 | BFBFBBFLLR 678 | FFBFFFFRRR 679 | BFBBFBFLRL 680 | BFFBBFBLLR 681 | BBFBFBBLLL 682 | BFBBFFBLRL 683 | BFBFFBBLLL 684 | FBBBBBBRLR 685 | FBFFBFBLLL 686 | BFFBBBFRLL 687 | FBBBBBBRRL 688 | FBBBFBBLRL 689 | BBFFFFBLLL 690 | FFFBBFFRLL 691 | FBFFFBBLLR 692 | BFFBBFFRLL 693 | FFBFFBBRLR 694 | BFFFBBFRLR 695 | FFBBFFBLLR 696 | FFBBBBFLLL 697 | BBBFBFBLLL 698 | FBFBBFBRLL 699 | BBBFBBFRLL 700 | BFFFBBFLLR 701 | FBBBBBFRRR 702 | FBFBFFBLLL 703 | BBBFFFFLRL 704 | FBBBBFFLLR 705 | BFFFFBFRRL 706 | BFFBBBFLRL 707 | BFBFFFFLRL 708 | FFFBBFBLRL 709 | BBFBBBFLLL 710 | FBFFBBBRRR 711 | BBFFFBFRRR 712 | BBFFFFFRLL 713 | BBBFBBBLLL 714 | FFBBFFBLRR 715 | BBFBFBBRRR 716 | BFFBFFBRLR 717 | BFBBFFFRLR 718 | FBFBFFBLRL 719 | FBFFBFBLRL 720 | BFFFBFFRLL 721 | FFBFBBBLRL 722 | FBFFBFFLLR 723 | FFBFFBFRLR 724 | FBBFFFBLLR 725 | BBBFFFBRLR 726 | BFBFBBBLRR 727 | FBFBBFFLLR 728 | FBFBFBFRRL 729 | BFFBBBBLRR 730 | BBFFBBBLRL 731 | FFBFFFBLRR 732 | BFFBBFBRRL 733 | FBBBFBBRRR 734 | FFBBBFBRLR 735 | BBFFFFBLRL 736 | FBFBFFFRRR 737 | BFFBFBFRRR 738 | BFBFBFFLLL 739 | BFFBFBFRLL 740 | FBFFFBBRRL 741 | BFFFBFFLRR 742 | FFBFBFFLRR 743 | FBFFBBFRRR 744 | BFFBBFFLRR 745 | FFBBFFFRLR 746 | BFBFBFFRLR 747 | BFBBBFBRRR 748 | BBFBFBFLRL 749 | FFFBFFBLLL 750 | FBBFBBBLRL 751 | FBFBFBBRRR 752 | BBFFBFBRLL 753 | FFFBFFBLLR 754 | FBBFBBFRLL 755 | FFBBFBBRLL 756 | FBFBFFFLRL 757 | BBFBBFBLLR 758 | FBBBBFFRLL 759 | FFBBBFFLRL 760 | FBFFBBBLRL 761 | FBFBFFFLRR 762 | BBFFBBFRRR 763 | BBFFFBFLRL 764 | FBFFFBFRRR 765 | BFBFBFBRLR 766 | FBFFBBFRLR 767 | BFBBFFFRLL 768 | FFBFFFFLLL 769 | FFBBBFBRRL 770 | BFFFBBBRLL 771 | BFFFBBBRRL 772 | FBFBFBFLRR 773 | FBFBBBFLLR 774 | BBBFBFFRLL 775 | BFFBFBBRRL 776 | BFFBBBFRRR 777 | BFFBBBBLRL 778 | FBBFBFFRRL 779 | FFBBFBFLLR 780 | FBBBFBFRRR 781 | BBFFFBFRRL 782 | BFBBBFFLLL 783 | BBFFBFFLRL 784 | FFFBFFBRLL 785 | FBFFFBFRRL 786 | FBFFFBBLRR 787 | FBFBBFBLLR 788 | FBFFBFFRRL 789 | BFBBBFBRLR 790 | BFFFBBFRRL 791 | FBFFBFBRRL 792 | FFBFBBBLRR 793 | BFBFBBBRLL 794 | FBBBFBBLRR 795 | FBFFFBBLLL 796 | BFBFBFBLLR 797 | FBBBBFFLLL 798 | FFBFFBFRLL 799 | BBFFBBFLLL 800 | FFFBBBBRRL 801 | BFBFFBBRRL 802 | BFFBFBBRRR 803 | BFFBFBFLRL 804 | BBFBBBBLRR 805 | FBFBFBFLRL 806 | BFFFBBBLRR 807 | BFFBFBBRLR 808 | BBFFFBFRLR 809 | BBBFFFBRRR 810 | BFBFFBBRLR 811 | FBFBFBFRLR 812 | FFBFBBBRLL 813 | FBFFBBFLLR 814 | BFBFFFBRRR 815 | BFFBFBBLLL 816 | BFBBBBFRLL 817 | BBFBBFBRLL 818 | BFBBFBBRRR 819 | BFFBBFBRRR 820 | BFBBBBBRRR 821 | FFFBFBFRLR 822 | BFFBBFFLLR 823 | BBFBBBBRLR 824 | FFFBFBBRLL 825 | BFFBFFBRRL 826 | BBBFFFFLRR 827 | FBBBFFFRRL 828 | BBFBBBBRRL 829 | BFFFFBFLRR 830 | BBFBBFFRLL 831 | FBBFBFFRLR 832 | FBFBBFFRRL 833 | BFFFFFBRRR 834 | BFFBBBBRLR 835 | BFBFFBBRLL 836 | FBFBBFBRRR 837 | FFBFBBFRLL 838 | FBFFFFBRRL 839 | BFBFBFFLRL 840 | BBFBBFFLRR 841 | BFBBBFBRLL 842 | FBFBBFFLRR 843 | BFFFFBBRLL 844 | BBBFBBBLLR 845 | FBBFBFBRRL 846 | BBFFFBFLLL 847 | BFBBBFBRRL 848 | BFFBFBFRLR 849 | FFFBFBBLLR 850 | FBBBFBFRLR 851 | FBFFFFFLLR 852 | BBBFFFBLRR 853 | BBFBBFBLRL 854 | BFBBBBBLRR 855 | BFFBBBBRRL 856 | FBBFFFBLRR 857 | FBBBBBBLLL 858 | BFBBBFBLRR 859 | BFBBBBFLRR 860 | BFBBBBBLRL 861 | BFBBBBFLLR 862 | FFFBBFBLLL 863 | BBFBBFFRRL 864 | FBBBBFBLRR 865 | BBBFBFFRRR 866 | BFBFBFBLRL 867 | FBBBBBBLRR 868 | BFFBFFBLRR 869 | FFBBFBBLLL 870 | BBBFBFBLLR 871 | FBBBFFFLLL 872 | BBBFBFFRLR 873 | BFBBFBBRLR 874 | FFBFFFBLRL 875 | FFBFFFBLLL 876 | FBBBBBFRRL 877 | FFFBBFFLLR 878 | FBFFFBFLRL 879 | BFBBBBFRLR 880 | BFBBFBBLRL 881 | BFFFFFBLRR 882 | FBBBBBFRLL 883 | FFBFFFFLRL 884 | FFFBFBBLRR 885 | -------------------------------------------------------------------------------- /6/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ; 3 | 4 | parseGroup = group: map (line: lib.genAttrs (lib.stringToCharacters line) (v: null)) (lib.splitString "\n" group); 5 | 6 | input = map parseGroup (lib.splitString "\n\n" (lib.fileContents ./input)); 7 | 8 | reduceWith = op: lib.foldl' (acc: group: 9 | let result = lib.foldl' op (lib.head group) (lib.tail group); 10 | in acc + lib.length (lib.attrNames result) 11 | ) 0 input; 12 | 13 | part1 = reduceWith lib.mergeAttrs; 14 | part2 = reduceWith builtins.intersectAttrs; 15 | } 16 | -------------------------------------------------------------------------------- /6/input: -------------------------------------------------------------------------------- 1 | fbqjswm 2 | qmbjwfs 3 | fmsbjwq 4 | smjbqwf 5 | hwsqmbfj 6 | 7 | sxpoqbueg 8 | fbhxqzjrtdkgwaepos 9 | qbepgsxo 10 | pbxvosegq 11 | giqepcobsxl 12 | 13 | gd 14 | pfdy 15 | 16 | yijwkdzvoub 17 | cifujkyvbwz 18 | 19 | htumjfskxapveoblncy 20 | tkvfxpejomnbhcuslya 21 | xukpmyenothacjfbsvl 22 | 23 | dyt 24 | hclpfxvykumo 25 | bwjyi 26 | 27 | ezfiytx 28 | pitkrf 29 | fpeki 30 | gbuovijdfqaw 31 | 32 | wyxabpekmlovhu 33 | lueyowbmvkapxh 34 | emhakvlyouwbxp 35 | obyxlewkmaphvu 36 | vmhaobxeklypwu 37 | 38 | qerwhnkioygzcsulbjxa 39 | wlegxsyupobaqzcnri 40 | 41 | awroqhfs 42 | abyfqops 43 | ikqcgzatjuen 44 | 45 | lnxdjmpvirbeus 46 | gazhcwfy 47 | 48 | jqo 49 | qonj 50 | oqjcs 51 | 52 | qgahfybi 53 | dbhjfwcgy 54 | zgfhyqb 55 | 56 | urtsfljxgc 57 | teyorfwlxgu 58 | uvrlzpkixgnmtq 59 | tardhlxjuog 60 | uxetgbrlw 61 | 62 | apehszymrlwjqgu 63 | mhqjgdzlswryuxa 64 | 65 | vnamzidfsojth 66 | ouvqmlhpbrdjfzawit 67 | 68 | zus 69 | muczs 70 | xuzsr 71 | puzsg 72 | 73 | actgknebysj 74 | cjbgesnkty 75 | uemgdkcynst 76 | stfqcgneyk 77 | 78 | rgxsfmiplkobquvzedntwya 79 | wyietkrnhzamxouvsbdqlfp 80 | sevfloziqnmtjrubypkxwda 81 | 82 | lsj 83 | sjl 84 | 85 | ihyvfqesulxorctjgmzpdank 86 | hycmevxlsfdugproiqztknja 87 | ujmdnqyltxvswzfhpkgoiecrab 88 | 89 | mynlpojwqtk 90 | hisrag 91 | 92 | gaw 93 | agw 94 | agw 95 | gaw 96 | wag 97 | 98 | pkoq 99 | dtqbypcoj 100 | loqpf 101 | eprvmoq 102 | rqepo 103 | 104 | bfuheqvzsjignmctwl 105 | jfszbqegvhmlcniuwt 106 | txjsgivlzcmwauehbdnqf 107 | tejwzcvlbnuqmgfish 108 | 109 | qutrxvl 110 | zytdmqrx 111 | rxecqta 112 | 113 | fayzme 114 | vazey 115 | yazj 116 | aybhzsdc 117 | 118 | csnjhrfyqbxiav 119 | rfvaycxqihsbn 120 | fixpvahcqsnrjy 121 | nclzsixrfvoyeatkmwhq 122 | 123 | quey 124 | enxuq 125 | qeup 126 | utwqe 127 | 128 | rbosi 129 | tirdojubs 130 | boris 131 | borsi 132 | iobsr 133 | 134 | mdskbhvyiqertul 135 | uqbltrykimehsv 136 | ktvmyjuchreqblis 137 | hequalkrsimybtv 138 | 139 | rsitupnoy 140 | fzwksemhcbq 141 | 142 | vkrsfmljcbzdthi 143 | tfdlkqjpmgh 144 | mkqtfhlpxajd 145 | thdkljmf 146 | 147 | mrfpbwyx 148 | rwfxmyb 149 | yrxwbmf 150 | fmwryxb 151 | 152 | rmztba 153 | uabrzmtpy 154 | 155 | kajxyerviqthbzcomgnsfwp 156 | wkhjetspdmblnyiqgzafcvxr 157 | egyirpvajwxmnbzqkhosctf 158 | whpcbruzkxeivftysgnjmqao 159 | 160 | o 161 | o 162 | o 163 | o 164 | 165 | vmjwhzngqtaxl 166 | ivhnfdcgtzqjwma 167 | zagqmhnwvfcjtky 168 | gjatqhwzyrnvm 169 | wckanzhvmgqtj 170 | 171 | azixnsjvh 172 | hxvsaj 173 | xvzhnajws 174 | lgxvhasj 175 | chqksxrevjuoaf 176 | 177 | wlbocnkiyjdfmvgue 178 | mychvijfbekulrgw 179 | fvymucjewsghlbki 180 | 181 | jczgonpt 182 | jfzibgon 183 | 184 | k 185 | k 186 | k 187 | k 188 | 189 | r 190 | v 191 | 192 | oeafxtjqhrdlgupwisc 193 | lvhyjegkwrfpasxcto 194 | cszalfyrtxbvwgjpeoh 195 | axhzcepjgolstwfvr 196 | 197 | hqfdymlisknuaejc 198 | rptnamdkobqciujxh 199 | nlgayihvumdkqcj 200 | ickfhdauznmjq 201 | niqzkcjaudmh 202 | 203 | zavtjyul 204 | uyaihcbjtzmnfvq 205 | yjwdaerztp 206 | tqoazjsxlymk 207 | ybjaztql 208 | 209 | gz 210 | qxgal 211 | 212 | sdhcagp 213 | scahdpg 214 | ahgdpsc 215 | adsgcph 216 | gdsfcaph 217 | 218 | ysud 219 | ydoxpqhesu 220 | tbsjyudn 221 | bsdvyul 222 | dsyvcut 223 | 224 | onizqprkeumy 225 | teckol 226 | 227 | fxlohzwgkebcn 228 | rznhkfocgjvde 229 | ktgefihnomzc 230 | bsmypfchqxneoazgk 231 | 232 | robwtniusy 233 | quisghwtdv 234 | 235 | mhtxubnl 236 | yhmdtwcupezvxabl 237 | kthbulmgrxs 238 | bqhutximl 239 | uxqhibtlm 240 | 241 | nyifbxuq 242 | ohmpfrntzdc 243 | 244 | aityekusrc 245 | yuecirak 246 | yricukea 247 | 248 | fbhntzkpalduvrjeqxg 249 | najtimzflgcdqpkyrxb 250 | 251 | byi 252 | puln 253 | ytdc 254 | vafzwhsjkqxge 255 | 256 | zngipme 257 | inzpmjsx 258 | 259 | sxrwd 260 | yla 261 | nf 262 | uhjzpvbme 263 | 264 | xpmhcy 265 | yxhpcm 266 | ychxpm 267 | ychxpm 268 | cpxhmy 269 | 270 | wvmspxgrf 271 | wxgsfivm 272 | 273 | uwcfnb 274 | caiyqxovdp 275 | jstmchku 276 | lctezs 277 | 278 | hy 279 | hy 280 | yh 281 | hy 282 | hy 283 | 284 | urepkmtblcfw 285 | ejxuiacmvonpbr 286 | pmzgbqruyech 287 | wcpkuzbrmhes 288 | 289 | jo 290 | oj 291 | jo 292 | oj 293 | 294 | gepdsrkwazxfyql 295 | equrwsaxyl 296 | ylwsxaqer 297 | lrwyqesmax 298 | 299 | ceist 300 | iwhudaxgreyvfbz 301 | kqeospit 302 | ienjqm 303 | 304 | roqikgmtubnapl 305 | rtepiyvfsouj 306 | iqrdlgtubpoc 307 | 308 | rgtedxo 309 | xegotdr 310 | 311 | tkz 312 | kzt 313 | ktz 314 | tzk 315 | 316 | aimcqg 317 | qagrebmic 318 | 319 | ra 320 | sa 321 | a 322 | a 323 | a 324 | 325 | djzixkqyt 326 | lhreum 327 | cgwel 328 | lamr 329 | 330 | dom 331 | omd 332 | mdo 333 | 334 | virpctxulowjq 335 | xrwlpjucqsiot 336 | 337 | ljxzenhfvqburo 338 | jqoenfbvhxyl 339 | vcmfbyhwnoqjel 340 | sikqfvlnebgtjho 341 | lnejfqoxhyvpwba 342 | 343 | ebqkrwfijg 344 | jkrgbwf 345 | ybwrfjgvk 346 | wjkqegrbfv 347 | hwjukgbflxr 348 | 349 | mnqukrsvfctlpbewidz 350 | coiuealptqmhwvdrskf 351 | slyjekvhmrptwcudfqi 352 | 353 | gdhqrenioakvfj 354 | gedaivwzxqyfoskr 355 | dckqormvbgjelhfai 356 | 357 | cegixsmlduz 358 | iegdslzcumx 359 | zedksiugcmxla 360 | 361 | aznelohvw 362 | jovendlawh 363 | uehwyvorminfa 364 | avwenoh 365 | hnwpaove 366 | 367 | xvbtpinmaud 368 | qxruionfedm 369 | nxigmhud 370 | uitaxznmd 371 | 372 | dirpsgulvjwxkqzof 373 | rmdpjuyivlwkozqfsx 374 | wzfiskheluoqxjrpvd 375 | qasjkzxilcdofvurpbw 376 | wrqhudxkfvspizjlo 377 | 378 | dhefy 379 | ehfyqnsdlb 380 | yhezdf 381 | heyfd 382 | 383 | hyla 384 | hyal 385 | lyha 386 | avlyuh 387 | 388 | q 389 | p 390 | ip 391 | y 392 | p 393 | 394 | nasejwkfdgz 395 | awegjndsfkz 396 | sdwjfgezakn 397 | neawsdzkfjg 398 | gdnzwakjesf 399 | 400 | vdsa 401 | asdv 402 | svad 403 | savd 404 | savd 405 | 406 | dqyxjwvu 407 | afxhvbgz 408 | 409 | yvhxzrckdmebwoistlfpaqguj 410 | qhsyupcixrwfobkjzlmvt 411 | uyftrkhwlspnzixqbcomvj 412 | 413 | zukomqjdtwaphyrcfb 414 | qdyhjwuzcrmfk 415 | yuhkjdcrgefmzqw 416 | jwfqmgcxrkyheudz 417 | 418 | m 419 | gjkar 420 | hni 421 | hs 422 | 423 | emc 424 | ecm 425 | cem 426 | 427 | bfuxtzqyrwsldgjhep 428 | ymlrtqpbosdewgaxju 429 | 430 | uvphrftqsaekbzxj 431 | vzhxajqfpuekrsbt 432 | tqzpvjuskrabehfx 433 | ypqrbafxksjzuevoth 434 | 435 | tm 436 | ap 437 | a 438 | a 439 | o 440 | 441 | zknhwxbclamjgvsefoy 442 | dlrfvhkyjnsexzbmagcw 443 | gxwklbjehofacnmyzsv 444 | hvajsfnzkcxemlygwb 445 | 446 | fmsjqhkxyw 447 | jsfmhqywxk 448 | wsqmjfyxhlk 449 | bqhjcmfyskwx 450 | mksxwqyhfj 451 | 452 | buxi 453 | i 454 | wh 455 | s 456 | ab 457 | 458 | ywjbtszuhniaopd 459 | wyibtcejfznmdohqua 460 | 461 | cjgstbahpzfrnqkeo 462 | ecpboaqzgnkrjftsh 463 | ztajpchkgnbvqsrofue 464 | 465 | vtibnfojdaxekhgmy 466 | myajhtdnbfoxvgik 467 | jnavmlytwdfshbkxrigo 468 | khiamfxngvdojtyb 469 | kidbhfmagyjvtxon 470 | 471 | lnupbwhodmei 472 | imelnobphdwu 473 | neipbomlduwh 474 | lumneowihbxdp 475 | hiublekowpdnm 476 | 477 | lypirvqzcw 478 | kziwqypxvr 479 | 480 | yeadtgixzn 481 | nydxeztga 482 | qdfkoagyncxtze 483 | 484 | otvm 485 | ilvham 486 | qrvbkxj 487 | wveoz 488 | fulicv 489 | 490 | leazscfdotkuhxmr 491 | eocdxshlaufrmtzk 492 | 493 | mdtlwyin 494 | ydnitwlm 495 | ymtwlind 496 | idmtnlyw 497 | 498 | zuonrg 499 | gwzxneor 500 | urznbgol 501 | qbrkzgnou 502 | roqkngz 503 | 504 | ywbpxicgstaufmozedqkrjv 505 | xbvgnfltorzwceiqampkyshuj 506 | 507 | chkmy 508 | qsbamjn 509 | 510 | emvlydfruaits 511 | kerixnwlbu 512 | zxwjbliepur 513 | ouzeilr 514 | 515 | ybiu 516 | cyru 517 | zpkv 518 | 519 | pqcdevnlraiwtjmfxk 520 | njtlacpbixdekv 521 | dxlykvipagctnj 522 | xkjltagcndivp 523 | suvhkcaizpdoltnxj 524 | 525 | cgqnapzvfwyimk 526 | qpcvzgaywmfnik 527 | zykcamvpniwqgf 528 | kyfiavmgzpcqwn 529 | 530 | t 531 | t 532 | 533 | xqhpuljcgbzyi 534 | thyndcqw 535 | ncqyhmvr 536 | dhfaqmcy 537 | 538 | s 539 | sgz 540 | opvswqtx 541 | s 542 | 543 | rikeqfvdla 544 | jqfacvosgu 545 | vfqae 546 | vbdfqrwa 547 | 548 | mfewqjdkcb 549 | xnogrlmah 550 | nvimla 551 | 552 | zcfxogw 553 | xgcpotfljw 554 | geyfaomxc 555 | 556 | uync 557 | dny 558 | yn 559 | ydn 560 | 561 | zvpuajx 562 | pquz 563 | 564 | q 565 | y 566 | y 567 | w 568 | 569 | phk 570 | hmk 571 | kdh 572 | 573 | ljcumvrwdsfpzixhqgantoybk 574 | lcgwubvzspqoramyetkxjdnhf 575 | uqmsdhlptyfobanvgkrczxjw 576 | uxqvyhbzkjangmtsldfprocw 577 | avgmoswrxhdjypftczknuqbl 578 | 579 | vyxclotkrzefghanjmipsu 580 | tvzmrcywlsoqkebdai 581 | 582 | gdrnybwsuxfc 583 | yrbpmnfus 584 | bvfcshmntuyr 585 | onaisrfqkbyzu 586 | 587 | slpetjhcvmaufd 588 | tpfvdaumjechsl 589 | ejcasvltdfpmuh 590 | shtuaepcfjlmdv 591 | 592 | bqwhndkeotmjcv 593 | skcwtjeymbvqdohi 594 | 595 | rebfqy 596 | gqeybf 597 | beqyf 598 | yfbeq 599 | 600 | kzoenrdtc 601 | zdwtnx 602 | nzdxgt 603 | 604 | cdta 605 | kjroqnldu 606 | tuvc 607 | hyegxbwfmzis 608 | 609 | qpdfokyxsubanv 610 | sfxkupnabvy 611 | ukbypvxafsrn 612 | srfpvxnbyauk 613 | 614 | wxdkupoba 615 | cdfxkpwobau 616 | obkdwnxupa 617 | qzulkwoxdhpba 618 | 619 | vqzxurtjcbeild 620 | qzbgklntdijvhcsxwye 621 | jtdvxqzebclmio 622 | plutvbjiqedzxc 623 | utbzcjxovliqde 624 | 625 | shvwemxcjlodknriy 626 | xowueychnfmsrpkvj 627 | ynewmskzjvhpqcxor 628 | wcsqkhxzjmyvoern 629 | 630 | tghcpi 631 | igcthp 632 | pctigh 633 | higatcp 634 | 635 | khnlfdogbtmqsc 636 | rstoyencgilkb 637 | ktzgljpboauncs 638 | govcnjlwbqthsk 639 | bnlkotqgcus 640 | 641 | clfqxtajgw 642 | wxaclufj 643 | wfjxdaucvl 644 | xwljfcia 645 | jcyplrhsowxmbfaz 646 | 647 | jwvuczdk 648 | ujzwvdck 649 | cdjzuvwk 650 | 651 | wqrpskjbzxd 652 | sqevgnkropcaxiu 653 | xhsbfrmkqzp 654 | 655 | g 656 | g 657 | l 658 | 659 | lbtvkxeuiycrwsjpad 660 | watikedxycljrupbv 661 | cypkrxtlbvomawueidj 662 | jbewavliyrdxctkup 663 | 664 | r 665 | jwur 666 | r 667 | r 668 | r 669 | 670 | fmdxyhr 671 | yrdfhxkm 672 | mhyrfxad 673 | lrdhixmfty 674 | 675 | rpanbukoyqmcew 676 | wdku 677 | ktluvgwi 678 | wkuf 679 | guhkjtlw 680 | 681 | kbfcnapuvxdme 682 | demhltfxpuinvc 683 | fcnpehixdvm 684 | nqzoxcdmpfyvejg 685 | 686 | qscuwkvpl 687 | uafwkqylspi 688 | zchkwfvusa 689 | shxnwyquk 690 | romjtbsudkwe 691 | 692 | bzorewil 693 | oebzwli 694 | 695 | ihzmnublpsga 696 | gpaziqbvsxnmth 697 | mnzispgaohb 698 | zshingbamp 699 | yimlhznrepgbas 700 | 701 | slbzwpftqcvj 702 | vfupdwrezscojyx 703 | 704 | ukofntijmbryecd 705 | cyejmbfnudorikt 706 | dryfiukceojnatbm 707 | enfdmjtyboickru 708 | 709 | ukzfgsanmldiqej 710 | zldmsqgnifjbke 711 | oylgasqfkjnmedzpi 712 | glfmqeijdzsknh 713 | ijmesznldkgfq 714 | 715 | fyxhmu 716 | btyvfih 717 | 718 | fcasuqmiborhtyw 719 | cyusmhpwrfoqae 720 | 721 | pvmj 722 | qmpuvd 723 | mbpvr 724 | 725 | fu 726 | fu 727 | 728 | cmsharebt 729 | tycsehablrm 730 | ebhcrsmzao 731 | ebasmxchr 732 | seacrmhbn 733 | 734 | phf 735 | fph 736 | fhp 737 | pfh 738 | 739 | x 740 | x 741 | 742 | cklhmiqbfrav 743 | hfivmclbqakr 744 | acvilfbqhmrk 745 | vlfahbrickqm 746 | xamcrbqifvkhld 747 | 748 | ldykra 749 | arkdly 750 | lrdkay 751 | aldryk 752 | dkyrla 753 | 754 | bf 755 | f 756 | f 757 | f 758 | f 759 | 760 | sja 761 | j 762 | jn 763 | hj 764 | 765 | syr 766 | r 767 | w 768 | 769 | ajitzbsk 770 | ktiasbzj 771 | bijhskazt 772 | jbiamtskz 773 | btkiazjs 774 | 775 | ci 776 | b 777 | x 778 | b 779 | 780 | jgbzatyevmdwoirh 781 | ayidemzjhrvb 782 | muzbjqfishxenyrdlav 783 | vmyjbredaihz 784 | 785 | nsta 786 | pvxsn 787 | 788 | pwe 789 | pwe 790 | pew 791 | 792 | skydwacovhbrq 793 | cdbhorkvywaqs 794 | avwybqkcdshro 795 | rbakdocqywsphv 796 | qowhgfcavbsrdyk 797 | 798 | soewtgjpcdvla 799 | gijtxwdlevpaysc 800 | todevpzwglcjas 801 | gacdfrwmpsuvebtlj 802 | wgvlcdkejtpaons 803 | 804 | kboigesmfr 805 | ufjo 806 | pohfjqn 807 | qozf 808 | 809 | jet 810 | zrejt 811 | 812 | ygb 813 | yug 814 | myg 815 | gnysplqjod 816 | 817 | kjqsrbofmeinawhlzgxtd 818 | ehdtcmjrksfziqvlabwxo 819 | 820 | nqdvlzregyfp 821 | wvhlpnmdzegkyf 822 | mldhexvnzpgsfy 823 | 824 | m 825 | m 826 | r 827 | 828 | yxkrzaov 829 | urvzmxaigdk 830 | sazvketrjncb 831 | 832 | jhmgqebw 833 | zalupkdf 834 | 835 | myhwf 836 | yhwfm 837 | wmyhf 838 | 839 | ujqmvybntwlfgrskz 840 | vufrdgszeblymkntjq 841 | vuonrfqbslxgjyzptk 842 | yzkunbfrjtlqgsv 843 | fjqyrgnluvbtzsk 844 | 845 | yvxrmbogtfziqeclpjwdknauhs 846 | ldwjkqzotvynuxahcpfmersgbi 847 | 848 | bapjknqrem 849 | qgmpnrh 850 | hnrpmocq 851 | doqurpmn 852 | 853 | ramwtungpzjv 854 | wzrvngmtjpua 855 | zurgmatnjwvp 856 | pgtzrmvujnaw 857 | janzpvurmtgw 858 | 859 | mencbuo 860 | folkueabn 861 | zqayub 862 | pusrwjd 863 | tkylhu 864 | 865 | x 866 | qsfmnyuow 867 | eg 868 | xbde 869 | xr 870 | 871 | jqiwyx 872 | wix 873 | iwx 874 | xiw 875 | 876 | d 877 | jilwe 878 | xgvf 879 | b 880 | 881 | qauwef 882 | yvbcijs 883 | 884 | pxykceoad 885 | k 886 | kznifl 887 | k 888 | 889 | rh 890 | hrm 891 | hdr 892 | 893 | iertpcvhdyojnsfa 894 | edchyptlnsjiaow 895 | onbpaysiuchedjt 896 | 897 | ulrjawfezdq 898 | dytianoelkqxwmgfju 899 | ufvawqjdhespcl 900 | 901 | pagzxn 902 | zangpx 903 | xnpagz 904 | 905 | xlksupgydimtb 906 | dgpbsxtymluik 907 | lgfubtvxcsdmypiwjz 908 | yimltngspdbuox 909 | 910 | phc 911 | ihpc 912 | phc 913 | cph 914 | cph 915 | 916 | ybumkwiegvpsfrladzjh 917 | sfajurxbncqevwkgdyptl 918 | 919 | gr 920 | rg 921 | rg 922 | gr 923 | rg 924 | 925 | hrkvgpintusxzcfbjdo 926 | habgkptcrzdfxylvui 927 | ngdctqkpuxrzvhifbo 928 | kfuztmcrhdpbxoivg 929 | 930 | zslmwoeh 931 | lehzswp 932 | zewlsh 933 | zswelh 934 | 935 | tqgwiukvmxbopradencjsylfzh 936 | tnojksulryzdehqvawbcpgxmfi 937 | iqotslzpjeyrgbxfhudwvackmn 938 | rbvxpctodlegihunyfjwzqkams 939 | 940 | cuzwomlixbfganhk 941 | yglfvnwzbkimorux 942 | xiqgnmkfobzwul 943 | ifkbxolngwmduz 944 | jztklouwfgibnmx 945 | 946 | heobpftukwcrxyngj 947 | gfhemvqxajotpz 948 | 949 | maektfpjqbyhz 950 | kiabmewjf 951 | abkvocefmj 952 | arkmjenfb 953 | 954 | xyufbcmjtlvwgp 955 | ouwcfryxvzsje 956 | hxwcaqyfuojvn 957 | fcqujheyvrxw 958 | 959 | lqtbuxhfwnk 960 | wynbhe 961 | zhwnvb 962 | rswdhcnib 963 | bwhnr 964 | 965 | wxcnqskthobyzumapgejl 966 | npcjubmkhwyolgszaeq 967 | opzhqjlyuegmwnsabkc 968 | okehynrujmapqigswzcbl 969 | 970 | lyjnuwtpgobavfh 971 | oawgyuhvpntfjl 972 | vgjydfopntlwahux 973 | 974 | vfioljdqtsz 975 | dqlvojfztwp 976 | elofzvdjtuq 977 | gqhzdfbotlvj 978 | 979 | ebhnvgqjct 980 | gkqulcjwze 981 | 982 | ugncyzxqvjmlirf 983 | xlomqekjyrdanwhfv 984 | 985 | tqhupz 986 | lwtjuai 987 | 988 | uhvk 989 | l 990 | lg 991 | 992 | qjy 993 | pcyjq 994 | jbqy 995 | 996 | duoyfsnhlc 997 | jtlpvohxsauzb 998 | 999 | hkoqtgyvmjdwlnpicx 1000 | noxkdlhygpmvqjtcwi 1001 | ojqdthcywlgxenvimkp 1002 | hcxwygvdjpklmoiqnt 1003 | wxtjcpdylgnmkhviqo 1004 | 1005 | jzuei 1006 | eib 1007 | ei 1008 | eiy 1009 | iez 1010 | 1011 | pujfagxbze 1012 | faejixpg 1013 | mgtwqevaxsfjrhp 1014 | aexzycgfdkjpl 1015 | 1016 | iunmadwyvlsxtpjck 1017 | ruihstgbkmqoxzfcdenw 1018 | 1019 | qkvxdctszruljmpganbho 1020 | pumocnxkdlvrhtjbszaq 1021 | hurqpmotnlcsfdjvxzakb 1022 | bsrjuhxntkpmoqvaldzc 1023 | 1024 | suktgmbnrqfahj 1025 | jqhsrkbfmntgu 1026 | 1027 | ogaxbpiwvufktecdynlz 1028 | bqshpjmgr 1029 | 1030 | dbikqj 1031 | kqbjdi 1032 | kibjdq 1033 | bdqijfkl 1034 | qjdbik 1035 | 1036 | pa 1037 | otd 1038 | akn 1039 | jsrqmvwf 1040 | 1041 | jr 1042 | mr 1043 | 1044 | xdgrfvbncsjaltiqkyhm 1045 | qtswydkimlnzagvxch 1046 | equasoltvmyidngkpxch 1047 | 1048 | maqpjnebszkftoc 1049 | rskduxejyvqg 1050 | 1051 | k 1052 | k 1053 | k 1054 | k 1055 | xark 1056 | 1057 | tiokl 1058 | hnzadijvbq 1059 | xi 1060 | lieo 1061 | 1062 | xfjlskdabohcvzmtpur 1063 | zgvlqrjoapmbtufhc 1064 | 1065 | urceayoxjsh 1066 | lnzvwqmpdbt 1067 | 1068 | g 1069 | g 1070 | x 1071 | g 1072 | g 1073 | 1074 | zuwgj 1075 | guzj 1076 | guzqhrj 1077 | zjgu 1078 | 1079 | xsjotcbfzqlkewiv 1080 | ypxfhkjliuc 1081 | ljrmcxkif 1082 | 1083 | ycgevt 1084 | wkxhe 1085 | 1086 | a 1087 | a 1088 | a 1089 | a 1090 | ja 1091 | 1092 | imwespvrudzaqojc 1093 | wvjiodspemqrzuca 1094 | mwvdzqosuciapjre 1095 | cpwejouzqadsirvm 1096 | eirmvjqzapcwsdou 1097 | 1098 | yt 1099 | i 1100 | i 1101 | 1102 | ovxmc 1103 | xmsczv 1104 | smvxc 1105 | xvmc 1106 | 1107 | ynogzuevhipsbrwt 1108 | uezhvrpbontwiyg 1109 | swivytbuzegrhno 1110 | tbvyhoezurngiw 1111 | nuvygohteirbxzw 1112 | 1113 | hvktyilwjpxdngouam 1114 | tayjndpghiorzvluxkm 1115 | aonsixtfpgmhlejkudyv 1116 | 1117 | hdatbcv 1118 | zmyxugq 1119 | 1120 | lmajoitgubwvpf 1121 | ibloytfwumjapvk 1122 | alfrwiutmhvjbpeon 1123 | mojdtpbaliuykwfv 1124 | 1125 | wblkycgps 1126 | lkgpcyswb 1127 | wsybgplcvk 1128 | cublspdwgjyk 1129 | ygplbkcsw 1130 | 1131 | pwyqvokde 1132 | vdreypwk 1133 | ypevdkwr 1134 | 1135 | lykv 1136 | riz 1137 | sgjwtmoub 1138 | 1139 | jobiqznpsugm 1140 | czjamsyuipnklqobg 1141 | bpnotjugsfzmqi 1142 | bgoqnsjipuzdm 1143 | gubnqozpijsm 1144 | 1145 | qukzafenwyhblosmrgvx 1146 | zvlfurkwceqasohi 1147 | suzeolakhvfqrwpi 1148 | 1149 | iycm 1150 | ciy 1151 | icy 1152 | 1153 | hmxz 1154 | zxd 1155 | xzl 1156 | xmdz 1157 | xz 1158 | 1159 | yftbrxvucjkniem 1160 | dqtl 1161 | tqog 1162 | tphazw 1163 | 1164 | imkegrwdxybuav 1165 | kneiomxygdavrwb 1166 | rgoiamenwypdkxvb 1167 | wrqdahgfiemkyblvx 1168 | emxrkywigvbad 1169 | 1170 | zk 1171 | mw 1172 | d 1173 | e 1174 | 1175 | ihcwvxeotpzfrkqsl 1176 | syjiahxvnoebfcpgqkzmrud 1177 | 1178 | foktjcszgwhr 1179 | fokqcndbyizrhaeswgl 1180 | vkrfsocpgwhuzm 1181 | rwhkgscxfzo 1182 | 1183 | y 1184 | skt 1185 | fg 1186 | 1187 | ejirwohkzfub 1188 | hujfbrkozn 1189 | oknucvzgfjhbr 1190 | jzlormuvhfkb 1191 | xfsouqjzrpbhk 1192 | 1193 | scbejldiaz 1194 | jsblace 1195 | hbejsal 1196 | slabuje 1197 | 1198 | osfej 1199 | hjsoek 1200 | oejszk 1201 | 1202 | la 1203 | wl 1204 | al 1205 | 1206 | icquzebwdkrhs 1207 | cbiukwresh 1208 | ruwhkseicb 1209 | 1210 | ikcqygtvfsnaurelwd 1211 | ybukjdmlecvxpawzho 1212 | 1213 | wfhyiscdpjvgktoz 1214 | dvhfkowiyzts 1215 | dtvysikzwoufh 1216 | vesyhiqtkdzfow 1217 | vtskzynhfiowd 1218 | 1219 | xszyugwmdoflejaknqibt 1220 | fzoavqsumdwpgynkjltx 1221 | 1222 | lctpvbshq 1223 | pslc 1224 | scwlp 1225 | cglpnws 1226 | 1227 | xpyteraozhluwfcj 1228 | jueoaltzypcfhxrw 1229 | rwycztuahoxjpelf 1230 | fuhoprexjytazlcw 1231 | wyapzfeohxtrculj 1232 | 1233 | xd 1234 | rsxv 1235 | xc 1236 | x 1237 | uxmle 1238 | 1239 | uh 1240 | p 1241 | pw 1242 | 1243 | u 1244 | u 1245 | u 1246 | u 1247 | 1248 | qvhmxwtfrzcjolynesbkdip 1249 | qvnsibxmzrdowltpkhfeyjc 1250 | 1251 | ezvopirtq 1252 | vitqzope 1253 | 1254 | iewnmbouxctfadgh 1255 | tgsmjucxadby 1256 | daubxgctm 1257 | 1258 | b 1259 | b 1260 | b 1261 | 1262 | fhswi 1263 | limr 1264 | rhlp 1265 | fihp 1266 | uykdoc 1267 | 1268 | wbfhklqaug 1269 | jlxvnqadzhksfw 1270 | 1271 | tunfikcwpexs 1272 | gkwpmcsurtnieo 1273 | akpwxstecinuo 1274 | upskvwtnyjiqzech 1275 | wudbengklptsric 1276 | 1277 | loedjctvbszkw 1278 | pgxrlihqa 1279 | 1280 | gjwok 1281 | jgowk 1282 | owjgk 1283 | kwogj 1284 | gwojk 1285 | 1286 | f 1287 | fyd 1288 | 1289 | gajmfcikbnrylhpsx 1290 | mrcpingkjlbhfxysa 1291 | hacxpgrifkynljmbs 1292 | flajskgnbrhpixcmy 1293 | fincblhsgxrakypmj 1294 | 1295 | xazukhfjyqtm 1296 | makzthqyf 1297 | qakymfzhlct 1298 | kaihzqydfgmtb 1299 | tzfjkqhyvma 1300 | 1301 | dgzlpe 1302 | elqpzg 1303 | ezlpg 1304 | eplgz 1305 | 1306 | s 1307 | r 1308 | r 1309 | a 1310 | 1311 | cohzy 1312 | zlyv 1313 | dfwuptbg 1314 | 1315 | ypjodgshuetcrlxfzv 1316 | tsrzlbgdpvqojueycfai 1317 | reopcljuysvtdgfmz 1318 | 1319 | n 1320 | fp 1321 | 1322 | tjdbzgfs 1323 | z 1324 | zreuvpqy 1325 | zpci 1326 | 1327 | noekg 1328 | gonek 1329 | eaogkn 1330 | oknge 1331 | 1332 | tkmxfod 1333 | domkft 1334 | kdtfmo 1335 | ktmdofy 1336 | 1337 | anode 1338 | aoke 1339 | voea 1340 | 1341 | ryhe 1342 | rhey 1343 | yerh 1344 | hyer 1345 | 1346 | ntabgs 1347 | bg 1348 | bg 1349 | 1350 | huktgwiosylrpdxjbcf 1351 | dfrixhluowksjbytp 1352 | sjhrolybpuwzxdikft 1353 | ysjhwokurbfptdlix 1354 | 1355 | bifxwln 1356 | xh 1357 | fwmsou 1358 | hmyuqwc 1359 | apkrjvegtd 1360 | 1361 | ezhytmakiwou 1362 | whmyptnuasodj 1363 | toruwaqmyxh 1364 | vgnyualodmthfw 1365 | whmuygato 1366 | 1367 | qk 1368 | mq 1369 | huqz 1370 | lq 1371 | 1372 | bejyhfndolxqt 1373 | axebjclthoqdniy 1374 | tnjbqyhwxdsel 1375 | lztqyfbvjkedhncx 1376 | 1377 | eqyfglxicuzdphjkvnmsoat 1378 | equwiagnvpjcbyfxorhdzsm 1379 | 1380 | msjyh 1381 | ymjh 1382 | yhmrj 1383 | uydjmhx 1384 | 1385 | xqbldatriuhm 1386 | rnbczjkgyow 1387 | rteib 1388 | 1389 | jkqnoawyvbreizsdp 1390 | zbsxirwpynkveoaqmjf 1391 | darzwpqijnbouekvsyh 1392 | kjipoehwbyqszvarn 1393 | ervysjwbpzanokiq 1394 | 1395 | npbehmoiswz 1396 | opinhmwszdb 1397 | howmbpsnzi 1398 | 1399 | rvpgdjaoc 1400 | opjdracvgh 1401 | cdvjgqaprno 1402 | 1403 | liegxqpjzmvrfdykbsncahwo 1404 | gnfhykipdxzwcbvlqeajmors 1405 | dqcjlfonayphbvkzsgrweimx 1406 | oglnszmehxfriyjkdvawbpqc 1407 | 1408 | pokiwqthmvfzadbjrucxglye 1409 | orzuptjqblnaedghvwciyx 1410 | 1411 | tw 1412 | ocdgpm 1413 | aj 1414 | jhuti 1415 | 1416 | pclrgmiefodu 1417 | bxvg 1418 | jzhngt 1419 | thgvsxnq 1420 | 1421 | duosnjqakwleh 1422 | kzjendahmlworqsu 1423 | suwlbjqkedonah 1424 | qwsjuaheknidol 1425 | lpjfaonekwiudhsq 1426 | 1427 | antqsypzmujbkihwclvg 1428 | rtqwhlzkasiyjubgmncv 1429 | qytmphkvbunijgzswacl 1430 | qumiyzsehadnckjtvwlbg 1431 | 1432 | sbec 1433 | sb 1434 | 1435 | puflvmxnwzcdqotirgejab 1436 | clwoqjmsgpurezfdivnxbta 1437 | qnfwizdgelvaoujspbmcxrt 1438 | lozmarwqjevbpgxtcifnud 1439 | adcqjwporbnvltfhgezuixm 1440 | 1441 | zfayukrmjv 1442 | xkveunzar 1443 | kevozrcanu 1444 | zuaowvrk 1445 | itvazgkrnue 1446 | 1447 | skocmigb 1448 | kgsimnbco 1449 | getuchifkqpbo 1450 | ogbcki 1451 | gvokbic 1452 | 1453 | frmzlsjgenowiuvdqka 1454 | svliznoqgdufjerwkam 1455 | kiyoafjmvdsnwlurzqge 1456 | gwrdfniuavqejxmplzsok 1457 | mwzqvaiedolksnrfhjgu 1458 | 1459 | kfluwecmzvnx 1460 | mefvkqcnuzxlwp 1461 | yvkeumnxlcfzw 1462 | kclfnzuvwemx 1463 | 1464 | kmgerotqfv 1465 | kgmevqrotf 1466 | vmqtofkreg 1467 | terkfvgomq 1468 | rqvofketmg 1469 | 1470 | akenjtzfbycvxgu 1471 | xhwnozegkubj 1472 | 1473 | tveuglsjwpfmq 1474 | lphsowtduefg 1475 | saeuptowfdcgl 1476 | 1477 | axqvchtd 1478 | xaqbkvct 1479 | taxiscvgnyq 1480 | zluqpxwavctjo 1481 | cvtafqx 1482 | 1483 | phowmcdy 1484 | ocdmhpw 1485 | pdmhowc 1486 | 1487 | ifakxsn 1488 | sixfkna 1489 | insxkfa 1490 | iknfxas 1491 | sfixkna 1492 | 1493 | jtsoef 1494 | osfwt 1495 | 1496 | flm 1497 | mf 1498 | 1499 | xh 1500 | xh 1501 | xjh 1502 | xh 1503 | 1504 | yvkxuiphbl 1505 | ivuxkhlpy 1506 | ukpxlhivy 1507 | 1508 | hgbz 1509 | z 1510 | z 1511 | z 1512 | 1513 | gvwfz 1514 | zvw 1515 | 1516 | dvs 1517 | vnesudy 1518 | 1519 | nmajxvozyhelpbt 1520 | avthblepmzjyonx 1521 | jzxevylaotbpnmh 1522 | ehxajptmlyndovbz 1523 | 1524 | knayxrlzgoiwjvsdh 1525 | lyrhgwenxsvjkiaozd 1526 | vrwdstgoqkjzahxnlyi 1527 | yanojxkrsvwzldihg 1528 | 1529 | ekcoubjlryfvdaqmztxnw 1530 | ethkxgdwvmjsconbifzpqra 1531 | 1532 | egcibkxu 1533 | bigxuekc 1534 | uxeikcgb 1535 | gkbcuxei 1536 | begukxic 1537 | 1538 | mvhcaezgbs 1539 | bmcegavh 1540 | ghevzuabcm 1541 | hsagcmbejvl 1542 | eabgrvmchyx 1543 | 1544 | meglpzdkqrsohf 1545 | yzhedarogbmql 1546 | rzmioqdyhengl 1547 | 1548 | tdosc 1549 | cstod 1550 | otdcs 1551 | 1552 | szxwv 1553 | xhns 1554 | 1555 | fsmvhdn 1556 | ldvsfh 1557 | hfskvd 1558 | sfdvh 1559 | chledfvs 1560 | 1561 | gdmwvnyqihtspbfcexrou 1562 | bumficazjrpgxynwldoqvt 1563 | 1564 | dyplaojbvhmtseiczkrn 1565 | zmihtdnpsbryoklcejav 1566 | zidcnhvmajteplkbsroy 1567 | hoyvemcnjrdbtalpzsik 1568 | lvbrejikdynxuozamhpsct 1569 | 1570 | ouqbsjwxadlftyhi 1571 | ofvuzqtxyihldjeswab 1572 | aotxfjwduqimsyhlb 1573 | bdoalxwhfjtysqiu 1574 | 1575 | ie 1576 | ec 1577 | se 1578 | 1579 | mnflwaopgbcvhxt 1580 | boqymvanthlxwcfg 1581 | faowzgvxcthbml 1582 | 1583 | jl 1584 | jl 1585 | jli 1586 | jl 1587 | 1588 | kxdpqbcgvuimw 1589 | wmpgidkxujc 1590 | wmgyxrupickd 1591 | kpdgwiumfxc 1592 | mxwicgrdukp 1593 | 1594 | jfsvrhqwpteckmuz 1595 | ltcqsdhjbauxikepwvr 1596 | jqtkwfhepcvrnus 1597 | hnqupekscvtrjwz 1598 | 1599 | tfzxdcs 1600 | zcdkx 1601 | 1602 | wiocksjvegyptdbnaml 1603 | inohseycvjpwdgtmak 1604 | jodxsiwmazkqvgcypnte 1605 | rigwopdtceymvasknj 1606 | nytbjmkcwpsgeofriaudv 1607 | 1608 | vghoqamjewufp 1609 | qevtoxkmagfdsw 1610 | xaeqgmwvocf 1611 | 1612 | cfkheaivnjqp 1613 | qdpnezv 1614 | loubwgsryxtm 1615 | 1616 | pgsdcueklha 1617 | wthpgvjf 1618 | qzyxbonr 1619 | 1620 | z 1621 | v 1622 | 1623 | mzlonai 1624 | djcfgnrkatuxl 1625 | qnlaie 1626 | bnpal 1627 | vanle 1628 | 1629 | qcszfvwlagrbniuo 1630 | bfrqzluigncswao 1631 | oacwngblqiusrzf 1632 | qrzbclnfswguoeai 1633 | noalwcsgfzirqbu 1634 | 1635 | bk 1636 | gbks 1637 | ukb 1638 | 1639 | opgkvynaqexmiublrsfwjthc 1640 | mbasfctuyerhqwvxgldnozk 1641 | 1642 | cdlnpxkqsbvhgemr 1643 | gdheqkmlnvbpsrwx 1644 | fmdnsrvghkebqxltp 1645 | rgszqbkemldxpnhv 1646 | 1647 | phociwjgq 1648 | inospahluxet 1649 | 1650 | qup 1651 | aln 1652 | 1653 | lk 1654 | l 1655 | 1656 | s 1657 | s 1658 | s 1659 | s 1660 | 1661 | pyucgnt 1662 | ynltgc 1663 | ycnugtd 1664 | ctqsngimyo 1665 | ycngt 1666 | 1667 | vchjzu 1668 | ujczh 1669 | chzju 1670 | czhju 1671 | jzuchi 1672 | 1673 | rdl 1674 | oljzkd 1675 | bdle 1676 | ldvb 1677 | drl 1678 | 1679 | ypaxs 1680 | ycxps 1681 | ysxp 1682 | pxsy 1683 | slypx 1684 | 1685 | dmeniwsrapqchtv 1686 | rbsizl 1687 | bxgrfusiyok 1688 | 1689 | qdbpuxghfelwjtzsomyiva 1690 | oiqhdzluajvtswekxp 1691 | xjnlaihstvpqudzweo 1692 | 1693 | tdzjxu 1694 | zjutdx 1695 | ztudxj 1696 | xdtjzu 1697 | 1698 | xd 1699 | dx 1700 | dx 1701 | dx 1702 | 1703 | notxgaqvpbyfje 1704 | raexdhikm 1705 | zalxdscewm 1706 | 1707 | tlhk 1708 | clg 1709 | yo 1710 | gcnzot 1711 | frveaxij 1712 | 1713 | riohxqt 1714 | hvdqts 1715 | vcqsdht 1716 | 1717 | mi 1718 | fw 1719 | ch 1720 | 1721 | mcfgtbsp 1722 | ekpgstc 1723 | 1724 | hugfk 1725 | adn 1726 | st 1727 | itno 1728 | cod 1729 | 1730 | btkzcna 1731 | czntbk 1732 | zkctbn 1733 | tbczkn 1734 | 1735 | yaisrtpjuhngmox 1736 | psjoatrgynzduh 1737 | 1738 | jxersuyobnqkathwpid 1739 | jsbeaixorpyqwhduktn 1740 | eidwbvyjpurnxkhotalsq 1741 | yorqhesaxiwjnudbktp 1742 | kunxwsytoijdqbaephr 1743 | 1744 | gpozmvuctyaljws 1745 | yfxzogtjmua 1746 | efbyznatgjorimu 1747 | ojgruzmqytah 1748 | 1749 | s 1750 | ezj 1751 | p 1752 | gdnmykaxo 1753 | irlp 1754 | 1755 | fakoitvqlwxumjcypnrbh 1756 | xoikwhmjevcrfblqptnuy 1757 | jhpixuvltyeqbokwcfrn 1758 | nxorwfctihpyldbjsvkuq 1759 | twrmbujavfcnxhiqolkpy 1760 | 1761 | gfcwqieompdtyluhz 1762 | gwhcoqtfelmzpyiu 1763 | tuyhinpflqcwomegz 1764 | owlckiyfpgzuqhtje 1765 | 1766 | knpagzftyjxcs 1767 | ptxakjnygf 1768 | nsyxafjtgukop 1769 | pkgjnrztevfya 1770 | qytdmbpwkfgajn 1771 | 1772 | yjuzgsvermfhotainbckd 1773 | ckbyoagrnmvfestihj 1774 | bgincyhfosvtkmejra 1775 | togvjersmynbfcihak 1776 | 1777 | wicho 1778 | ihokc 1779 | icohw 1780 | 1781 | buacxrg 1782 | xurabcg 1783 | uagbxrc 1784 | bxugcfar 1785 | uckxbgar 1786 | 1787 | fdjnxbgzky 1788 | xngyajkzd 1789 | yjozgnxkd 1790 | njxgzkaody 1791 | zodyjngxk 1792 | 1793 | pfuebk 1794 | ku 1795 | ku 1796 | uk 1797 | 1798 | ysgf 1799 | j 1800 | sgy 1801 | qb 1802 | mhe 1803 | 1804 | oygrdsel 1805 | lrysdke 1806 | dpyesiflrw 1807 | ydselr 1808 | pieyrsfjwld 1809 | 1810 | zpewx 1811 | ewxpcz 1812 | wepzx 1813 | 1814 | xyredbkszaicqolv 1815 | idqolxrbsyczea 1816 | iyrqdxcasezlbo 1817 | 1818 | ilqd 1819 | qlid 1820 | idulyq 1821 | 1822 | buwdolahxfrcnjsz 1823 | rfujabnwhx 1824 | ufrjpxnwahb 1825 | 1826 | abulqncx 1827 | ocxauqn 1828 | cznuqxak 1829 | 1830 | mhnyswie 1831 | omcbwyhefv 1832 | 1833 | pbrxtumijaqgdkwzvceonls 1834 | mkhgzbdvxwcirnpeujoaqtls 1835 | npcxyftmjzgsraoilbqekvwu 1836 | 1837 | dhiysqlbmjvoxf 1838 | ovxshjmfliqdy 1839 | zolsifhxvjyqmd 1840 | rnxdfvahmoyptjkieqgslu 1841 | 1842 | ibvnlah 1843 | lavuibnhzp 1844 | bahilvn 1845 | bilnhva 1846 | hilbvna 1847 | 1848 | voqfmayzbektjwui 1849 | iezmjtbovkwfu 1850 | vkwbeozfmtiju 1851 | 1852 | jaxetsymlnr 1853 | eakjrmynslx 1854 | mnajeysgxrl 1855 | marlnxejygs 1856 | gmnjaiselxry 1857 | 1858 | pyufthdvaqxngbk 1859 | nvhlbfjtwmdzsax 1860 | 1861 | icwsjyfge 1862 | wyjfgeci 1863 | 1864 | dut 1865 | tu 1866 | ugt 1867 | bhtu 1868 | 1869 | g 1870 | g 1871 | fgtohm 1872 | g 1873 | 1874 | ozagcvu 1875 | xqsfjgzouc 1876 | zoucgm 1877 | mzcugto 1878 | 1879 | qujrhkixfslameon 1880 | ukdmpgeshrxnzj 1881 | 1882 | excbvslqhad 1883 | zjotgsyenurp 1884 | 1885 | jrqiwlcz 1886 | cerwlizh 1887 | wlpndrbci 1888 | 1889 | gjstrhckqnw 1890 | rntqjskhcwg 1891 | thckgwjnrsq 1892 | qcrstwkhnjg 1893 | wcsknqgrtjh 1894 | 1895 | wmcfgezspqdha 1896 | kgswzfdqbmcrnehp 1897 | hwdztacemgfspq 1898 | ywehgqcfsdmzp 1899 | yhcdgpzqsfmwex 1900 | 1901 | okyxslua 1902 | 1903 | gpioxhjkdbqlzsey 1904 | gkebjhyzxlqso 1905 | lbejqzxhyokgs 1906 | seoyjgqzlxhbrk 1907 | qblxvhejygskoz 1908 | 1909 | zgl 1910 | gvlzn 1911 | gzl 1912 | ldgz 1913 | 1914 | us 1915 | us 1916 | musql 1917 | us 1918 | us 1919 | 1920 | uhv 1921 | hvu 1922 | vhu 1923 | hruv 1924 | huv 1925 | 1926 | oaxt 1927 | ptdghjq 1928 | 1929 | xgvmr 1930 | vzgxemrj 1931 | rvxglm 1932 | xcrmgvl 1933 | 1934 | glb 1935 | lgb 1936 | wgble 1937 | 1938 | kngvreujcafyblwxpqi 1939 | pqufgkwayxejlvnbci 1940 | xcekdwlpyjqbfgvahuin 1941 | ujxanebwlmrfpivqykgc 1942 | slaputxbcwfgyjoevnqizk 1943 | 1944 | lyvfakznbuw 1945 | olfkrsbp 1946 | xojfmqlhbpk 1947 | 1948 | hax 1949 | jp 1950 | nmf 1951 | eh 1952 | awi 1953 | 1954 | q 1955 | nxmch 1956 | k 1957 | q 1958 | k 1959 | 1960 | dch 1961 | dh 1962 | djgh 1963 | 1964 | cmtpfzibwqkg 1965 | cgkwtiqzbpm 1966 | 1967 | zksd 1968 | dzekascj 1969 | zhikpgru 1970 | kyoz 1971 | 1972 | py 1973 | tpy 1974 | yp 1975 | 1976 | hkbuqicdzretsxvmgoa 1977 | mdgfwnyvtlqpecrak 1978 | 1979 | jc 1980 | cjv 1981 | jc 1982 | cj 1983 | jc 1984 | 1985 | dtalrc 1986 | dlct 1987 | mdchlt 1988 | ctld 1989 | cadtlr 1990 | 1991 | ostayzjxpilrcuebngvwdmkfqh 1992 | udgxyozfepsncwbhqvlikarjmt 1993 | bcaiurltfjqedgpsmzvkwyxhon 1994 | isawcgvmdyjhtbpnfoluxezrqk 1995 | ndrtewqcbmuovigpsyzxkfhjal 1996 | 1997 | w 1998 | mz 1999 | z 2000 | p 2001 | m 2002 | 2003 | ilmdn 2004 | dsilum 2005 | 2006 | swaorjlgbevdmcftqy 2007 | whgxuakfpitvonqmz 2008 | 2009 | odmuanyzbjekhrl 2010 | gwlzhamukeoby 2011 | huoyavkmblez 2012 | 2013 | ctsauv 2014 | tubvcg 2015 | huczavt 2016 | 2017 | gtljuexfiopmdhnczsaw 2018 | gjypnkrhsdxlumziea 2019 | 2020 | zdrsfectygwjviob 2021 | qobcjzmrthpygdvewi 2022 | iatxzgldynjbvkwo 2023 | 2024 | emknygaiptjlwozxc 2025 | cewyziltojnphkxga 2026 | xfkizjnaepytcsgwol 2027 | 2028 | cxvdkfn 2029 | uxwtf 2030 | 2031 | hd 2032 | d 2033 | d 2034 | d 2035 | 2036 | uqzhkesytb 2037 | zsktbuhyieq 2038 | ybhqzsekjaut 2039 | hztybeuksq 2040 | kubyqehtsz 2041 | 2042 | r 2043 | e 2044 | w 2045 | 2046 | sgqnzlp 2047 | nqlfsg 2048 | uengqdcl 2049 | gyflsqtn 2050 | fmglnq 2051 | 2052 | rokebxmfy 2053 | btemfy 2054 | byfkeagvt 2055 | bynfdezsh 2056 | ebfyir 2057 | 2058 | aqpmvyefrdwongujs 2059 | jvmnwyuadefqrgsp 2060 | uvgaqrfydsjwnemp 2061 | lvcdbwuaesqzgmyjnpfr 2062 | 2063 | rgcbejutw 2064 | gjebwr 2065 | gbjrwe 2066 | 2067 | wnucbkymsxirfovhaezpltdq 2068 | fqmwrtynzohbxkspdviealcu 2069 | rdhseiqycpfztvlnmxboauwk 2070 | drualzqxiykobhecswptnmfv 2071 | sevolnphmryaxwdfqkuctbiz 2072 | 2073 | kxesgvrpfatzomncu 2074 | poynusfktagrzmvxe 2075 | taszrmefonwukpvgx 2076 | nzvkyepsfxramuhtog 2077 | 2078 | x 2079 | z 2080 | 2081 | mqf 2082 | fqm 2083 | fmq 2084 | 2085 | plqknez 2086 | znrucvosqe 2087 | ewzqnak 2088 | jaqzednl 2089 | 2090 | mvfsz 2091 | v 2092 | su 2093 | getnakyh 2094 | x 2095 | 2096 | jdvrwyizulgthfacpb 2097 | zkhmsyaxwoebcdpngtrfj 2098 | 2099 | zhd 2100 | dhz 2101 | 2102 | vqidfwokxbhzatslcn 2103 | wcbzgfutloskarvxnhe 2104 | 2105 | rhds 2106 | rtp 2107 | nlrfsh 2108 | 2109 | stqk 2110 | owtksmq 2111 | kstzq 2112 | sqtk 2113 | 2114 | kjunerphs 2115 | hnjskeu 2116 | sehdjkoun 2117 | snheujkt 2118 | uknjesh 2119 | 2120 | syelrcmhftj 2121 | mbvtofei 2122 | bpeftmvd 2123 | zfxnpteom 2124 | efoztm 2125 | 2126 | ih 2127 | hi 2128 | hi 2129 | 2130 | ypiaz 2131 | piay 2132 | yapiov 2133 | ypeia 2134 | apiy 2135 | 2136 | lvriun 2137 | vinul 2138 | vlin 2139 | vzldni 2140 | 2141 | rwkvyshp 2142 | uwasr 2143 | 2144 | bxpgfq 2145 | pyqgrbf 2146 | bpfhqg 2147 | qpfcbxg 2148 | pbgfq 2149 | 2150 | zvtcugahijyenw 2151 | lvngtcduirwjakzm 2152 | 2153 | fpqbrzjimtdlwnvchy 2154 | bjpzmwytcvhildqnfr 2155 | dzqmcflinbprjtvwyh 2156 | whytcnjilqfvzdbprm 2157 | 2158 | iwfpka 2159 | ipfwa 2160 | imfwap 2161 | 2162 | hjuyc 2163 | mlwjv 2164 | 2165 | ulpjhvsnbztfiqe 2166 | nlhbqteupzio 2167 | inzepqhbtlu 2168 | hmbztrcliquenpd 2169 | 2170 | fjxgrhpeozl 2171 | rholfeu 2172 | rlqochfe 2173 | eflroqh 2174 | ofrhle 2175 | 2176 | rowfxmt 2177 | f 2178 | fp 2179 | ijf 2180 | 2181 | zqbokvdhw 2182 | zvohebqgw 2183 | howvprmjztlnqbu 2184 | vgqbzoewha 2185 | 2186 | dtwf 2187 | wvtfd 2188 | fwtd 2189 | wtfd 2190 | ftdw 2191 | 2192 | tdmzifqp 2193 | tzpiqdmf 2194 | zftpdqim 2195 | 2196 | lgv 2197 | qhl 2198 | ljyaxzwocmbrk 2199 | nls 2200 | npuld 2201 | 2202 | zuol 2203 | vo 2204 | oxnykdec 2205 | oulmz 2206 | 2207 | uoevmcpgyixrflwtasjhqzn 2208 | elpcxtgmvjiynfowzuashqr 2209 | 2210 | v 2211 | l 2212 | c 2213 | l 2214 | 2215 | fuz 2216 | ufz 2217 | zuf 2218 | fzu 2219 | 2220 | zgfhiodeybckqxp 2221 | tiquwkmeaxcp 2222 | gzieqkpjhxnc 2223 | 2224 | dlpcyjzfhekuiqgom 2225 | khpgieujcfmoylqdrz 2226 | uqeckojzfimyldhrgp 2227 | ciyqmlapgfjduehzko 2228 | fijhqmkeucgzwdploy 2229 | 2230 | odqthnlcgsu 2231 | csprkbo 2232 | cebzso 2233 | cswbero 2234 | 2235 | fsph 2236 | psh 2237 | psh 2238 | phsiju 2239 | 2240 | tgrwxaqibelzhm 2241 | jynqdvfo 2242 | cjuqopnk 2243 | 2244 | iheu 2245 | uih 2246 | 2247 | rjyqhauivsoz 2248 | srvcnahokuq 2249 | 2250 | i 2251 | kon 2252 | 2253 | tgvukpcxnory 2254 | fxuhsmeativp 2255 | 2256 | kvyha 2257 | vykah 2258 | hkvya 2259 | hyvak 2260 | 2261 | lpahrbqe 2262 | hlrpqbwe 2263 | 2264 | ndtoxjfsp 2265 | tvjdeoxlp 2266 | phxasrotjdn 2267 | 2268 | vcpzksneyxfo 2269 | uevyhslzcpxgt 2270 | 2271 | wpxvmnghz 2272 | vmxphwz 2273 | hvwxzkmp 2274 | 2275 | usvdwyomecfip 2276 | suweomifpvcdy 2277 | csiuwmvdpfeyo 2278 | mosdfwuyeivcp 2279 | ycupmidwofsve 2280 | 2281 | hlqbanmtjy 2282 | tdrvxcajgnfpoke 2283 | jtiunkpsroa 2284 | -------------------------------------------------------------------------------- /7/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | input = lib.splitString "\n" (lib.fileContents ./input); 5 | 6 | parseLine = line: 7 | let 8 | mainMatch = builtins.match "([a-z]+ [a-z]+) bags contain (.*)\\." line; 9 | color = lib.elemAt mainMatch 0; 10 | subs = lib.splitString ", " (lib.elemAt mainMatch 1); 11 | subMatches = lib.listToAttrs (lib.concatMap (sub: 12 | let subMatch = builtins.match "([0-9]+) ([a-z]+ [a-z]+) bags?" sub; 13 | in if subMatch == null then [] else [ 14 | (lib.nameValuePair (lib.elemAt subMatch 1) (lib.toInt (lib.elemAt subMatch 0))) 15 | ]) subs); 16 | in lib.nameValuePair color subMatches; 17 | 18 | parsedInput = lib.listToAttrs (map parseLine input); 19 | 20 | canContainShinyGold = lib.mapAttrs (name: subs: 21 | lib.any (sub: sub == "shiny gold" || canContainShinyGold.${sub}) (lib.attrNames subs) 22 | ) parsedInput; 23 | 24 | part1 = lib.length (lib.filter lib.id (lib.attrValues canContainShinyGold)); 25 | 26 | bagCount = lib.mapAttrs (name: subs: 27 | lib.foldl' (acc: sub: let value = subs.${sub}; in 28 | acc + value + value * bagCount.${sub} 29 | ) 0 (lib.attrNames subs) 30 | ) parsedInput; 31 | 32 | part2 = bagCount."shiny gold"; 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /8/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | parseLine = line: 5 | let 6 | m = builtins.match "(...) (.)([0-9]+)" line; 7 | num = lib.toInt (lib.elemAt m 2); 8 | in { 9 | operation = lib.elemAt m 0; 10 | argument = if lib.elemAt m 1 == "+" then num else -num; 11 | __toString = self: "${self.operation} ${toString self.argument}"; 12 | }; 13 | 14 | input = map parseLine (lib.splitString "\n" (lib.fileContents ./input)); 15 | 16 | initialState = { 17 | # program counter 18 | programCounter = 0; 19 | # Instructions that were already executed 20 | instructionSet = {}; 21 | accumulator = 0; 22 | }; 23 | 24 | stateTransform = program: state: 25 | let 26 | instruction = lib.elemAt program state.programCounter; 27 | baseState = { 28 | programCounter = state.programCounter + 1; 29 | instructionSet = state.instructionSet // { 30 | ${toString state.programCounter} = null; 31 | }; 32 | accumulator = state.accumulator; 33 | }; 34 | 35 | nextState = builtins.trace (toString instruction) { 36 | acc = baseState // { 37 | accumulator = state.accumulator + instruction.argument; 38 | }; 39 | jmp = baseState // { 40 | programCounter = state.programCounter + instruction.argument; 41 | }; 42 | nop = baseState; 43 | }.${instruction.operation}; 44 | 45 | in if state.programCounter >= lib.length input then state // { result = "end-of-program"; } 46 | else if state.instructionSet ? ${toString state.programCounter} then state // { result = "infinite-loop"; } 47 | else builtins.trace (showState state) nextState; 48 | 49 | iterateUntilRecursive = cond: trans: 50 | let 51 | go = state: 52 | if cond state then state 53 | else go (trans state); 54 | in go; 55 | 56 | # Like iterateUntilRecursive, but doesn't suffer from stack overflow problems 57 | # While not necessary for this challenge, might be useful elsewhere 58 | iterateUntil = cond: trans: 59 | let 60 | iterateUntilN = n: state: lib.foldl' (state: _: 61 | if cond state then state else trans state 62 | ) state (lib.genList throw n); 63 | 64 | go = n: state: 65 | if cond state then state 66 | else go (n * 2) (iterateUntilN n state); 67 | in go 1; 68 | 69 | 70 | showState = state: "(pc: ${toString state.programCounter}; acc: ${toString state.accumulator})"; 71 | 72 | runProgram = program: iterateUntil (state: state ? result) (stateTransform program) initialState; 73 | 74 | part1 = (runProgram input).accumulator; 75 | 76 | endResultForChangedN = n: 77 | let 78 | oldInstruction = lib.elemAt input n; 79 | newInstruction = oldInstruction // { 80 | operation = if oldInstruction.operation == "nop" then "jmp" else "nop"; 81 | __toString = self: oldInstruction.__toString self + " (changed)"; 82 | }; 83 | newProgram = lib.take n input ++ [ newInstruction ] ++ lib.drop (n + 1) input; 84 | programResult = runProgram newProgram; 85 | in 86 | if oldInstruction.operation == "acc" then null 87 | else if programResult.result == "infinite-loop" then null 88 | else programResult.accumulator; 89 | 90 | part2 = lib.foldl' (acc: n: if acc != null then acc else endResultForChangedN n) null (lib.genList lib.id (lib.length input)); 91 | } 92 | -------------------------------------------------------------------------------- /8/input: -------------------------------------------------------------------------------- 1 | acc +6 2 | acc +21 3 | nop +297 4 | jmp +2 5 | jmp +156 6 | acc -7 7 | acc +6 8 | acc -16 9 | acc +14 10 | jmp +127 11 | acc +8 12 | acc -16 13 | acc +48 14 | nop +189 15 | jmp +214 16 | acc +20 17 | acc +25 18 | acc +3 19 | acc +10 20 | jmp +571 21 | acc -7 22 | acc -16 23 | acc +29 24 | acc +24 25 | jmp +346 26 | acc +1 27 | acc -11 28 | acc -14 29 | acc +14 30 | jmp +18 31 | acc -5 32 | acc +22 33 | jmp +351 34 | acc +13 35 | acc +6 36 | nop -2 37 | acc +20 38 | jmp +405 39 | acc +13 40 | acc +40 41 | jmp +265 42 | acc +32 43 | acc -3 44 | acc +13 45 | acc +9 46 | jmp +175 47 | jmp +237 48 | nop +113 49 | jmp +127 50 | acc -10 51 | acc +49 52 | nop -36 53 | acc +17 54 | jmp +156 55 | nop +181 56 | jmp +419 57 | acc +11 58 | jmp +1 59 | acc +49 60 | nop +187 61 | jmp +427 62 | nop +568 63 | acc -14 64 | nop +481 65 | acc +47 66 | jmp +163 67 | jmp +309 68 | jmp +410 69 | acc +23 70 | acc -17 71 | nop +229 72 | acc -4 73 | jmp +538 74 | acc -12 75 | jmp +200 76 | acc +35 77 | acc +22 78 | acc -14 79 | acc +46 80 | jmp +388 81 | acc +20 82 | acc +15 83 | acc +0 84 | acc +26 85 | jmp +197 86 | jmp +267 87 | acc +33 88 | jmp -82 89 | acc +44 90 | acc -19 91 | jmp +42 92 | acc +14 93 | jmp +1 94 | jmp +263 95 | acc -18 96 | jmp +80 97 | acc -12 98 | jmp +248 99 | acc +0 100 | acc +44 101 | acc +6 102 | jmp +134 103 | jmp +1 104 | acc +2 105 | acc +38 106 | jmp +40 107 | acc +30 108 | acc -1 109 | jmp +141 110 | jmp +1 111 | jmp +460 112 | nop +241 113 | acc +34 114 | acc +35 115 | jmp +1 116 | jmp -6 117 | nop +172 118 | acc +6 119 | nop +299 120 | jmp +298 121 | acc +20 122 | nop +52 123 | acc +47 124 | acc +32 125 | jmp +293 126 | acc +22 127 | acc -4 128 | jmp +417 129 | acc -8 130 | jmp +276 131 | jmp +452 132 | jmp +381 133 | acc +0 134 | nop -79 135 | jmp +101 136 | jmp +253 137 | acc +30 138 | acc +42 139 | acc +21 140 | jmp +231 141 | acc +35 142 | acc +20 143 | acc -10 144 | acc -19 145 | jmp +173 146 | jmp +2 147 | jmp -16 148 | acc -8 149 | acc +47 150 | acc -9 151 | acc +11 152 | jmp -35 153 | acc -2 154 | jmp +121 155 | acc -16 156 | acc -19 157 | acc +47 158 | acc +34 159 | jmp -11 160 | jmp +34 161 | acc +40 162 | acc -3 163 | acc -18 164 | nop +359 165 | jmp +9 166 | acc +26 167 | jmp +117 168 | acc -8 169 | acc -14 170 | jmp +1 171 | jmp +123 172 | nop +117 173 | jmp -63 174 | jmp +13 175 | jmp +227 176 | acc +41 177 | jmp +207 178 | nop -86 179 | acc +37 180 | acc -15 181 | jmp +55 182 | acc +24 183 | acc +8 184 | jmp +1 185 | jmp +79 186 | jmp +270 187 | jmp -125 188 | jmp +214 189 | jmp +100 190 | acc -8 191 | acc -19 192 | acc +23 193 | jmp -167 194 | nop -18 195 | acc -14 196 | acc +19 197 | nop +291 198 | jmp +361 199 | acc +25 200 | acc +21 201 | nop +99 202 | jmp +229 203 | nop +228 204 | acc +4 205 | acc +24 206 | jmp -12 207 | jmp +1 208 | acc +26 209 | jmp +75 210 | acc +22 211 | nop +105 212 | acc +46 213 | acc -8 214 | jmp -81 215 | acc +46 216 | jmp -168 217 | acc +14 218 | jmp -57 219 | acc -13 220 | jmp +137 221 | nop +362 222 | acc +28 223 | jmp +352 224 | acc +8 225 | acc +21 226 | acc +30 227 | acc +13 228 | jmp -91 229 | acc +39 230 | jmp +296 231 | acc +27 232 | acc +16 233 | acc +5 234 | acc +48 235 | jmp -6 236 | nop -210 237 | acc +29 238 | acc +47 239 | jmp -78 240 | jmp +228 241 | acc +13 242 | acc -11 243 | acc +3 244 | jmp +96 245 | acc +0 246 | jmp +313 247 | acc +30 248 | jmp +251 249 | jmp +203 250 | nop -202 251 | nop -177 252 | acc -17 253 | acc +30 254 | jmp -128 255 | jmp +227 256 | nop +84 257 | acc +21 258 | acc +3 259 | jmp -18 260 | acc +33 261 | nop -128 262 | nop +368 263 | jmp -87 264 | acc +30 265 | jmp +88 266 | acc -3 267 | acc +17 268 | jmp +63 269 | acc +37 270 | acc -13 271 | jmp +340 272 | jmp +1 273 | acc +11 274 | jmp +325 275 | jmp -58 276 | acc +43 277 | jmp +23 278 | jmp +157 279 | acc +35 280 | acc +10 281 | jmp +25 282 | jmp +124 283 | jmp -109 284 | nop +40 285 | jmp +183 286 | acc +46 287 | acc +37 288 | jmp +88 289 | acc -8 290 | jmp +162 291 | acc +4 292 | acc +22 293 | jmp +220 294 | acc +32 295 | jmp -214 296 | acc +3 297 | nop -56 298 | acc +30 299 | jmp -138 300 | acc +22 301 | jmp +329 302 | acc +12 303 | nop +115 304 | acc +38 305 | jmp -231 306 | acc +9 307 | jmp +1 308 | acc +25 309 | acc +47 310 | jmp +329 311 | acc +14 312 | nop +220 313 | acc -19 314 | acc -19 315 | jmp +225 316 | jmp -248 317 | jmp +249 318 | jmp -231 319 | nop -30 320 | acc +26 321 | acc +32 322 | acc +12 323 | jmp +190 324 | acc +4 325 | jmp -251 326 | acc +20 327 | nop -27 328 | acc +20 329 | acc +16 330 | jmp -41 331 | acc +21 332 | acc +45 333 | acc +24 334 | jmp -65 335 | acc +39 336 | acc -9 337 | acc -12 338 | acc +23 339 | jmp -50 340 | acc +49 341 | nop -105 342 | acc +17 343 | jmp +180 344 | acc +14 345 | jmp +238 346 | acc +1 347 | nop -285 348 | acc +26 349 | acc -15 350 | jmp +216 351 | nop -95 352 | jmp +60 353 | jmp -261 354 | acc +49 355 | acc +31 356 | jmp +210 357 | jmp +1 358 | acc -5 359 | jmp -304 360 | acc +48 361 | acc +0 362 | nop +2 363 | jmp -347 364 | acc +50 365 | jmp +148 366 | acc +5 367 | nop -193 368 | acc -5 369 | acc +0 370 | jmp +221 371 | acc +39 372 | acc -14 373 | jmp +39 374 | acc +24 375 | jmp -100 376 | acc +0 377 | acc -16 378 | acc +4 379 | jmp -190 380 | acc +21 381 | acc -2 382 | acc -16 383 | jmp +162 384 | jmp +28 385 | acc +26 386 | acc +19 387 | acc -5 388 | jmp -362 389 | acc -16 390 | nop -6 391 | jmp -223 392 | jmp +101 393 | acc -7 394 | acc -10 395 | acc -16 396 | jmp -146 397 | nop +126 398 | acc -18 399 | acc +25 400 | nop -232 401 | jmp +61 402 | jmp -86 403 | acc -9 404 | nop -20 405 | jmp -318 406 | jmp -90 407 | nop -315 408 | acc +33 409 | acc +0 410 | acc +18 411 | jmp +41 412 | jmp +1 413 | jmp +8 414 | acc +4 415 | acc +13 416 | acc -19 417 | jmp -128 418 | acc +46 419 | jmp -322 420 | jmp -404 421 | acc -3 422 | acc +24 423 | acc +5 424 | nop +159 425 | jmp -322 426 | acc -10 427 | acc -18 428 | acc +42 429 | acc +44 430 | jmp -130 431 | acc -4 432 | acc +4 433 | jmp -302 434 | jmp +18 435 | acc -3 436 | acc -18 437 | acc +29 438 | acc +36 439 | jmp -405 440 | acc +15 441 | nop +91 442 | jmp +98 443 | acc -14 444 | nop +88 445 | acc +16 446 | jmp +86 447 | acc -14 448 | acc +20 449 | acc -10 450 | nop -7 451 | jmp +81 452 | jmp +74 453 | acc +3 454 | acc +18 455 | jmp -294 456 | acc +16 457 | jmp -173 458 | nop +65 459 | acc +31 460 | acc -14 461 | jmp -77 462 | acc +16 463 | nop -415 464 | jmp -33 465 | acc +41 466 | nop -398 467 | jmp +46 468 | acc +50 469 | acc +7 470 | acc -19 471 | nop -15 472 | jmp -317 473 | acc +38 474 | jmp -298 475 | acc -3 476 | jmp -273 477 | jmp -120 478 | nop +10 479 | acc +26 480 | jmp +39 481 | jmp -348 482 | nop -204 483 | acc +0 484 | acc +0 485 | nop -179 486 | jmp -208 487 | jmp -52 488 | nop -299 489 | acc +36 490 | acc +14 491 | jmp +108 492 | jmp -476 493 | jmp -283 494 | acc +31 495 | acc +33 496 | acc +32 497 | acc -13 498 | jmp -295 499 | acc +42 500 | acc +27 501 | jmp -112 502 | acc +37 503 | acc +22 504 | acc +34 505 | jmp -236 506 | acc -2 507 | acc +33 508 | nop +75 509 | nop -503 510 | jmp -146 511 | nop -324 512 | jmp -148 513 | acc +39 514 | jmp -112 515 | acc +32 516 | acc -15 517 | acc -5 518 | jmp +8 519 | acc +30 520 | jmp -196 521 | acc +5 522 | jmp -361 523 | acc +29 524 | jmp -153 525 | jmp -26 526 | jmp -344 527 | acc +39 528 | acc +25 529 | nop -153 530 | acc +34 531 | jmp -79 532 | nop -97 533 | nop -90 534 | acc +21 535 | acc -16 536 | jmp +4 537 | acc +41 538 | jmp +1 539 | jmp -233 540 | acc +37 541 | jmp -235 542 | acc +41 543 | acc +44 544 | jmp -12 545 | nop +1 546 | acc -18 547 | jmp +74 548 | acc +49 549 | nop -30 550 | acc -17 551 | jmp -364 552 | acc -13 553 | acc +50 554 | jmp -223 555 | nop -507 556 | acc +17 557 | acc +2 558 | jmp -302 559 | acc +29 560 | jmp -8 561 | acc +33 562 | nop -514 563 | acc +15 564 | acc +31 565 | jmp -189 566 | nop -98 567 | acc +47 568 | acc +21 569 | jmp -322 570 | jmp -77 571 | jmp -555 572 | acc +44 573 | nop -142 574 | jmp -96 575 | acc +45 576 | acc +44 577 | nop -121 578 | jmp -322 579 | acc +35 580 | acc +48 581 | acc +0 582 | jmp -393 583 | jmp +1 584 | acc +0 585 | nop -356 586 | jmp -512 587 | acc +31 588 | acc -10 589 | acc +37 590 | jmp -71 591 | acc +25 592 | acc -8 593 | jmp -200 594 | acc -7 595 | acc -12 596 | acc +0 597 | acc -16 598 | jmp -369 599 | acc +14 600 | acc +11 601 | acc +35 602 | jmp -510 603 | jmp -472 604 | acc +39 605 | acc +27 606 | acc +50 607 | nop -360 608 | jmp -498 609 | acc +13 610 | jmp -500 611 | acc -17 612 | acc +11 613 | acc +10 614 | acc +7 615 | jmp -11 616 | acc +6 617 | acc +30 618 | acc +25 619 | acc -19 620 | jmp -373 621 | acc -4 622 | acc +19 623 | nop -329 624 | jmp -582 625 | acc +11 626 | acc +26 627 | acc -1 628 | acc +35 629 | jmp -548 630 | nop -59 631 | nop -576 632 | acc +27 633 | jmp -145 634 | acc -7 635 | acc +41 636 | nop -272 637 | acc +35 638 | jmp -170 639 | acc -6 640 | acc -4 641 | acc +33 642 | acc +33 643 | jmp +1 644 | -------------------------------------------------------------------------------- /9/default.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | lib = import ~/src/nixpkgs/lib; 3 | 4 | input = map lib.toInt (lib.splitString "\n" (lib.fileContents ./input)); 5 | 6 | check = list: start: length: number: 7 | let 8 | set = lib.listToAttrs (lib.genList (n: lib.nameValuePair (toString (lib.elemAt list (start + n))) null) length); 9 | inverseSet = lib.listToAttrs (lib.genList (n: lib.nameValuePair (toString (number - lib.elemAt list (start + n))) null) length); 10 | in builtins.trace "Checking with start ${toString start}, length ${toString length} and number ${toString number}" builtins.intersectAttrs set inverseSet != {}; 11 | 12 | checkList = list: length: lib.genList (n: 13 | let number = lib.elemAt list (n + length); 14 | in { 15 | inherit number; 16 | success = check list n length number; 17 | } 18 | ) (lib.length list - length); 19 | 20 | part1 = (lib.findFirst (n: ! n.success) (throw "No non-successes") (checkList input 25)).number; 21 | 22 | prefixSums = list: 23 | let result = lib.genList (n: (if n == 0 then 0 else lib.elemAt result (n - 1)) + lib.elemAt list n) (lib.length list); 24 | in result; 25 | 26 | result = 27 | let 28 | p = prefixSums input; 29 | p' = map (n: n - part1) p; 30 | s = lib.listToAttrs (lib.genList (n: lib.nameValuePair (toString (lib.elemAt p n)) n) (lib.length p)); 31 | s' = lib.listToAttrs (lib.genList (n: lib.nameValuePair (toString (lib.elemAt p' n)) n) (lib.length p')); 32 | name = lib.elemAt (lib.attrNames (lib.filterAttrs (n: v: s'.${n} - s.${n} != 1) (builtins.intersectAttrs s s'))) 0; 33 | range = lib.sort (a: b: a < b) (lib.sublist (s.${name} + 1) (s'.${name} - s.${name}) input); 34 | result = lib.head range + lib.last range; 35 | in result; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /9/input: -------------------------------------------------------------------------------- 1 | 12 2 | 36 3 | 37 4 | 31 5 | 33 6 | 25 7 | 48 8 | 39 9 | 6 10 | 7 11 | 23 12 | 41 13 | 21 14 | 13 15 | 8 16 | 14 17 | 29 18 | 43 19 | 10 20 | 17 21 | 16 22 | 42 23 | 3 24 | 11 25 | 19 26 | 9 27 | 56 28 | 12 29 | 15 30 | 61 31 | 18 32 | 58 33 | 20 34 | 22 35 | 24 36 | 25 37 | 27 38 | 23 39 | 21 40 | 13 41 | 49 42 | 28 43 | 14 44 | 26 45 | 29 46 | 17 47 | 33 48 | 63 49 | 30 50 | 31 51 | 85 52 | 32 53 | 34 54 | 35 55 | 40 56 | 46 57 | 36 58 | 37 59 | 41 60 | 38 61 | 39 62 | 42 63 | 91 64 | 27 65 | 76 66 | 43 67 | 45 68 | 82 69 | 66 70 | 52 71 | 44 72 | 65 73 | 61 74 | 57 75 | 71 76 | 100 77 | 59 78 | 62 79 | 109 80 | 112 81 | 70 82 | 80 83 | 86 84 | 68 85 | 69 86 | 72 87 | 79 88 | 84 89 | 120 90 | 87 91 | 88 92 | 102 93 | 96 94 | 111 95 | 101 96 | 103 97 | 116 98 | 118 99 | 119 100 | 129 101 | 121 102 | 127 103 | 150 104 | 137 105 | 138 106 | 168 107 | 140 108 | 156 109 | 253 110 | 200 111 | 159 112 | 180 113 | 171 114 | 184 115 | 175 116 | 189 117 | 203 118 | 246 119 | 204 120 | 217 121 | 221 122 | 234 123 | 259 124 | 248 125 | 250 126 | 258 127 | 455 128 | 275 129 | 277 130 | 278 131 | 296 132 | 299 133 | 336 134 | 330 135 | 334 136 | 376 137 | 346 138 | 378 139 | 359 140 | 379 141 | 536 142 | 564 143 | 533 144 | 829 145 | 467 146 | 1069 147 | 689 148 | 498 149 | 609 150 | 791 151 | 735 152 | 844 153 | 552 154 | 555 155 | 675 156 | 642 157 | 680 158 | 664 159 | 867 160 | 832 161 | 1003 162 | 705 163 | 737 164 | 877 165 | 846 166 | 1173 167 | 1535 168 | 1324 169 | 965 170 | 1313 171 | 1050 172 | 1441 173 | 1107 174 | 1273 175 | 1194 176 | 1583 177 | 1197 178 | 1870 179 | 1260 180 | 1306 181 | 1797 182 | 1344 183 | 1678 184 | 2127 185 | 1442 186 | 1997 187 | 2320 188 | 1614 189 | 1723 190 | 1811 191 | 2301 192 | 2159 193 | 4098 194 | 2015 195 | 2586 196 | 2470 197 | 2304 198 | 2367 199 | 3607 200 | 2811 201 | 3501 202 | 2457 203 | 2566 204 | 2604 205 | 4117 206 | 2786 207 | 6568 208 | 3056 209 | 4281 210 | 6703 211 | 3773 212 | 3337 213 | 3629 214 | 5372 215 | 4319 216 | 6418 217 | 6276 218 | 4382 219 | 4581 220 | 4671 221 | 9070 222 | 4908 223 | 7173 224 | 5023 225 | 6839 226 | 5513 227 | 5061 228 | 5170 229 | 8011 230 | 7067 231 | 5842 232 | 8245 233 | 9142 234 | 7948 235 | 6966 236 | 11582 237 | 9841 238 | 8210 239 | 9579 240 | 8900 241 | 8963 242 | 9732 243 | 16911 244 | 15121 245 | 9694 246 | 10865 247 | 10231 248 | 14864 249 | 10574 250 | 10683 251 | 12808 252 | 16974 253 | 11012 254 | 12909 255 | 23491 256 | 25986 257 | 18105 258 | 14914 259 | 15176 260 | 15929 261 | 17110 262 | 17173 263 | 20597 264 | 17863 265 | 18594 266 | 19646 267 | 19426 268 | 19925 269 | 30772 270 | 20268 271 | 20805 272 | 46583 273 | 23820 274 | 37770 275 | 25597 276 | 23921 277 | 25926 278 | 45686 279 | 33039 280 | 30090 281 | 30843 282 | 35278 283 | 32024 284 | 40193 285 | 33102 286 | 50269 287 | 35767 288 | 36457 289 | 38668 290 | 52748 291 | 39072 292 | 39694 293 | 47741 294 | 67860 295 | 49417 296 | 88085 297 | 57023 298 | 62993 299 | 128278 300 | 101661 301 | 91416 302 | 56016 303 | 161317 304 | 60933 305 | 89963 306 | 62867 307 | 123440 308 | 69559 309 | 73295 310 | 151078 311 | 72224 312 | 74435 313 | 110892 314 | 89111 315 | 78766 316 | 86813 317 | 112284 318 | 97158 319 | 123926 320 | 105433 321 | 113039 322 | 118883 323 | 116949 324 | 133157 325 | 123800 326 | 125575 327 | 128240 328 | 165579 329 | 244049 330 | 132426 331 | 147730 332 | 197221 333 | 175924 334 | 231922 335 | 146659 336 | 161335 337 | 153201 338 | 272227 339 | 167877 340 | 183971 341 | 192246 342 | 258732 343 | 273082 344 | 222382 345 | 218472 346 | 229988 347 | 387961 348 | 240749 349 | 249375 350 | 252040 351 | 253815 352 | 260666 353 | 472671 354 | 279085 355 | 330630 356 | 343801 357 | 299860 358 | 407846 359 | 314536 360 | 329212 361 | 337172 362 | 345447 363 | 351848 364 | 376217 365 | 402443 366 | 512706 367 | 474422 368 | 470737 369 | 759694 370 | 448460 371 | 674431 372 | 754291 373 | 540609 374 | 501415 375 | 589212 376 | 630490 377 | 539751 378 | 578945 379 | 593621 380 | 1253376 381 | 614396 382 | 629072 383 | 643748 384 | 651708 385 | 681060 386 | 1220811 387 | 697295 388 | 1198710 389 | 1080360 390 | 850903 391 | 1711416 392 | 945159 393 | 919197 394 | 949875 395 | 1311691 396 | 1182833 397 | 1041166 398 | 1738461 399 | 1090627 400 | 1118696 401 | 2140008 402 | 1133372 403 | 1172566 404 | 1208017 405 | 1258144 406 | 2223999 407 | 2148585 408 | 1824274 409 | 1332768 410 | 1796062 411 | 1548198 412 | 1896005 413 | 1770100 414 | 1800778 415 | 1864356 416 | 1869072 417 | 3322841 418 | 1960363 419 | 2910238 420 | 2131793 421 | 2159862 422 | 2174538 423 | 2252068 424 | 3036922 425 | 2968628 426 | 3072373 427 | 3508561 428 | 2380583 429 | 3620336 430 | 2590912 431 | 5454634 432 | 2880966 433 | 3197124 434 | 3318298 435 | 3344260 436 | 3929962 437 | 8651758 438 | 3730463 439 | 3665134 440 | 3733428 441 | 3829435 442 | 5042031 443 | 4092156 444 | 5055504 445 | 4306331 446 | 6515422 447 | 4426606 448 | 4632651 449 | 5452956 450 | 4971495 451 | 8884939 452 | 5261549 453 | 10026999 454 | 6078090 455 | 6541384 456 | 7976911 457 | 6611429 458 | 8971993 459 | 10097535 460 | 8797216 461 | 8036794 462 | 7395597 463 | 7398562 464 | 7494569 465 | 7562863 466 | 14958460 467 | 8398487 468 | 8518762 469 | 8732937 470 | 11582924 471 | 12824412 472 | 9398101 473 | 12609562 474 | 10233044 475 | 12367092 476 | 11339639 477 | 11802933 478 | 12619474 479 | 12689519 480 | 18978521 481 | 14007026 482 | 14009991 483 | 16128534 484 | 18131038 485 | 16555556 486 | 21128324 487 | 14890166 488 | 16295800 489 | 19077493 490 | 15961350 491 | 20321695 492 | 22017575 493 | 43145899 494 | 18965981 495 | 19631145 496 | 25359451 497 | 27509640 498 | 21572683 499 | 28985319 500 | 23142572 501 | 25308993 502 | 24422407 503 | 26626500 504 | 27579685 505 | 28897192 506 | 36027566 507 | 29971341 508 | 37424124 509 | 32516906 510 | 30851516 511 | 31185966 512 | 51988916 513 | 32257150 514 | 52939136 515 | 34927331 516 | 67184481 517 | 38597126 518 | 44053552 519 | 40538664 520 | 41203828 521 | 44715255 522 | 45995090 523 | 59143406 524 | 47564979 525 | 48451565 526 | 63019533 527 | 51048907 528 | 94205499 529 | 93560069 530 | 58868533 531 | 74686596 532 | 60822857 533 | 72795814 534 | 140200589 535 | 73460978 536 | 63443116 537 | 70854276 538 | 111807669 539 | 73524457 540 | 96016544 541 | 87198918 542 | 79135790 543 | 85257380 544 | 158781837 545 | 85919083 546 | 232306294 547 | 159372648 548 | 98613886 549 | 222392181 550 | 99500472 551 | 119691390 552 | 109917440 553 | 122311649 554 | 124265973 555 | 181180182 556 | 131677133 557 | 133618671 558 | 136904094 559 | 136967573 560 | 195174820 561 | 134297392 562 | 205151668 563 | 329417641 564 | 152660247 565 | 164393170 566 | 243528960 567 | 165054873 568 | 171176463 569 | 219191862 570 | 184532969 571 | 198114358 572 | 208531326 573 | 236468045 574 | 327463317 575 | 209417912 576 | 229608830 577 | 318151640 578 | 479997005 579 | 466076875 580 | 315477574 581 | 348926139 582 | 338770339 583 | 271201486 584 | 317715120 585 | 350774605 586 | 318830361 587 | 548609503 588 | 372924496 589 | 317053417 590 | 329448043 591 | 455659907 592 | 336231336 593 | 355709432 594 | 503363330 595 | 382647327 596 | 407532270 597 | 527569552 598 | 439026742 599 | 480619398 600 | 500810316 601 | 672762849 602 | 586679060 603 | 666252179 604 | 588254903 605 | 725247390 606 | 588916606 607 | 1023537454 608 | 634768537 609 | 691940768 610 | 635883778 611 | 646501460 612 | 653284753 613 | 665679379 614 | 905970023 615 | 910895600 616 | 1001910715 617 | 1055410176 618 | 886010657 619 | 790179597 620 | 675280050 621 | 1318427870 622 | 919646140 623 | 1069536004 624 | 1223685143 625 | 1233180520 626 | 1174933963 627 | 1175595666 628 | 2399280809 629 | 1177171509 630 | 1224800384 631 | 1850875716 632 | 1270652315 633 | 1281269997 634 | 1282385238 635 | 1289168531 636 | 2190298455 637 | 2110811041 638 | 3574876475 639 | 1465459647 640 | 1830541740 641 | 1561290707 642 | 1676190254 643 | 1850214013 644 | 1594926190 645 | 1900080434 646 | 2200916137 647 | 1989182144 648 | 2244469967 649 | 2350529629 650 | 2457319201 651 | 3399979572 652 | 2352767175 653 | 2401971893 654 | 2466340040 655 | 2513968915 656 | 3515122282 657 | 2551922312 658 | 2563655235 659 | 2571553769 660 | 2850459238 661 | 3296001387 662 | 3026750354 663 | 3141649901 664 | 3060385837 665 | 4980308955 666 | 3156216897 667 | 4750539672 668 | 5910845075 669 | 4250610063 670 | 3889262578 671 | 4190098281 672 | 4233652111 673 | 4594999596 674 | 5402381550 675 | 4754739068 676 | 4819107215 677 | 5316799278 678 | 4915940808 679 | 5029995275 680 | 5065891227 681 | 5115577547 682 | 5414114473 683 | 7318394303 684 | 5422013007 685 | 5877209592 686 | 8639802250 687 | 6087136191 688 | 9147522028 689 | 6216602734 690 | 8845609659 691 | 7045479475 692 | 9311275585 693 | 8079360859 694 | 11296089538 695 | 12732508776 696 | 8423750392 697 | 8828651707 698 | 15527878319 699 | 9573846283 700 | 9670679876 701 | 9735048023 702 | 17571272420 703 | 9945936083 704 | 10095886502 705 | 13194938406 706 | 10529692020 707 | 14932745850 708 | 12093812326 709 | 13262082209 710 | 11964345783 711 | 12303738925 712 | 16356755060 713 | 20792997490 714 | 24506592133 715 | 15124840334 716 | 17141365977 717 | 16503111251 718 | 16908012566 719 | 17252402099 720 | 21685832601 721 | 27145118703 722 | 18402497990 723 | 19244526159 724 | 21538192066 725 | 33498121037 726 | 19680984106 727 | 22833430945 728 | 23724630426 729 | 38042587661 730 | 34759253050 731 | 22494037803 732 | 48430866887 733 | 24058158109 734 | 40088330591 735 | 24268084708 736 | 29445104902 737 | 31481595394 738 | 38041303317 739 | 31627951585 740 | 33527338324 741 | 36184095357 742 | 43302684268 743 | 34160414665 744 | 51413203411 745 | 38925510265 746 | 37647024149 747 | 43949068814 748 | 61371654575 749 | 41219176172 750 | 56331551982 751 | 42175021909 752 | 45327468748 753 | 79486779625 754 | 57253290853 755 | 46762122511 756 | 46552195912 757 | 58218572774 758 | 48326242817 759 | 68370615167 760 | 53713189610 761 | 60926700296 762 | 81990372131 763 | 65155289909 764 | 65788366250 765 | 67687752989 766 | 78866200321 767 | 80949708417 768 | 73085924930 769 | 81100532174 770 | 76572534414 771 | 79822046058 772 | 83394198081 773 | 86546644920 774 | 87771372084 775 | 151081951070 776 | 121997067967 777 | 91879664660 778 | 93314318423 779 | 94878438729 780 | 122083804777 781 | 102039432427 782 | 159632569850 783 | 133535235668 784 | 114639889906 785 | 118868479519 786 | 126081990205 787 | 130943656159 788 | 132843042898 789 | 133476119239 790 | 140773677919 791 | 154186457104 792 | 149658459344 793 | 168452199074 794 | 169886852837 795 | 171165570165 796 | 163216244139 797 | 169940843001 798 | 259558109444 799 | 179651036744 800 | 185193983083 801 | 209518328635 802 | 195353750850 803 | 188192757152 804 | 216679322333 805 | 240721880111 806 | 304641689404 807 | 233508369425 808 | 275740449549 809 | 273616720817 810 | 271717334078 811 | 257025646364 812 | 263786699057 813 | 492834446556 814 | 358569994989 815 | 290432137263 816 | 303844916448 817 | 312874703483 818 | 331668443213 819 | 341052423002 820 | 351409001291 821 | 512439214189 822 | 473305027692 823 | 364845019827 824 | 645694112406 825 | 373386740235 826 | 457401202444 827 | 383546508002 828 | 404872079485 829 | 581524342160 830 | 497747526475 831 | 490534015789 832 | 523940506688 833 | 530642367181 834 | 520812345421 835 | 714439163237 836 | 547457783627 837 | 742116502991 838 | 594277053711 839 | 603306840746 840 | 641841138554 841 | 986746535408 842 | 644543146696 843 | 993250139845 844 | 894199085656 845 | 1015227878789 846 | 1351591555235 847 | 738231760062 848 | 769717099312 849 | 1195632962506 850 | 1008178920231 851 | 1232650518780 852 | 895406095274 853 | 1994925455639 854 | 988281542264 855 | 1386659649687 856 | 1341538600808 857 | 1044752852109 858 | 1238820200407 859 | 1591588383010 860 | 1141734837338 861 | 2547224517741 862 | 1197583894457 863 | 1236118192265 864 | 1245147979300 865 | 1286384285250 866 | 1382774906758 867 | 3377700362397 868 | 1507948859374 869 | 1632430845718 870 | 2349717521039 871 | 1633637855336 872 | 1757998641576 873 | 3857666380413 874 | 1883687637538 875 | 1903585015505 876 | 2220932061044 877 | 2037140932612 878 | 3516118483256 879 | 3391636496912 880 | 2289900831409 881 | 2733323220348 882 | 2636341235119 883 | 2339318731795 884 | 2377853029603 885 | 2433702086722 886 | 2442731873757 887 | 6235519410016 888 | 3537222870841 889 | 2531532264550 890 | 3817916549800 891 | 3390429487294 892 | 3141586714710 893 | 3140379705092 894 | 3266068701054 895 | 3517325492874 896 | 4047899472985 897 | 4435117280055 898 | 4173588468947 899 | 4326419511295 900 | 5167025307070 901 | 4598785090647 902 | 5430280536501 903 | 4975659966914 904 | 4667753861012 905 | 6607290555669 906 | 4717171761398 907 | 4773020818517 908 | 5699770787776 909 | 4811555116325 910 | 6281966419802 911 | 4974264138307 912 | 5671911969642 913 | 8820710023795 914 | 9873359256723 915 | 6406448406146 916 | 15040384563793 917 | 6407655415764 918 | 8492985459788 919 | 9573049228954 920 | 8234497254272 921 | 13468645426702 922 | 8985143585272 923 | 8500007980242 924 | 10142685273984 925 | 11006440506411 926 | 9266538951659 927 | 9384925622410 928 | 9440774679529 929 | 14906456386388 930 | 9490192579915 931 | 9528726877723 932 | 9584575934842 933 | 10674034926083 934 | 9785819254632 935 | 15980704644718 936 | 12078360375788 937 | 12814103821910 938 | 19113302812565 939 | 14640945660418 940 | 16550340689748 941 | 14642152670036 942 | 14900640875552 943 | 19928504528616 944 | 16734505234514 945 | 17219640839544 946 | 17766546931901 947 | 31192493359784 948 | 27362326113528 949 | 18651464574069 950 | 24172995338047 951 | 18707313631188 952 | 24435183264111 953 | 27408540160597 954 | 19276011834547 955 | 21607087253511 956 | 28180191451792 957 | 49787278705303 958 | 24427971924668 959 | 27552366186533 960 | 30621650305136 961 | 54794645643183 962 | 55627676623895 963 | 37695051460517 964 | 31450981565300 965 | 29542793545588 966 | 38826728093055 967 | 31635146110066 968 | 85987139002967 969 | 43079436498737 970 | 41392636177591 971 | 49159453440044 972 | 37358778205257 973 | 37927476408616 974 | 103954099083227 975 | 37983325465735 976 | 40314400884699 977 | 40883099088058 978 | 67722941045296 979 | 70936051189835 980 | 46035059178179 981 | 51980338111201 982 | 68993924315323 983 | 68809759770557 984 | 57095159732121 985 | 60164443850724 986 | 60993775110888 987 | 69330197570583 988 | 61177939655654 989 | 63086127675366 990 | 66901571750845 991 | 77670205288245 992 | 69562622518682 993 | 112642059017419 994 | 78751414382848 995 | 97978258820179 996 | 75286254613873 997 | 75342103670992 998 | 75910801874351 999 | 78297726350434 1000 | 81197499972757 1001 | --------------------------------------------------------------------------------