Add 2022 Day 3.
This commit is contained in:
		
							
								
								
									
										32
									
								
								2022/puzzle-03-01.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								2022/puzzle-03-01.cc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| // | ||||
| // Created by Matthew Gretton-Dann on 02/12/2022. | ||||
| // | ||||
|  | ||||
| #include <algorithm> | ||||
| #include <cstdlib> | ||||
| #include <iostream> | ||||
| #include <map> | ||||
| #include <string> | ||||
|  | ||||
| using Int = std::int64_t; | ||||
|  | ||||
| auto main() -> int | ||||
| { | ||||
|   std::string letters{" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"}; | ||||
|  | ||||
|   Int score{0}; | ||||
|   std::string line; | ||||
|   while (std::getline(std::cin, line)) { | ||||
|     auto left{line.substr(0, line.size() / 2)}; | ||||
|     auto right{line.substr(line.size() / 2)}; | ||||
|     std::sort(left.begin(), left.end()); | ||||
|         std::sort(right.begin(), right.end()); | ||||
|     std::string result; | ||||
|     std::set_intersection(left.begin(), left.end(), right.begin(), right.end(), | ||||
|                           std::back_inserter(result)); | ||||
|     assert(!result.empty()); | ||||
|     score += letters.find(result[0]); | ||||
|   } | ||||
|   std::cout << "Score: " << score << '\n'; | ||||
|   return EXIT_SUCCESS; | ||||
| } | ||||
							
								
								
									
										46
									
								
								2022/puzzle-03-02.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								2022/puzzle-03-02.cc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| // | ||||
| // Created by Matthew Gretton-Dann on 02/12/2022. | ||||
| // | ||||
|  | ||||
| #include <algorithm> | ||||
| #include <cstdlib> | ||||
| #include <iostream> | ||||
| #include <map> | ||||
| #include <string> | ||||
|  | ||||
| using Int = std::int64_t; | ||||
|  | ||||
| auto main() -> int | ||||
| { | ||||
|   std::string letters{" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"}; | ||||
|  | ||||
|   Int score{0}; | ||||
|   std::string line; | ||||
|   Int state{0}; | ||||
|   std::string current; | ||||
|   while (std::getline(std::cin, line)) { | ||||
|     std::sort(line.begin(), line.end()); | ||||
|     if (state == 0) { | ||||
|       current = line; | ||||
|       ++state; | ||||
|     } | ||||
|     else if (state == 1) { | ||||
|       std::string r; | ||||
|       std::set_intersection(current.begin(), current.end(), line.begin(), line.end(), | ||||
|                             std::back_inserter(r)); | ||||
|       current = r; | ||||
|       ++state; | ||||
|     } | ||||
|     else if (state == 2) { | ||||
|       std::string r; | ||||
|       std::set_intersection(current.begin(), current.end(), line.begin(), line.end(), | ||||
|                             std::back_inserter(r)); | ||||
|       state = 0; | ||||
|       assert(!r.empty()); | ||||
|       score += letters.find(r[0]); | ||||
|     } | ||||
|   } | ||||
|   assert(state == 0); | ||||
|   std::cout << "Score: " << score << '\n'; | ||||
|   return EXIT_SUCCESS; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user