fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <string>
  5. #include <algorithm>
  6.  
  7. // Liste der bekannten Substrings
  8. const std::map<int, std::vector<std::string>> mTeilstrings = {
  9. {1, {"[8A]", "[UKE]"}},
  10. {2, {"[Dings da]", "[DingsBums]"}},
  11. {3, {"[GF]", "[MOD]", "[MOD3]", "[MOD6]"}},
  12. {4, {"[Weiss]", "[Rot]", "[Orange-Blau]"}}
  13. };
  14.  
  15.  
  16. auto parse_line(std::string line,
  17. const std::map<int, std::vector<std::string>> &substring_groups)
  18. {
  19. std::vector<std::pair<std::string, int>> result;
  20. for (auto const& kv : substring_groups)
  21. {
  22. for (auto const &substring: kv.second)
  23. {
  24. std::string::size_type pos = 0;
  25. while ((pos = line.find(substring, pos)) != std::string::npos)
  26. {
  27. result.push_back(std::make_pair(substring, kv.first));
  28. pos += substring.length();
  29. }
  30. }
  31. }
  32. return result;
  33. }
  34.  
  35. int main()
  36. {
  37. for(std::string line; std::getline(std::cin, line);)
  38. {
  39. auto substring_pairs = parse_line(line, mTeilstrings);
  40. std::sort(substring_pairs.begin(), substring_pairs.end(),
  41. [](auto left_pair, auto right_pair){return left_pair.second > right_pair.second;});
  42. std::cout << "Zeile \"" << line << "\" wird zerlegt in '";
  43. for (auto pair: substring_pairs)
  44. std::cout << "{\"" << pair.first << "\", " << pair.second << "}, ";
  45. std::cout << '\n';
  46. }
  47. }
Success #stdin #stdout 0s 5316KB
stdin
[8A][Dings da][Orange-Blau]
[MOD][Weiss][UKE]
[GF][MOD3][Dings da]
[MOD][Black][UKE]
[GF][MOD3][Dings da][GF][MOD3][Dings da]
stdout
Zeile "[8A][Dings da][Orange-Blau]" wird zerlegt in '{"[Orange-Blau]", 4}, {"[Dings da]", 2}, {"[8A]", 1}, 
Zeile "[MOD][Weiss][UKE]" wird zerlegt in '{"[Weiss]", 4}, {"[MOD]", 3}, {"[UKE]", 1}, 
Zeile "[GF][MOD3][Dings da]" wird zerlegt in '{"[GF]", 3}, {"[MOD3]", 3}, {"[Dings da]", 2}, 
Zeile "[MOD][Black][UKE]" wird zerlegt in '{"[MOD]", 3}, {"[UKE]", 1}, 
Zeile "[GF][MOD3][Dings da][GF][MOD3][Dings da]" wird zerlegt in '{"[GF]", 3}, {"[GF]", 3}, {"[MOD3]", 3}, {"[MOD3]", 3}, {"[Dings da]", 2}, {"[Dings da]", 2},