//C++11 required
#include <iostream>
#include <iterator>
#include <vector>
#include <random>
#include <algorithm>
class wind {
public:
//bitfields
enum dirType {first,north=first,east,south,west,last=west} dir : 2;
unsigned strength : 14;
char getName() const {
const static char windName[dirType::last+1] {'n','e','s','w'};
return windName[dir];
}
};
std::ostream& operator<<(std::ostream& os, const wind& w) {
return os << '{' << w.getName() << ',' << w.strength << '}';
}
int main() {
std::vector<wind> v(12);
std::mt19937 gen { std::random_device()() };
std::uniform_int_distribution<int> rand_d(wind::dirType::first, wind::dirType::last+1);
std::uniform_int_distribution<int> rand_s(0,100);
std::generate_n(v.begin(), v.size(), [&] {
return wind {static_cast<wind::dirType>(rand_d(gen)), rand_s(gen)};
});
std::copy(v.begin(), v.end(), std::ostream_iterator<wind>(std::cout, " "));
size_t count = std::count_if(v.begin(), v.end(), [](const wind& item) {
return item.dir==wind::dirType::south && item.strength > 8;
});
std::cout << "\n----\ntotal ( south, more than 8 )\t: " << count << std::endl;
}
Ly9DKysxMSByZXF1aXJlZAoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxyYW5kb20+CiNpbmNsdWRlIDxhbGdvcml0aG0+CgpjbGFzcyB3aW5kIHsKICAgIHB1YmxpYzoKICAgIC8vYml0ZmllbGRzCiAgICBlbnVtIGRpclR5cGUge2ZpcnN0LG5vcnRoPWZpcnN0LGVhc3Qsc291dGgsd2VzdCxsYXN0PXdlc3R9IGRpciA6IDI7CiAgICB1bnNpZ25lZCBzdHJlbmd0aCA6IDE0OwogICAgY2hhciBnZXROYW1lKCkgY29uc3QgewogICAgICAgIGNvbnN0IHN0YXRpYyBjaGFyIHdpbmROYW1lW2RpclR5cGU6Omxhc3QrMV0geyduJywnZScsJ3MnLCd3J307CiAgICAgICAgcmV0dXJuIHdpbmROYW1lW2Rpcl07CiAgICB9Cn07CgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3Qgd2luZCYgdykgewogICAgcmV0dXJuIG9zIDw8ICd7JyA8PCB3LmdldE5hbWUoKSA8PCAnLCcgPDwgdy5zdHJlbmd0aCA8PCAnfSc7Cn0KCmludCBtYWluKCkgewogICAgc3RkOjp2ZWN0b3I8d2luZD4gdigxMik7CgogICAgc3RkOjptdDE5OTM3IGdlbiB7IHN0ZDo6cmFuZG9tX2RldmljZSgpKCkgfTsgICAgCiAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ+IHJhbmRfZCh3aW5kOjpkaXJUeXBlOjpmaXJzdCwgd2luZDo6ZGlyVHlwZTo6bGFzdCsxKTsKICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludD4gcmFuZF9zKDAsMTAwKTsKICAgIAogICAgc3RkOjpnZW5lcmF0ZV9uKHYuYmVnaW4oKSwgdi5zaXplKCksIFsmXSB7CiAgICAgICAgcmV0dXJuIHdpbmQge3N0YXRpY19jYXN0PHdpbmQ6OmRpclR5cGU+KHJhbmRfZChnZW4pKSwgcmFuZF9zKGdlbil9OwogICAgfSk7CiAgICAKICAgIHN0ZDo6Y29weSh2LmJlZ2luKCksIHYuZW5kKCksIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjx3aW5kPihzdGQ6OmNvdXQsICIgIikpOwogICAgCiAgICBzaXplX3QgY291bnQgPSBzdGQ6OmNvdW50X2lmKHYuYmVnaW4oKSwgdi5lbmQoKSwgW10oY29uc3Qgd2luZCYgaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLmRpcj09d2luZDo6ZGlyVHlwZTo6c291dGggJiYgaXRlbS5zdHJlbmd0aCA+IDg7CiAgICB9KTsKICAgIHN0ZDo6Y291dCA8PCAiXG4tLS0tXG50b3RhbCAoIHNvdXRoLCBtb3JlIHRoYW4gOCApXHQ6ICIgPDwgY291bnQgPDwgc3RkOjplbmRsOwp9
{s,53} {e,99} {n,41} {n,82} {s,25} {n,29} {s,38} {s,19} {e,89} {n,3} {n,69} {e,89}
----
total ( south, more than 8 ) : 4