wheelsmanx

AOC DAY 4 PART 1 Source.cpp

May 24th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. #include "Header.h"
  6.  
  7. using namespace std;
  8.  
  9.  
  10.  
  11. class charCount {
  12. public:
  13. char cInput;
  14. size_t cCount;
  15. charCount(char input, size_t inputC) {
  16. this->cInput = input;
  17. this->cCount = inputC;
  18. }
  19. };
  20.  
  21. class dataParse {
  22. public:
  23. string sortedUni;
  24. string testSum = "";
  25. string checkSum;
  26. int roomNumber;
  27. string data;
  28. string uni;
  29. vector <charCount> cC;
  30. dataParse(string input) {
  31. this->checkSum = input.substr(input.length() - 6, 5);
  32. this->roomNumber = String2Int(input.substr(input.length() - 10, 3));
  33. this->data = input.substr(0, input.length() - 11);
  34. }
  35. dataParse() {
  36.  
  37. }
  38. };
  39. int newCounter = 0;
  40. vector <string> dataFile;
  41. vector <string> testFile;
  42. vector <dataParse> dataClass;
  43. vector <charCount> charHolder;
  44.  
  45. void main() {
  46. dataFile = getInputFile("C:\\temp\\AOC\\day4Input.txt");
  47. for (int i = 0; i < dataFile.size(); i++) {
  48. dataClass.push_back(dataFile[i]);
  49. }
  50. for (int i = 0; i < dataClass.size(); i++) {
  51. dataClass[i].uni = Uni_str(dataClass[i].data);
  52. sort(dataClass[i].uni.begin(), dataClass[i].uni.end());
  53. }
  54. for (int i = 0; i < dataClass.size(); i++) {
  55. dataParse *Ptr = new dataParse();
  56. *Ptr = dataClass[i];
  57. for (int b = 0; b < Ptr->uni.length(); b++) {
  58. size_t n = std::count(Ptr->data.begin(), Ptr->data.end(), Ptr->uni[b]);
  59. charCount temp(Ptr->uni[b], n);
  60. charHolder.push_back(temp);
  61. }
  62. dataClass[i].cC = charHolder;
  63. charHolder.clear();
  64. }
  65. for (int i = 0; i < dataClass.size(); i++) {
  66. sort(dataClass[i].cC.begin(), dataClass[i].cC.end(), [](const charCount& lhs, const charCount& rhs)
  67. {
  68. return lhs.cCount > rhs.cCount;
  69. });
  70. }
  71. for (int i = 0; i < dataClass.size(); i++) {
  72. for (int c = 0; c < 5; c++) {
  73. if (dataClass[i].cC[c].cInput == ' ' || dataClass[i].cC[c].cInput == '-') {
  74. dataClass[i].cC.erase(dataClass[i].cC.begin() + c);
  75. }
  76. dataClass[i].testSum = dataClass[i].testSum + dataClass[i].cC[c].cInput;
  77. }
  78. //cout << endl;
  79. //cout << dataClass[i].checkSum << endl;
  80. //cout << dataClass[i].testSum << endl;
  81. if (dataClass[i].testSum == dataClass[i].checkSum) {
  82. newCounter = newCounter + dataClass[i].roomNumber;
  83. }
  84.  
  85. }
  86.  
  87. cout << newCounter << endl;
  88. system("pause");
  89. }
Advertisement
Add Comment
Please, Sign In to add comment