#include <iostream>
#include <vector>
#include <map>
#include <string>
// Liste der bekannten Substrings
const std::map<int, std::vector<std::string>> mTeilstrings = {
{1, {"[8A]", "[UKE]"}},
{2, {"[Dings da]", "[DingsBums]"}},
{3, {"[GF]", "[MOD]", "[MOD3]", "[MOD6]"}},
{4, {"[Weiss]", "[Rot]", "[Orange-Blau]"}}
};
auto parse_line(std::string line,
const std::map<int, std::vector<std::string>> &substring_groups)
{
std::vector<std::pair<std::string, int>> result;
for (auto const& kv : substring_groups)
{
for (auto const &substring: kv.second)
{
if (line.find(substring) != std::string::npos)
result.push_back(std::make_pair(substring, kv.first));
}
}
return result;
}
int main()
{
for(std::string line; std::getline(std::cin, line);)
{
auto substring_pairs = parse_line(line, mTeilstrings);
std::cout << "Zeile \"" << line << "\" wird zerlegt in {";
for (auto pair: substring_pairs)
std::cout << "(\"" << pair.first << "\", " << pair.second << "), ";
std::cout << "}\n";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgoKLy8gTGlzdGUgZGVyIGJla2FubnRlbiBTdWJzdHJpbmdzCmNvbnN0IHN0ZDo6bWFwPGludCwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+PiBtVGVpbHN0cmluZ3MgPSB7CiAgICB7MSwgeyJbOEFdIiwgIltVS0VdIn19LAogICAgezIsIHsiW0RpbmdzIGRhXSIsICJbRGluZ3NCdW1zXSJ9fSwKICAgIHszLCB7IltHRl0iLCAiW01PRF0iLCAiW01PRDNdIiwgIltNT0Q2XSJ9fSwKICAgIHs0LCB7IltXZWlzc10iLCAiW1JvdF0iLCAiW09yYW5nZS1CbGF1XSJ9fQp9OwoKCmF1dG8gcGFyc2VfbGluZShzdGQ6OnN0cmluZyBsaW5lLCAKCSAgIAkJICAgY29uc3Qgc3RkOjptYXA8aW50LCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4+ICZzdWJzdHJpbmdfZ3JvdXBzKQp7CglzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIGludD4+IHJlc3VsdDsKCWZvciAoYXV0byBjb25zdCYga3YgOiBzdWJzdHJpbmdfZ3JvdXBzKQoJewoJCWZvciAoYXV0byBjb25zdCAmc3Vic3RyaW5nOiAga3Yuc2Vjb25kKQoJCXsKCQkJaWYgKGxpbmUuZmluZChzdWJzdHJpbmcpICE9IHN0ZDo6c3RyaW5nOjpucG9zKQoJCQkJcmVzdWx0LnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihzdWJzdHJpbmcsIGt2LmZpcnN0KSk7CgkJfQoJfQoJcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKQp7Cglmb3Ioc3RkOjpzdHJpbmcgbGluZTsgc3RkOjpnZXRsaW5lKHN0ZDo6Y2luLCBsaW5lKTspCgl7CgkJYXV0byBzdWJzdHJpbmdfcGFpcnMgPSBwYXJzZV9saW5lKGxpbmUsIG1UZWlsc3RyaW5ncyk7CgkJc3RkOjpjb3V0IDw8ICJaZWlsZSBcIiIgPDwgbGluZSA8PCAiXCIgd2lyZCB6ZXJsZWd0IGluIHsiOwoJCWZvciAoYXV0byBwYWlyOiBzdWJzdHJpbmdfcGFpcnMpCgkJCXN0ZDo6Y291dCA8PCAiKFwiIiA8PCBwYWlyLmZpcnN0IDw8ICJcIiwgIiA8PCBwYWlyLnNlY29uZCA8PCAiKSwgIjsKCQlzdGQ6OmNvdXQgPDwgIn1cbiI7Cgl9Cn0=
Zeile "[8A][Dings da][Orange-Blau]" wird zerlegt in {("[8A]", 1), ("[Dings da]", 2), ("[Orange-Blau]", 4), }
Zeile "[MOD][Weiss][UKE]" wird zerlegt in {("[UKE]", 1), ("[MOD]", 3), ("[Weiss]", 4), }
Zeile "[GF][MOD3][Dings da]" wird zerlegt in {("[Dings da]", 2), ("[GF]", 3), ("[MOD3]", 3), }
Zeile "[MOD][Black][UKE]" wird zerlegt in {("[UKE]", 1), ("[MOD]", 3), }
Zeile "[GF][MOD3][Dings da][GF][MOD3][Dings da]" wird zerlegt in {("[Dings da]", 2), ("[GF]", 3), ("[MOD3]", 3), }