Commit MetaInfo

Revisão6cdd7bbb98b9ccafd5a32a77e8fc90cc89647046 (tree)
Hora2021-12-07 18:15:33
AutorSecT
CommiterSecT

Mensagem de Log

Task 2021 04 B CPP PASS

Mudança Sumário

Diff

diff -r 221a310b5d15 -r 6cdd7bbb98b9 Cpp/adventOfCode/tasks.cpp
--- a/Cpp/adventOfCode/tasks.cpp Tue Dec 07 09:35:31 2021 +0100
+++ b/Cpp/adventOfCode/tasks.cpp Tue Dec 07 10:15:33 2021 +0100
@@ -1445,7 +1445,7 @@
14451445 {
14461446 if( board->get(i, 0) == -1 && board->get(i, 1) == -1 && board->get(i, 2) == -1 && board->get(i, 3) == -1 && board->get(i, 4) == -1 )
14471447 {
1448- return true;
1448+ return true;
14491449 }
14501450 }
14511451
@@ -1453,7 +1453,7 @@
14531453 {
14541454 if( board->get(0, i) == -1 && board->get(1, i) == -1 && board->get(2, i) == -1 && board->get(3, i) == -1 && board->get(4, i) == -1 )
14551455 {
1456- return true;
1456+ return true;
14571457 }
14581458 }
14591459
@@ -1465,12 +1465,12 @@
14651465 int res = 0;
14661466
14671467 for(int i =0; i<5; i++){
1468-
1468+
14691469 for(int j=0; j<5;j++)
14701470 {
14711471 if(board->get(i,j) != -1)
14721472 {
1473- res+= board->get(i,j);
1473+ res+= board->get(i,j);
14741474 }
14751475 }
14761476
@@ -1484,6 +1484,9 @@
14841484 {
14851485 int result = 0;
14861486
1487+ boards.clear();
1488+ randomlySelectedNumbers.clear();
1489+
14871490 parseRandomlySelectedNumbers(inputData[0]);
14881491
14891492 parseBoards(inputData);
@@ -1499,17 +1502,12 @@
14991502 {
15001503 result = calculateScore( (*board), (*selectedNum) );
15011504
1502- boards.clear();
1503- randomlySelectedNumbers.clear();
1504-
15051505 return result;
15061506 }
15071507 }
15081508
15091509 }
15101510
1511- boards.clear();
1512- randomlySelectedNumbers.clear();
15131511
15141512 return result;
15151513 }
@@ -1518,5 +1516,43 @@
15181516 {
15191517 int result = 0;
15201518
1519+ boards.clear();
1520+ randomlySelectedNumbers.clear();
1521+
1522+ std::vector<int> boardsThatWon;
1523+
1524+ parseRandomlySelectedNumbers(inputData[0]);
1525+
1526+ parseBoards(inputData);
1527+
1528+
1529+ for(auto selectedNum = randomlySelectedNumbers.begin(); selectedNum != randomlySelectedNumbers.end(); selectedNum++)
1530+ {
1531+ int currentBoardId = 0;
1532+ for(auto board = boards.begin(); board != boards.end(); board++)
1533+ {
1534+ markNumAsSelectedOnBoard( (*board), (*selectedNum) );
1535+
1536+ if( checkIfWin( (*board) ) )
1537+ {
1538+ if(std::find(boardsThatWon.begin(), boardsThatWon.end(), currentBoardId) == boardsThatWon.end())
1539+ {
1540+ boardsThatWon.push_back(currentBoardId);
1541+
1542+ if(boardsThatWon.size() == boards.size()){
1543+ result = calculateScore( (*board), (*selectedNum) );
1544+ return result;
1545+
1546+ }
1547+ }
1548+
1549+ }
1550+ currentBoardId++;
1551+ }
1552+
1553+ }
1554+
1555+
1556+
15211557 return result;
15221558 }
\ No newline at end of file
diff -r 221a310b5d15 -r 6cdd7bbb98b9 Cpp/adventOfCode/tasks.h
--- a/Cpp/adventOfCode/tasks.h Tue Dec 07 09:35:31 2021 +0100
+++ b/Cpp/adventOfCode/tasks.h Tue Dec 07 10:15:33 2021 +0100
@@ -164,10 +164,10 @@
164164 testValuesForInputFile[2] = "15 91 51 68 49";
165165
166166 testValuesForExamples[0] = 4512;
167- testValuesForExamples[1] = 0;
167+ testValuesForExamples[1] = 1924;
168168
169169 testValuesForTask[0] = 16674;
170- testValuesForTask[1] = 0;
170+ testValuesForTask[1] = 7075;
171171
172172 }
173173
Show on old repository browser