#include <algorithm>
#include <iostream>
#include <string>
class both_equal_to
{
char value;
public:
both_equal_to(char ch) : value(ch) {}
bool operator()(char first, char second) const
{
return (first == second) && (first == value);
}
};
int main()
{
std::string text("_hello___world__");
text.erase(
std::unique(
text.begin(),
text.end(),
both_equal_to('_')
// [](char a, char b){ return (a == '_') && (b == '_'); }
),
text.end()
);
std::cout << text << '\n';
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKY2xhc3MgYm90aF9lcXVhbF90bwp7CiAgICBjaGFyIHZhbHVlOwpwdWJsaWM6CiAgICBib3RoX2VxdWFsX3RvKGNoYXIgY2gpIDogdmFsdWUoY2gpIHt9CgogICAgYm9vbCBvcGVyYXRvcigpKGNoYXIgZmlyc3QsIGNoYXIgc2Vjb25kKSBjb25zdAogICAgewogICAgICAgIHJldHVybiAoZmlyc3QgPT0gc2Vjb25kKSAmJiAoZmlyc3QgPT0gdmFsdWUpOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnN0cmluZyB0ZXh0KCJfaGVsbG9fX193b3JsZF9fIik7CgogICAgdGV4dC5lcmFzZSgKICAgICAgICBzdGQ6OnVuaXF1ZSgKICAgICAgICAgICAgdGV4dC5iZWdpbigpLAogICAgICAgICAgICB0ZXh0LmVuZCgpLAogICAgICAgICAgICBib3RoX2VxdWFsX3RvKCdfJykKICAgICAgICAgICAgLy8gW10oY2hhciBhLCBjaGFyIGIpeyByZXR1cm4gKGEgPT0gJ18nKSAmJiAoYiA9PSAnXycpOyB9CiAgICAgICAgKSwKICAgICAgICB0ZXh0LmVuZCgpCiAgICApOwoKICAgIHN0ZDo6Y291dCA8PCB0ZXh0IDw8ICdcbic7CgogICAgcmV0dXJuIDA7Cn0K