diff --git a/inputs/input.txt b/inputs/input.txt index cbdfd5c..f4adba9 100644 --- a/inputs/input.txt +++ b/inputs/input.txt @@ -1,1001 +1,516 @@ -22-77,14-96 -7-99,65-98 -22-36,37-62 -25-94,24-67 -6-91,1-6 -88-88,2-88 -27-89,58-96 -21-82,9-94 -38-79,27-80 -4-90,30-55 -84-97,52-93 -12-59,11-12 -4-14,5-12 -50-84,49-89 -3-98,1-3 -91-95,8-22 -15-66,17-67 -27-27,27-90 -36-37,37-96 -31-32,32-80 -1-79,2-78 -36-85,20-36 -2-2,2-98 -33-81,80-99 -4-73,45-72 -3-89,1-4 -6-92,21-91 -7-93,2-92 -47-89,47-50 -64-84,63-65 -22-85,21-91 -16-31,11-14 -4-93,3-93 -15-61,61-62 -21-23,22-88 -59-59,11-58 -23-23,22-89 -19-87,78-86 -13-82,19-83 -22-88,76-92 -46-47,46-46 -30-31,13-31 -6-93,3-98 -54-54,13-53 -51-77,51-77 -84-84,38-84 -84-98,95-98 -34-41,29-64 -50-95,49-94 -24-88,12-22 -40-41,27-41 -28-28,28-92 -65-66,66-73 -6-99,4-7 -15-38,14-39 -16-81,15-82 -14-98,7-14 -89-89,55-89 -82-86,26-82 -9-88,10-83 -5-54,6-74 -81-95,14-96 -20-81,87-87 -8-73,48-73 -44-52,53-57 -95-95,27-96 -30-94,29-95 -22-93,23-94 -18-93,7-18 -12-88,89-90 -72-78,34-78 -53-93,54-86 -12-87,70-87 -9-84,70-83 -16-89,50-90 -35-67,36-66 -46-56,45-57 -96-99,26-90 -34-90,35-75 -20-77,21-77 -33-56,2-83 -20-75,19-73 -43-52,18-43 -15-54,21-54 -14-63,23-38 -22-48,21-48 -8-20,6-7 -64-72,6-86 -29-92,6-91 -50-88,87-88 -5-72,6-6 -81-81,31-81 -46-52,46-97 -11-36,12-35 -8-80,79-97 -13-94,94-94 -3-98,43-68 -29-61,32-62 -8-60,14-61 -21-93,11-23 -77-77,36-77 -87-98,80-87 -89-92,8-95 -20-70,21-48 -8-90,13-89 -73-82,82-82 -2-3,2-79 -56-93,55-92 -49-84,50-50 -16-69,13-14 -10-68,7-9 -14-97,23-26 -35-76,80-86 -35-86,85-99 -89-89,26-90 -31-94,32-32 -15-57,14-58 -16-30,17-49 -4-68,5-99 -5-98,6-95 -45-64,1-63 -51-75,52-74 -27-58,26-57 -7-87,4-86 -44-51,44-52 -2-2,7-82 -11-80,10-12 -10-22,29-73 -1-41,10-84 -13-42,12-59 -57-57,55-56 -96-99,42-97 -6-95,4-29 -11-91,9-10 -41-44,38-45 -17-98,17-97 -23-55,22-54 -18-84,85-92 -11-83,11-84 -19-61,18-31 -44-54,43-54 -52-87,87-96 -40-98,40-97 -1-79,2-79 -11-33,12-34 -16-79,18-80 -47-50,48-49 -10-90,89-91 -16-98,12-17 -1-19,4-18 -4-72,19-72 -2-69,4-27 -7-9,8-94 -13-77,14-76 -19-89,88-89 -85-92,84-92 -92-93,38-91 -7-65,8-64 -27-71,38-73 -36-92,43-65 -2-5,5-87 -43-95,71-79 -5-61,5-61 -8-78,9-99 -34-34,34-94 -3-60,61-61 -98-98,15-89 -2-56,52-56 -33-90,65-89 -7-72,22-55 -41-70,70-70 -15-73,14-72 -76-76,75-91 -3-82,52-83 -12-51,5-84 -94-96,19-61 -60-62,10-61 -19-95,94-95 -24-57,8-25 -1-3,3-97 -29-46,2-46 -3-73,2-72 -11-79,10-11 -12-35,11-13 -35-59,16-59 -27-88,26-27 -91-91,90-91 -30-48,30-57 -24-34,23-40 -59-98,1-99 -37-42,34-42 -17-99,16-18 -2-36,25-35 -36-36,36-65 -22-77,21-77 -35-45,35-45 -32-99,31-32 -40-54,13-40 -44-44,27-44 -41-93,41-42 -14-44,15-45 -7-63,8-64 -10-10,10-63 -23-92,24-24 -6-95,1-94 -22-23,22-92 -18-31,17-48 -45-58,45-45 -15-86,1-15 -8-71,9-70 -18-68,17-67 -1-85,49-84 -19-47,29-48 -1-74,3-75 -90-92,26-91 -95-99,26-94 -22-95,24-47 -6-79,6-6 -24-97,24-97 -12-15,16-37 -58-78,46-78 -24-43,17-43 -37-67,36-68 -2-97,1-3 -28-29,29-41 -8-9,9-36 -22-62,21-96 -9-24,10-34 -2-2,5-88 -7-16,2-9 -56-95,56-97 -54-79,78-79 -25-48,31-47 -36-82,82-83 -29-77,26-28 -81-81,1-82 -80-89,62-79 -5-98,11-97 -60-80,61-70 -43-52,43-52 -1-96,2-95 -64-91,34-92 -5-85,6-84 -97-98,56-96 -14-93,14-96 -47-86,46-85 -49-49,48-66 -5-96,7-95 -78-79,5-79 -27-54,26-27 -15-15,15-97 -77-92,76-98 -22-39,21-22 -5-31,3-31 -18-98,6-18 -3-4,4-94 -3-95,2-96 -11-56,5-10 -20-82,19-81 -33-51,52-79 -8-53,8-53 -4-82,4-4 -2-97,2-97 -21-29,32-53 -83-98,78-97 -10-88,88-97 -40-50,37-51 -4-4,4-51 -89-90,39-90 -12-12,12-81 -24-55,25-25 -74-74,68-75 -5-89,5-93 -44-86,43-45 -37-47,37-47 -22-99,23-99 -37-59,40-58 -35-99,35-99 -4-85,5-91 -14-87,36-97 -5-64,4-6 -6-94,93-94 -17-83,18-82 -29-99,28-30 -11-99,62-98 -12-64,13-84 -12-97,12-99 -22-42,22-41 -13-91,10-96 -21-49,4-21 -99-99,23-91 -5-42,43-43 -80-82,18-80 -48-97,48-99 -19-49,4-18 -82-99,6-83 -4-96,2-99 -34-40,34-40 -33-51,32-52 -22-62,23-81 -8-70,8-62 -88-97,9-89 -2-4,3-99 -63-95,20-64 -5-96,1-4 -39-79,39-56 -75-88,71-79 -5-96,5-98 -38-39,45-84 -17-96,18-26 -6-7,5-7 -5-39,5-92 -8-26,12-25 -45-51,35-52 -25-75,25-26 -10-98,2-9 -10-64,9-10 -84-86,33-83 -6-50,49-51 -17-72,16-17 -40-61,39-66 -45-50,44-50 -31-41,31-41 -69-83,70-70 -11-86,12-85 -89-92,54-67 -51-79,52-72 -5-10,3-11 -76-76,41-77 -13-53,13-88 -81-91,81-91 -9-68,3-67 -48-59,15-63 -37-97,96-96 -1-78,3-78 -12-43,26-56 -2-67,21-66 -47-58,47-89 -7-69,7-69 -66-93,67-67 -18-41,19-85 -1-50,50-50 -7-18,17-99 -61-92,61-92 -21-40,38-38 -26-99,27-98 -14-94,11-13 -16-18,17-31 -20-32,84-94 -10-97,10-99 -2-89,1-88 -27-94,28-86 -59-96,14-87 -17-91,12-49 -30-86,29-85 -76-77,1-76 -10-94,9-9 -15-37,29-38 -42-63,9-36 -35-52,36-36 -31-32,32-62 -5-11,11-23 -3-8,9-40 -8-99,9-88 -28-60,22-61 -3-42,3-42 -1-5,4-56 -45-90,11-95 -52-52,51-94 -45-51,24-50 -63-92,62-92 -78-94,3-30 -50-51,52-63 -54-58,57-59 -77-77,65-77 -4-90,3-91 -11-48,10-47 -73-90,75-90 -50-58,18-62 -7-98,8-97 -9-76,9-9 -7-47,4-48 -4-95,94-94 -23-58,24-57 -11-18,18-45 -78-99,38-62 -29-70,17-50 -8-80,39-81 -2-99,1-99 -52-67,52-53 -60-94,47-61 -99-99,39-97 -32-92,20-32 -48-81,80-91 -44-51,18-37 -4-57,3-57 -2-84,2-84 -19-20,19-19 -7-80,7-80 -38-38,35-37 -15-99,10-31 -21-55,20-73 -5-6,6-84 -48-79,10-80 -67-96,1-68 -56-95,56-84 -40-96,80-92 -3-3,7-99 -19-85,18-20 -4-8,9-80 -7-53,36-53 -20-30,2-31 -4-72,1-86 -38-85,37-84 -65-69,66-69 -3-6,1-10 -11-35,24-44 -5-70,4-4 -51-79,42-47 -30-31,30-68 -22-97,67-95 -23-45,22-54 -30-76,30-76 -7-94,95-95 -14-66,66-66 -65-76,64-65 -67-89,24-90 -6-57,38-56 -6-71,36-70 -7-73,7-76 -1-2,2-2 -98-98,44-96 -35-35,34-37 -4-99,1-3 -4-17,16-56 -17-74,16-75 -7-97,77-98 -80-94,15-80 -11-62,9-12 -59-71,28-71 -23-95,23-95 -3-70,70-91 -31-97,96-99 -33-79,34-79 -4-19,5-5 -27-63,26-63 -5-25,25-95 -44-74,33-43 -27-43,3-27 -2-96,92-95 -2-89,2-99 -16-16,16-88 -2-95,1-94 -79-82,78-83 -30-96,95-95 -14-88,14-89 -5-16,6-6 -35-72,32-36 -22-99,21-23 -7-93,8-94 -19-98,20-99 -29-30,11-31 -1-99,2-78 -76-86,32-75 -9-95,8-96 -15-40,32-33 -27-76,26-76 -21-79,17-19 -40-64,6-95 -55-91,55-90 -4-77,5-25 -13-92,12-91 -67-72,64-90 -2-64,9-65 -20-70,44-71 -8-72,8-71 -89-96,35-99 -36-36,36-83 -1-39,40-75 -38-56,10-38 -65-80,87-93 -67-69,66-70 -54-85,6-84 -27-89,93-93 -1-99,3-98 -11-87,11-95 -27-88,47-87 -13-80,12-71 -2-79,80-99 -7-74,8-73 -19-19,18-94 -33-91,92-93 -72-81,41-73 -4-66,11-98 -7-88,8-67 -54-73,60-95 -21-63,48-62 -46-97,97-99 -22-28,21-23 -57-58,9-58 -12-97,11-96 -3-98,5-80 -7-21,7-95 -28-51,27-50 -55-99,98-99 -26-48,27-48 -74-97,11-90 -8-92,14-92 -12-52,53-98 -2-96,3-97 -39-39,38-87 -34-35,35-45 -14-84,83-84 -7-93,7-93 -51-56,41-55 -16-54,4-17 -91-95,28-90 -29-93,28-96 -83-83,1-83 -7-97,6-98 -63-70,66-70 -4-21,4-21 -2-7,9-95 -28-97,28-98 -2-72,3-3 -42-42,43-53 -30-81,26-30 -46-52,50-52 -16-27,37-67 -2-92,4-89 -41-85,42-84 -1-93,40-94 -40-97,39-40 -35-69,34-36 -13-95,96-96 -15-94,16-16 -6-11,10-11 -96-96,1-97 -33-98,16-99 -26-79,27-77 -18-67,18-68 -6-86,1-93 -5-92,6-80 -6-93,94-94 -8-73,7-9 -29-43,64-70 -2-98,2-98 -47-50,74-79 -44-44,28-44 -7-19,19-60 -14-98,13-66 -26-77,27-71 -18-70,20-70 -13-99,84-84 -20-86,39-82 -11-25,10-26 -28-28,29-45 -9-9,8-55 -17-94,18-18 -38-71,90-93 -2-50,4-78 -25-43,44-93 -1-17,17-97 -17-64,18-63 -9-89,13-90 -83-97,37-99 -4-4,3-91 -47-69,70-89 -76-96,81-97 -12-13,13-99 -11-85,12-84 -22-95,22-79 -34-96,35-95 -4-17,2-4 -18-74,18-19 -4-87,3-91 -5-79,6-85 -26-99,27-99 -32-50,30-51 -40-70,41-67 -9-78,9-78 -4-98,2-2 -1-3,2-98 -50-50,1-50 -2-75,3-74 -47-71,44-46 -54-82,54-82 -49-93,50-85 -20-86,95-99 -38-86,38-86 -44-59,45-57 -6-6,5-97 -18-97,17-99 -9-31,4-6 -10-90,11-81 -15-16,16-95 -46-97,47-84 -35-47,34-95 -75-94,95-98 -55-90,90-94 -60-90,82-89 -13-51,6-12 -37-87,36-37 -35-89,35-36 -36-69,4-68 -19-24,1-25 -2-96,3-49 -24-88,23-25 -16-39,40-64 -40-68,16-40 -13-91,8-40 -70-91,69-91 -52-86,37-84 -91-99,48-68 -24-35,34-64 -54-73,34-53 -11-76,10-77 -16-90,91-98 -17-18,17-79 -54-66,37-55 -52-77,16-78 -84-97,82-84 -32-48,33-49 -37-58,58-84 -31-63,18-31 -55-67,28-67 -5-99,5-6 -5-48,6-49 -71-93,15-70 -39-75,68-74 -7-8,8-35 -59-59,39-59 -3-13,14-95 -59-66,59-59 -99-99,48-65 -3-95,1-2 -58-88,12-57 -12-12,13-96 -55-68,57-67 -28-37,37-72 -11-94,12-92 -12-91,26-82 -17-65,65-65 -37-91,90-97 -2-43,3-78 -2-14,15-55 -38-40,45-85 -15-76,68-76 -20-23,2-24 -3-97,98-99 -72-72,62-72 -27-51,13-26 -5-53,7-54 -86-86,6-87 -13-67,12-94 -1-87,2-2 -27-66,26-27 -3-86,81-87 -18-99,42-91 -16-84,82-85 -55-95,85-95 -4-96,4-98 -62-89,59-76 -6-78,7-7 -53-53,53-90 -44-72,72-88 -26-98,98-99 -58-60,59-87 -36-53,53-83 -49-74,49-74 -84-85,71-83 -1-98,13-95 -27-70,26-76 -14-83,14-83 -43-65,64-65 -14-78,7-78 -93-93,43-63 -11-40,10-41 -31-96,31-31 -2-63,64-77 -33-33,32-51 -3-17,4-72 -95-95,95-97 -15-98,15-88 -47-84,46-48 -5-5,4-87 -1-77,40-78 -2-86,37-85 -18-90,17-90 -16-95,15-17 -47-95,46-94 -20-40,15-39 -56-90,55-90 -41-90,41-90 -14-39,13-46 -98-99,61-99 -29-31,30-86 -22-33,28-34 -10-98,2-10 -6-18,14-19 -97-97,97-97 -14-62,7-50 -12-21,15-17 -73-73,74-90 -6-13,5-14 -79-86,79-87 -2-87,3-87 -51-86,51-85 -35-94,11-93 -43-78,78-78 -76-97,31-76 -12-54,13-13 -8-95,48-96 -74-85,85-95 -11-13,21-40 -9-82,2-94 -40-48,39-95 -5-16,12-29 -7-22,21-42 -10-22,21-99 -59-73,44-74 -38-60,39-59 -16-92,29-93 -38-48,4-39 -8-59,7-59 -2-97,4-96 -77-92,77-91 -39-53,40-69 -3-92,5-92 -97-99,61-97 -19-46,45-59 -16-58,14-16 -14-15,13-17 -14-92,15-15 -13-42,12-42 -70-93,71-93 -6-53,3-7 -10-11,10-11 -10-99,22-99 -7-23,15-86 -11-95,94-97 -21-45,44-45 -19-21,22-30 -8-91,9-83 -7-91,9-47 -2-93,3-94 -48-61,46-79 -8-25,26-93 -88-92,11-89 -2-30,3-29 -30-30,29-90 -50-66,25-67 -37-47,37-48 -26-34,14-17 -17-49,16-72 -35-57,3-35 -10-10,9-27 -21-22,21-99 -58-89,48-57 -34-38,35-39 -86-89,52-97 -51-69,34-50 -21-59,3-96 -19-88,88-88 -16-96,16-66 -18-49,11-17 -1-1,3-70 -8-39,39-75 -45-46,45-98 -39-91,67-91 -2-2,1-85 -14-68,43-69 -37-79,46-80 -29-43,40-40 -3-4,40-65 -14-89,15-89 -27-79,17-26 -1-2,1-98 -54-92,91-93 -22-53,54-84 -55-95,94-97 -9-36,8-35 -3-37,3-37 -49-76,49-65 -10-95,95-95 -8-98,37-99 -2-83,1-3 -38-91,39-92 -9-95,8-94 -2-43,2-43 -15-89,77-90 -41-47,37-46 -9-94,1-10 -5-99,65-98 -42-83,42-42 -54-73,38-98 -57-57,56-76 -14-44,45-73 -26-27,27-72 -20-85,19-23 -5-99,6-98 -9-60,7-8 -99-99,27-99 -3-3,25-55 -62-64,16-65 -84-84,41-84 -23-78,4-93 -35-99,34-35 -44-46,45-90 -89-89,5-88 -63-85,64-84 -66-76,45-68 -60-90,61-89 -94-94,94-95 -87-94,80-86 -23-70,71-90 -93-93,5-93 -33-80,34-79 -15-60,16-16 -57-97,53-57 -67-84,83-93 -9-90,18-59 -28-82,21-81 -32-64,31-64 -59-81,18-59 -23-85,7-84 -50-68,12-68 -75-80,76-79 -64-92,64-66 -61-71,62-70 -29-96,20-31 -57-75,71-75 -48-50,49-78 -12-82,76-82 -2-35,4-35 -18-60,13-60 -52-81,20-27 -13-19,13-20 -33-61,48-61 -65-89,24-88 -32-46,32-69 -12-12,2-11 -18-97,16-18 -11-11,10-89 -3-72,3-3 -24-92,23-23 -13-15,16-51 -37-69,24-70 -3-99,10-99 -3-73,1-3 -8-30,3-29 -28-81,28-81 -90-94,1-90 -1-14,1-1 -2-98,1-99 -62-88,55-63 -19-33,34-34 -15-94,14-97 -22-34,15-34 -41-59,42-60 -4-89,18-90 -32-84,84-84 -32-95,31-72 -7-88,8-56 -20-21,20-96 -31-80,31-81 -6-61,30-43 -6-71,72-86 -20-71,28-96 -8-72,57-86 -1-3,3-19 -38-39,39-90 -58-58,58-90 -55-55,14-55 -96-96,3-89 -9-83,8-93 -3-85,3-84 -4-4,3-81 -66-82,81-82 -11-11,12-87 -2-3,7-94 -5-76,2-96 -13-82,46-81 -7-51,4-50 -18-73,73-73 -14-88,14-88 -50-83,50-94 -21-58,59-95 -47-99,48-93 -11-53,1-9 -6-75,3-75 -2-4,3-66 -2-55,1-3 -48-58,44-58 -78-78,77-78 -31-42,39-43 -43-60,44-60 -1-92,93-96 -43-44,44-64 -3-77,3-3 -9-98,10-99 -15-16,15-56 -5-24,11-25 -58-92,99-99 -10-10,11-86 -7-54,6-53 -56-74,17-55 -57-87,48-89 -33-64,2-89 -45-70,14-71 -24-69,23-70 -62-93,15-90 -69-83,70-83 -8-15,12-14 -34-63,62-93 -3-6,7-81 -75-92,75-92 -24-28,13-31 -16-54,31-50 -53-54,53-91 -34-99,35-97 -7-64,2-7 -11-67,67-89 -70-72,71-79 -57-88,88-89 -59-60,59-88 -5-90,99-99 -4-67,38-41 -8-83,14-82 -20-22,21-45 -1-66,16-67 -59-70,34-60 -3-85,14-84 -49-93,48-94 -97-97,2-96 -38-71,37-72 -4-90,3-91 -6-90,7-99 -57-97,57-87 -37-75,38-81 -13-86,12-13 -60-76,61-84 -6-89,7-98 -6-99,5-96 -4-75,75-99 -3-91,22-62 -11-71,28-37 -26-35,13-26 -12-25,24-24 -16-35,36-47 -16-39,40-77 -1-65,58-63 -37-89,43-88 -74-74,74-84 -80-86,40-80 -4-28,25-94 -35-93,35-81 -6-97,2-99 -10-68,11-33 -4-76,34-78 -18-84,21-46 -79-82,82-82 -1-3,4-97 -7-98,8-97 -36-97,35-35 -24-61,23-24 -3-93,8-92 -67-67,65-66 -30-77,1-65 -39-64,3-63 -18-52,13-52 -24-70,69-76 -1-56,14-45 -3-60,4-4 -1-8,1-9 -14-20,19-79 -34-82,35-83 -67-88,41-89 -8-29,56-84 -32-40,33-40 -4-93,3-93 -5-5,4-78 -58-79,16-59 -24-31,15-61 -49-50,40-50 -46-46,47-95 -34-34,35-95 -19-21,18-20 -4-8,7-98 -9-10,9-97 -14-83,5-14 -20-21,20-55 -14-97,13-31 -25-39,24-89 -17-73,14-74 -14-36,13-36 -58-64,59-65 -20-92,21-55 -20-85,19-20 -19-47,18-99 + [G] [D] [Q] +[P] [T] [L] [M] [Z] +[Z] [Z] [C] [Z] [G] [W] +[M] [B] [F] [P] [C] [H] [N] +[T] [S] [R] [H] [W] [R] [L] [W] +[R] [T] [Q] [Z] [R] [S] [Z] [F] [P] +[C] [N] [H] [R] [N] [H] [D] [J] [Q] +[N] [D] [M] [G] [Z] [F] [W] [S] [S] + 1 2 3 4 5 6 7 8 9 + +move 7 from 6 to 8 +move 5 from 2 to 6 +move 2 from 4 to 1 +move 1 from 4 to 5 +move 5 from 7 to 6 +move 7 from 6 to 3 +move 5 from 9 to 2 +move 6 from 2 to 3 +move 2 from 7 to 9 +move 20 from 3 to 1 +move 11 from 1 to 6 +move 1 from 9 to 8 +move 3 from 8 to 2 +move 8 from 1 to 5 +move 10 from 8 to 4 +move 7 from 6 to 4 +move 1 from 8 to 3 +move 8 from 1 to 7 +move 16 from 4 to 8 +move 1 from 9 to 8 +move 1 from 5 to 2 +move 4 from 7 to 4 +move 5 from 6 to 7 +move 1 from 6 to 1 +move 8 from 7 to 4 +move 1 from 6 to 9 +move 12 from 4 to 5 +move 3 from 2 to 5 +move 1 from 6 to 2 +move 1 from 3 to 7 +move 1 from 3 to 2 +move 1 from 9 to 3 +move 1 from 7 to 8 +move 1 from 7 to 5 +move 1 from 3 to 2 +move 4 from 5 to 7 +move 5 from 5 to 7 +move 1 from 4 to 3 +move 1 from 3 to 9 +move 3 from 1 to 8 +move 1 from 9 to 1 +move 2 from 2 to 1 +move 2 from 2 to 7 +move 8 from 8 to 1 +move 3 from 5 to 2 +move 8 from 7 to 5 +move 7 from 1 to 3 +move 3 from 1 to 7 +move 1 from 1 to 5 +move 1 from 3 to 7 +move 7 from 5 to 8 +move 2 from 2 to 8 +move 1 from 3 to 2 +move 1 from 2 to 4 +move 1 from 4 to 8 +move 13 from 8 to 1 +move 13 from 5 to 9 +move 2 from 5 to 2 +move 7 from 9 to 3 +move 12 from 8 to 3 +move 4 from 9 to 3 +move 1 from 3 to 4 +move 2 from 2 to 3 +move 1 from 1 to 6 +move 1 from 2 to 3 +move 1 from 5 to 9 +move 7 from 7 to 4 +move 10 from 1 to 8 +move 1 from 1 to 4 +move 1 from 9 to 5 +move 2 from 5 to 1 +move 1 from 6 to 5 +move 3 from 8 to 9 +move 5 from 4 to 3 +move 4 from 4 to 1 +move 7 from 1 to 6 +move 2 from 5 to 7 +move 35 from 3 to 4 +move 4 from 9 to 1 +move 19 from 4 to 8 +move 1 from 7 to 6 +move 1 from 9 to 2 +move 10 from 4 to 5 +move 2 from 4 to 7 +move 3 from 4 to 3 +move 1 from 2 to 8 +move 1 from 1 to 9 +move 3 from 3 to 6 +move 4 from 8 to 6 +move 4 from 5 to 2 +move 2 from 8 to 3 +move 3 from 5 to 9 +move 12 from 6 to 1 +move 8 from 8 to 6 +move 2 from 9 to 1 +move 1 from 4 to 1 +move 1 from 3 to 8 +move 3 from 7 to 8 +move 2 from 9 to 7 +move 1 from 6 to 7 +move 10 from 6 to 8 +move 4 from 2 to 5 +move 1 from 3 to 7 +move 7 from 5 to 7 +move 13 from 8 to 1 +move 29 from 1 to 4 +move 8 from 7 to 8 +move 1 from 1 to 3 +move 3 from 7 to 6 +move 1 from 1 to 9 +move 15 from 4 to 1 +move 1 from 3 to 6 +move 10 from 1 to 6 +move 10 from 6 to 7 +move 1 from 4 to 9 +move 1 from 9 to 1 +move 1 from 9 to 7 +move 6 from 7 to 8 +move 1 from 1 to 6 +move 5 from 6 to 5 +move 21 from 8 to 9 +move 5 from 1 to 9 +move 2 from 9 to 5 +move 3 from 5 to 6 +move 3 from 7 to 9 +move 4 from 4 to 6 +move 6 from 8 to 7 +move 6 from 6 to 3 +move 2 from 7 to 9 +move 1 from 7 to 2 +move 6 from 3 to 2 +move 1 from 6 to 4 +move 4 from 5 to 9 +move 1 from 4 to 5 +move 9 from 4 to 6 +move 7 from 6 to 4 +move 10 from 9 to 2 +move 5 from 7 to 5 +move 10 from 2 to 7 +move 2 from 5 to 4 +move 2 from 5 to 9 +move 4 from 9 to 4 +move 1 from 8 to 6 +move 7 from 7 to 2 +move 1 from 5 to 4 +move 2 from 7 to 1 +move 1 from 5 to 7 +move 3 from 6 to 2 +move 4 from 4 to 5 +move 1 from 2 to 7 +move 10 from 4 to 7 +move 3 from 7 to 3 +move 17 from 9 to 4 +move 1 from 1 to 4 +move 1 from 1 to 5 +move 5 from 2 to 7 +move 1 from 9 to 2 +move 5 from 4 to 8 +move 2 from 9 to 7 +move 4 from 8 to 1 +move 3 from 4 to 8 +move 1 from 2 to 5 +move 1 from 9 to 2 +move 6 from 4 to 8 +move 3 from 7 to 5 +move 1 from 4 to 9 +move 1 from 9 to 1 +move 3 from 1 to 9 +move 4 from 8 to 5 +move 2 from 9 to 8 +move 4 from 2 to 5 +move 8 from 7 to 2 +move 5 from 8 to 5 +move 2 from 7 to 8 +move 1 from 3 to 5 +move 1 from 1 to 2 +move 1 from 1 to 6 +move 2 from 3 to 6 +move 5 from 2 to 8 +move 4 from 7 to 1 +move 7 from 8 to 5 +move 1 from 1 to 5 +move 3 from 8 to 3 +move 1 from 9 to 3 +move 7 from 2 to 3 +move 2 from 2 to 8 +move 2 from 4 to 8 +move 1 from 8 to 5 +move 1 from 1 to 4 +move 2 from 4 to 7 +move 2 from 7 to 1 +move 3 from 2 to 3 +move 3 from 5 to 2 +move 1 from 8 to 3 +move 3 from 3 to 2 +move 5 from 2 to 1 +move 17 from 5 to 8 +move 9 from 8 to 1 +move 11 from 3 to 5 +move 8 from 8 to 5 +move 2 from 8 to 5 +move 16 from 1 to 4 +move 13 from 4 to 7 +move 6 from 5 to 2 +move 2 from 4 to 8 +move 5 from 7 to 9 +move 2 from 1 to 2 +move 7 from 7 to 1 +move 1 from 1 to 4 +move 1 from 9 to 8 +move 7 from 2 to 8 +move 1 from 4 to 7 +move 2 from 9 to 4 +move 1 from 4 to 1 +move 1 from 3 to 5 +move 2 from 9 to 8 +move 11 from 8 to 7 +move 2 from 6 to 5 +move 1 from 6 to 9 +move 1 from 1 to 9 +move 1 from 9 to 1 +move 4 from 1 to 4 +move 2 from 1 to 8 +move 1 from 1 to 2 +move 1 from 9 to 5 +move 2 from 4 to 3 +move 2 from 2 to 7 +move 2 from 3 to 9 +move 1 from 9 to 1 +move 1 from 9 to 1 +move 5 from 5 to 1 +move 19 from 5 to 6 +move 5 from 1 to 4 +move 1 from 2 to 9 +move 1 from 1 to 3 +move 7 from 5 to 8 +move 1 from 3 to 6 +move 8 from 7 to 3 +move 7 from 4 to 8 +move 3 from 8 to 5 +move 1 from 4 to 1 +move 1 from 9 to 4 +move 1 from 4 to 9 +move 1 from 5 to 2 +move 2 from 5 to 6 +move 2 from 8 to 2 +move 7 from 8 to 1 +move 1 from 1 to 7 +move 3 from 6 to 9 +move 2 from 3 to 2 +move 1 from 2 to 1 +move 1 from 8 to 7 +move 2 from 9 to 6 +move 2 from 9 to 5 +move 1 from 5 to 6 +move 1 from 2 to 8 +move 2 from 1 to 7 +move 1 from 4 to 3 +move 3 from 2 to 5 +move 7 from 1 to 3 +move 10 from 3 to 4 +move 3 from 5 to 4 +move 1 from 3 to 8 +move 3 from 3 to 2 +move 1 from 8 to 1 +move 1 from 1 to 3 +move 3 from 8 to 3 +move 5 from 4 to 6 +move 1 from 2 to 3 +move 4 from 6 to 4 +move 1 from 5 to 7 +move 4 from 3 to 4 +move 1 from 2 to 8 +move 12 from 7 to 6 +move 1 from 8 to 2 +move 2 from 2 to 7 +move 1 from 8 to 4 +move 23 from 6 to 3 +move 14 from 3 to 6 +move 15 from 4 to 6 +move 1 from 8 to 6 +move 10 from 3 to 7 +move 2 from 4 to 2 +move 11 from 7 to 8 +move 2 from 2 to 6 +move 44 from 6 to 9 +move 21 from 9 to 3 +move 12 from 3 to 6 +move 1 from 7 to 4 +move 1 from 4 to 7 +move 9 from 3 to 2 +move 2 from 8 to 6 +move 3 from 2 to 4 +move 17 from 9 to 1 +move 3 from 4 to 6 +move 2 from 2 to 9 +move 4 from 9 to 2 +move 10 from 6 to 9 +move 1 from 7 to 6 +move 4 from 9 to 5 +move 4 from 2 to 4 +move 14 from 1 to 5 +move 4 from 4 to 3 +move 3 from 2 to 9 +move 9 from 9 to 7 +move 1 from 2 to 5 +move 9 from 8 to 5 +move 8 from 7 to 2 +move 4 from 3 to 8 +move 5 from 6 to 2 +move 3 from 1 to 6 +move 1 from 7 to 1 +move 4 from 2 to 4 +move 3 from 6 to 4 +move 3 from 8 to 3 +move 13 from 5 to 2 +move 2 from 3 to 5 +move 12 from 5 to 9 +move 1 from 3 to 5 +move 1 from 5 to 9 +move 1 from 8 to 3 +move 4 from 9 to 5 +move 6 from 4 to 5 +move 12 from 9 to 7 +move 1 from 9 to 3 +move 1 from 3 to 2 +move 12 from 5 to 6 +move 12 from 7 to 2 +move 1 from 3 to 7 +move 1 from 4 to 8 +move 33 from 2 to 8 +move 1 from 7 to 5 +move 1 from 1 to 2 +move 4 from 5 to 4 +move 3 from 2 to 5 +move 34 from 8 to 6 +move 1 from 4 to 3 +move 1 from 5 to 7 +move 1 from 7 to 5 +move 3 from 4 to 9 +move 2 from 9 to 7 +move 1 from 9 to 4 +move 1 from 3 to 7 +move 1 from 5 to 8 +move 1 from 5 to 1 +move 1 from 5 to 7 +move 1 from 4 to 8 +move 1 from 1 to 4 +move 1 from 4 to 2 +move 3 from 7 to 5 +move 2 from 8 to 5 +move 1 from 2 to 8 +move 4 from 6 to 2 +move 1 from 8 to 6 +move 1 from 7 to 9 +move 29 from 6 to 7 +move 4 from 2 to 3 +move 2 from 5 to 8 +move 1 from 9 to 5 +move 2 from 8 to 1 +move 23 from 7 to 5 +move 2 from 6 to 1 +move 23 from 5 to 6 +move 1 from 3 to 6 +move 4 from 5 to 9 +move 2 from 1 to 3 +move 5 from 3 to 8 +move 2 from 6 to 5 +move 2 from 1 to 4 +move 1 from 9 to 8 +move 1 from 9 to 1 +move 1 from 4 to 6 +move 2 from 5 to 6 +move 6 from 7 to 8 +move 2 from 9 to 2 +move 18 from 6 to 5 +move 21 from 6 to 4 +move 1 from 1 to 6 +move 2 from 6 to 7 +move 2 from 7 to 9 +move 2 from 2 to 8 +move 7 from 4 to 3 +move 12 from 5 to 3 +move 1 from 9 to 5 +move 1 from 9 to 4 +move 6 from 5 to 2 +move 17 from 3 to 4 +move 3 from 4 to 3 +move 1 from 2 to 4 +move 5 from 2 to 8 +move 1 from 5 to 8 +move 19 from 8 to 7 +move 1 from 3 to 6 +move 1 from 8 to 4 +move 1 from 6 to 1 +move 15 from 4 to 6 +move 1 from 1 to 4 +move 3 from 3 to 5 +move 4 from 6 to 7 +move 1 from 4 to 7 +move 10 from 6 to 7 +move 16 from 4 to 5 +move 24 from 7 to 2 +move 8 from 7 to 8 +move 1 from 4 to 2 +move 6 from 8 to 7 +move 1 from 8 to 7 +move 1 from 6 to 9 +move 14 from 5 to 4 +move 9 from 7 to 8 +move 4 from 5 to 1 +move 2 from 1 to 5 +move 3 from 8 to 6 +move 2 from 6 to 9 +move 2 from 2 to 8 +move 6 from 2 to 7 +move 3 from 4 to 6 +move 1 from 3 to 4 +move 3 from 5 to 7 +move 1 from 6 to 9 +move 5 from 7 to 2 +move 4 from 9 to 1 +move 1 from 7 to 9 +move 9 from 8 to 4 +move 5 from 1 to 2 +move 2 from 6 to 1 +move 6 from 4 to 7 +move 1 from 7 to 3 +move 1 from 3 to 9 +move 1 from 9 to 7 +move 1 from 6 to 7 +move 9 from 4 to 5 +move 7 from 7 to 9 +move 3 from 7 to 5 +move 1 from 9 to 2 +move 6 from 9 to 8 +move 4 from 4 to 5 +move 1 from 4 to 2 +move 1 from 4 to 2 +move 2 from 1 to 2 +move 1 from 9 to 8 +move 10 from 2 to 4 +move 8 from 2 to 7 +move 12 from 2 to 9 +move 6 from 7 to 4 +move 1 from 1 to 2 +move 8 from 9 to 8 +move 7 from 5 to 1 +move 9 from 4 to 3 +move 14 from 8 to 4 +move 1 from 8 to 4 +move 1 from 1 to 5 +move 1 from 5 to 2 +move 3 from 2 to 4 +move 1 from 7 to 1 +move 1 from 7 to 3 +move 2 from 1 to 7 +move 3 from 5 to 7 +move 2 from 7 to 6 +move 1 from 6 to 5 +move 3 from 7 to 1 +move 1 from 6 to 8 +move 1 from 8 to 7 +move 1 from 3 to 6 +move 1 from 7 to 1 +move 4 from 1 to 4 +move 6 from 3 to 2 +move 3 from 1 to 2 +move 3 from 3 to 6 +move 3 from 2 to 6 +move 6 from 6 to 5 +move 1 from 1 to 4 +move 1 from 9 to 6 +move 5 from 2 to 1 +move 3 from 1 to 2 +move 2 from 9 to 8 +move 3 from 1 to 5 +move 1 from 9 to 7 +move 25 from 4 to 1 +move 1 from 1 to 7 +move 2 from 8 to 3 +move 13 from 1 to 9 +move 2 from 3 to 5 +move 8 from 5 to 9 +move 4 from 2 to 1 +move 2 from 6 to 7 +move 10 from 5 to 9 +move 4 from 7 to 2 +move 2 from 2 to 3 +move 9 from 9 to 2 +move 4 from 4 to 5 +move 4 from 5 to 4 +move 5 from 1 to 4 +move 10 from 4 to 5 +move 22 from 9 to 1 +move 2 from 2 to 7 +move 3 from 2 to 1 +move 6 from 2 to 6 +move 1 from 7 to 1 +move 10 from 5 to 7 +move 15 from 1 to 4 +move 13 from 1 to 5 +move 3 from 6 to 8 +move 1 from 8 to 9 + diff --git a/inputs/sample.txt b/inputs/sample.txt index a696285..edacdb9 100644 --- a/inputs/sample.txt +++ b/inputs/sample.txt @@ -1,7 +1,10 @@ -2-4,6-8 -2-3,4-5 -5-7,7-9 -2-8,3-7 -6-6,4-6 -2-6,4-8 + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 diff --git a/src/main.rs b/src/main.rs index 00001e9..a688421 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,44 +1,85 @@ #![feature(test)] extern crate test; -const INPUTS: [&[u8]; 2] = [ - include_bytes!("../inputs/sample.txt"), - include_bytes!("../inputs/input.txt"), +const INPUTS: [&str; 2] = [ + include_str!("../inputs/sample.txt"), + include_str!("../inputs/input.txt"), ]; -fn parse(input: &[u8]) -> Vec<((u8, u8), (u8, u8))> { - input - .split(|&c| c == b'\n') - .filter(|line| !line.is_empty()) - .map(|line| { - let mut line = line.splitn(2, |&c| c == b'-'); - let e1 = line.next().unwrap(); +#[derive(Debug)] +struct Stack { + stacks: Vec>, + instructions: Vec, +} - let rest = line.next().unwrap(); - let mut line = rest.split(|&c| c == b','); - let e2 = line.next().unwrap(); +#[derive(Debug)] +struct Instruction { + count: usize, + from: usize, + to: usize, +} - let rest = line.next().unwrap(); - let mut line = rest.splitn(2, |&x| x == b'-'); - let e3 = line.next().unwrap(); - let e4 = line.next().unwrap(); +fn parse(input: &'static str) -> Stack { + let mut v = input.split("\n\n"); - ( - ( - e1.get(1) - .map_or(e1[0] - b'0', |c| ((e1[0] - b'0') * 10 + c - b'0')), - e2.get(1) - .map_or(e2[0] - b'0', |c| ((e2[0] - b'0') * 10 + c - b'0')), - ), - ( - e3.get(1) - .map_or(e3[0] - b'0', |c| ((e3[0] - b'0') * 10 + c - b'0')), - e4.get(1) - .map_or(e4[0] - b'0', |c| ((e4[0] - b'0') * 10 + c - b'0')), - ), - ) + let mut stack_input = v + .next() + .unwrap() + .lines() + .map(|c| c.chars().collect::>()) + .rev(); + let mut stacks: Vec> = vec![]; + + let stack_names = stack_input.next().unwrap(); + + let containers: Vec> = stack_input.collect(); + + for (i, v) in stack_names.into_iter().enumerate() { + if v == ' ' { + continue; + } + let v: usize = (v as u8 - b'0') as usize; + + if stacks.len() <= v - 1 { + stacks.push(vec![]); + } + + for container in containers.iter() { + if container[i] == ' ' { + continue; + } + stacks[v - 1].push(container[i]); + } + } + + let instructions: Vec = v + .next() + .unwrap() + .lines() + .map(|line: &str| { + let line: String = line + .chars() + .filter(|c| c.is_numeric() | c.is_whitespace()) + .collect(); + + let numbers: Vec = line + .split(' ') + .filter(|c| !c.is_empty()) + .map(|c| c.parse::().unwrap()) + .collect(); + + Instruction { + count: numbers[0] as usize, + from: numbers[1] as usize, + to: numbers[2] as usize, + } }) - .collect() + .collect(); + + Stack { + instructions, + stacks, + } } fn main() { @@ -46,21 +87,24 @@ fn main() { let output = parse(input); let score = solution(output); - println!("{:?}", score); + println!("{}", score); } } -fn solution(input: Vec<((u8, u8), (u8, u8))>) -> usize { - let mut score = 0; - - for ((a0, a1), (b0, b1)) in input { - score += ((a0 <= b0 && a1 >= b1) - || (b0 <= a0 && b1 >= a1) - || (b0 >= a0 && b0 <= a1) - || (a0 >= b0 && a0 <= b1)) as usize; +fn solution(mut input: Stack) -> String { + for ins in input.instructions { + for _ in 0..ins.count { + if let Some(v) = input.stacks[ins.from - 1].pop() { + input.stacks[ins.to - 1].push(v); + } + } } - score + input + .stacks + .into_iter() + .map(|c| *c.last().unwrap()) + .collect() } #[bench]