Guest User

Untitled

a guest
Dec 1st, 2023
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int find_numbers(string line) {
  6.     const vector<string> numbers = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
  7.     // index, value storing
  8.     vector<vector<int>> found_numbers;
  9.  
  10.     // find all digit numbers and store
  11.     for (int i = 0; i < line.size(); i++) {
  12.         if (isdigit(line[i])) {
  13.             found_numbers.push_back({i, line[i] - '0'});
  14.         }
  15.     }
  16.  
  17.     // find all word numbers and store
  18.     for (int i = 0; i < numbers.size(); i++) {
  19.         int occurence = line.find(numbers[i], 0);
  20.         while (occurence != string::npos) {
  21.             found_numbers.push_back({occurence,  1 + i});
  22.             occurence = line.find(numbers[i], occurence + 1);
  23.         }
  24.     }
  25.  
  26.  
  27.     // // sort the vector
  28.     vector<int> sorted_numbers;
  29.     for (int i = 0; i < line.size(); i++) {
  30.         for (int j = 0; j < found_numbers.size(); j++) {
  31.             if (found_numbers[j][0] == i) {
  32.                 sorted_numbers.push_back(found_numbers[j][1]);
  33.                 found_numbers.erase(found_numbers.begin() + j);
  34.             }
  35.         }
  36.     }
  37.  
  38.     for (int i = 0; i < sorted_numbers.size(); i++) {
  39.         cout << sorted_numbers[i];
  40.     }
  41.     cout << " --> ";
  42.  
  43.     // compose the final number and return
  44.     if (sorted_numbers.size() == 1) {
  45.         return stoi(to_string(sorted_numbers[0]) + to_string(sorted_numbers[0]));
  46.     } else {
  47.         return stoi(to_string(sorted_numbers[0]) + to_string(sorted_numbers[sorted_numbers.size() - 1]));
  48.     }
  49. }    
  50.  
  51. int main() {
  52.     int result = 0;
  53.     string line;
  54.     ifstream file("input.txt");
  55.     if (file.is_open()) {
  56.         while (getline(file, line)) {
  57.             cout << line << " --> ";
  58.             int number = find_numbers(line);
  59.             cout << number << "\n";
  60.             cout << "-------------------\n";
  61.             result += number;
  62.         }
  63.         file.close();
  64.     }
  65.     cout << result << "\n";
  66.     return 0;
  67. }
Add Comment
Please, Sign In to add comment