Advertisement
Spocoman

02. Treasure Hunt

Nov 10th, 2023
897
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.38 KB | None | 1 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. vector<string> vectorFiller(string s, char sep) {
  10.     vector<string> v;
  11.     string word = "";
  12.  
  13.     for (int i = 0; i < s.length(); i++) {
  14.         if (s[i] == sep) {
  15.             v.push_back(word);
  16.             word = "";
  17.         }
  18.         else {
  19.             word += s[i];
  20.         }
  21.     }
  22.     v.push_back(word);
  23.     return v;
  24. }
  25.  
  26. int indexFinder(string s, vector<string> v) {
  27.     for (int i = 0; i < v.size(); i++) {
  28.         if (s == v[i]) {
  29.             return i;
  30.         }
  31.     }
  32.     return -1;
  33. }
  34.  
  35. vector<string> vectorCutter(vector<string> v, int index) {
  36.     vector<string> sub;
  37.     for (int i = index; i <= v.size(); i++) {
  38.         sub.push_back(v[index]);
  39.         v.erase(v.begin() + index);
  40.     }
  41.     return sub;
  42. }
  43.  
  44. int main() {
  45.     string line;
  46.     getline(cin, line);
  47.  
  48.     auto chest = vectorFiller(line, '|');
  49.  
  50.     while (true) {
  51.         getline(cin, line);
  52.         auto tokens = vectorFiller(line, ' ');
  53.         string command = tokens[0];
  54.         if (command == "Yohoho!") {
  55.             break;
  56.         }
  57.         else if (command == "Loot") {
  58.             for (int i = 1; i < tokens.size(); i++) {
  59.                 if (indexFinder(tokens[i], chest) == -1) {
  60.                     chest.insert(chest.begin(), tokens[i]);
  61.                 }
  62.             }
  63.         }
  64.         else if (command == "Drop") {
  65.             int index = stoi(tokens[1]);
  66.             if (index >= 0 && index < chest.size()) {
  67.                 chest.push_back(chest[index]);
  68.                 chest.erase(chest.begin() + index);
  69.             }
  70.         }
  71.         else if (command == "Steal") {
  72.             int count = stoi(tokens[1]);
  73.             for (int i = chest.size() - count; i < chest.size() - 1; i++) {
  74.                 cout << chest[i] << ", ";
  75.             }
  76.             cout << chest.back() << endl;
  77.             chest.resize(chest.size() - count);
  78.         }
  79.     }
  80.  
  81.     if (chest.size() == 0) {
  82.         cout << "Failed treasure hunt.\n";
  83.     }
  84.     else {
  85.         double chestItemLength = 0;
  86.         for (int i = 0; i < chest.size(); i++) {
  87.             chestItemLength += chest[i].length();
  88.         }
  89.         cout << "Average treasure gain: " << fixed << setprecision(2) << chestItemLength / chest.size() << " pirate credits.\n";
  90.     }
  91.     return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement