simplified d2 and add python
This commit is contained in:
		
							
								
								
									
										15
									
								
								02/part1.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								02/part1.c
									
									
									
									
									
								
							| @@ -2,19 +2,6 @@ | |||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #define MAX_LENGTH 165 | #define MAX_LENGTH 165 | ||||||
|  |  | ||||||
| char* skip_color(char* c) { |  | ||||||
|     switch (*c) { |  | ||||||
|         case 'r': |  | ||||||
|             return c + 3; |  | ||||||
|         case 'g': |  | ||||||
|             return c + 5; |  | ||||||
|         case 'b': |  | ||||||
|             return c + 4; |  | ||||||
|     } |  | ||||||
|     abort(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| int main(void) { | int main(void) { | ||||||
|     char buf[MAX_LENGTH]; |     char buf[MAX_LENGTH]; | ||||||
|     int game_num, cubes, sum; |     int game_num, cubes, sum; | ||||||
| @@ -32,7 +19,7 @@ int main(void) { | |||||||
|                 (*c == 'b' && cubes > 14)) { |                 (*c == 'b' && cubes > 14)) { | ||||||
|                 game_num = 0; |                 game_num = 0; | ||||||
|             } |             } | ||||||
|             c = skip_color(c); |             for (; *c >= 'a' && *c <= 'z'; c++); | ||||||
|         } |         } | ||||||
|         sum += game_num; |         sum += game_num; | ||||||
|     } |     } | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								02/part1.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								02/part1.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | import re, sys | ||||||
|  | print(sum( | ||||||
|  |     int(re.search("[0-9]+", line).group()) | ||||||
|  |         for line in sys.stdin.readlines() | ||||||
|  |         if all(int(r) <= 12 for r in re.findall(r"[0-9]+(?= red)", line)) | ||||||
|  |         and all(int(g) <= 13 for g in re.findall(r"[0-9]+(?= green)", line)) | ||||||
|  |         and all(int(b) <= 14 for b in re.findall(r"[0-9]+(?= blue)", line)))) | ||||||
							
								
								
									
										24
									
								
								02/part2.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								02/part2.c
									
									
									
									
									
								
							| @@ -2,35 +2,23 @@ | |||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #define MAX_LENGTH 165 | #define MAX_LENGTH 165 | ||||||
|  |  | ||||||
| char* skip_color(char* c) { |  | ||||||
|     switch (*c) { |  | ||||||
|         case 'r': |  | ||||||
|             return c + 3; |  | ||||||
|         case 'g': |  | ||||||
|             return c + 5; |  | ||||||
|         case 'b': |  | ||||||
|             return c + 4; |  | ||||||
|     } |  | ||||||
|     abort(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| int main(void) { | int main(void) { | ||||||
|     char buf[MAX_LENGTH]; |     char buf[MAX_LENGTH]; | ||||||
|     int game_num, color_num, sum, max_r, max_g, max_b; |     int color_num, sum, max_r, max_g, max_b; | ||||||
|  |  | ||||||
|     sum = 0; |     sum = 0; | ||||||
|     while (fgets(buf, MAX_LENGTH, stdin)) { |     while (fgets(buf, MAX_LENGTH, stdin)) { | ||||||
|         char* c = buf; |         char* c = buf + 5;  // +5 skips the "Game " | ||||||
|         game_num = strtol(c + 5, &c, 10);  // +5 skips the "Game " |         for (; *c != ':'; c++); | ||||||
|         max_r = max_g = max_b = 0; |  | ||||||
|  |  | ||||||
|  |         max_r = max_g = max_b = 0; | ||||||
|         while (*c != '\n') { |         while (*c != '\n') { | ||||||
|             color_num = strtol(c + 2, &c, 10);  // +2 skips ": ", ", ", or "; " |             color_num = strtol(c + 2, &c, 10);  // +2 skips ": ", ", " or "; " | ||||||
|             c++;  // +1 skips the space |             c++;  // +1 skips the space | ||||||
|             max_r = (*c == 'r' && color_num > max_r) ? color_num : max_r; |             max_r = (*c == 'r' && color_num > max_r) ? color_num : max_r; | ||||||
|             max_g = (*c == 'g' && color_num > max_g) ? color_num : max_g; |             max_g = (*c == 'g' && color_num > max_g) ? color_num : max_g; | ||||||
|             max_b = (*c == 'b' && color_num > max_b) ? color_num : max_b; |             max_b = (*c == 'b' && color_num > max_b) ? color_num : max_b; | ||||||
|             c = skip_color(c); |             for (; *c >= 'a' && *c <= 'z'; c++); | ||||||
|         } |         } | ||||||
|         sum += max_r * max_g * max_b; |         sum += max_r * max_g * max_b; | ||||||
|     } |     } | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								02/part2.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								02/part2.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | import math, re, sys | ||||||
|  | print(sum(math.prod(max(int(n) for n in re.findall(f"[0-9]+(?= {color})", line)) | ||||||
|  |               for color in ("red", "green", "blue")) | ||||||
|  |           for line in open("input.txt", "rt").readlines())) | ||||||
		Reference in New Issue
	
	Block a user
	 Duy Truong
					Duy Truong