1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <boost/config/warning_disable.hpp> #include <boost/spirit/include/qi.hpp> #include <iostream> #include <string> #include <vector> using namespace boost::phoenix; using namespace boost::spirit; using namespace boost::spirit::qi; using namespace boost::spirit::ascii; using namespace boost::spirit::arg_names; struct point { int x,y,z; }; std::vector<point> points(0); void setx(int x) { points.push_back(point()); points[points.size()-1].x = x; } void sety(int y) { points[points.size()-1].y = y; } void setz(int z) { points[points.size()-1].z = z; } typedef void (*setcallback)(int); setcallback setcallbacks[] = {&setx, &sety, &setz}; int cindex = 0; void cint(int i) { setcallbacks[cindex](i); cindex = (cindex + 1)%3; } template <typename Iterator> bool parse_numbers(Iterator first, Iterator last) { bool r = phrase_parse ( first, last, *( '(' >> int_[&cint] >> ',' >> int_[&cint] >> ',' >> int_[&cint] >> ')' ), space ); if (first != last) // fail if we did not get a full match return false; return r; } int main() { std::string str; while (getline(std::cin, str)) { if (parse_numbers(str.begin(), str.end())) std::cout << "Succeeded : " << str << std::endl; else std::cout << "Failed : " << str << std::endl; } for(size_t i = 0 ; i < points.size() ; i++ ) { std::cout << "[" << points[i].x << "," << points[i].y << "," << points[i].z << "]" << std::endl; } return 0; } |
I2luY2x1ZGUgPGJvb3N0L2NvbmZpZy93YXJuaW5nX2Rpc2FibGUuaHBwPgojaW5jbHVkZSA8Ym9vc3Qvc3Bpcml0L2luY2x1ZGUvcWkuaHBwPgoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjpwaG9lbml4Owp1c2luZyBuYW1lc3BhY2UgYm9vc3Q6OnNwaXJpdDsKdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjpzcGlyaXQ6OnFpOwp1c2luZyBuYW1lc3BhY2UgYm9vc3Q6OnNwaXJpdDo6YXNjaWk7CnVzaW5nIG5hbWVzcGFjZSBib29zdDo6c3Bpcml0OjphcmdfbmFtZXM7CgpzdHJ1Y3QgcG9pbnQKewogICBpbnQgeCx5LHo7Cn07CgpzdGQ6OnZlY3Rvcjxwb2ludD4gcG9pbnRzKDApOwoKdm9pZCBzZXR4KGludCB4KSB7IHBvaW50cy5wdXNoX2JhY2socG9pbnQoKSk7IHBvaW50c1twb2ludHMuc2l6ZSgpLTFdLnggPSB4OyB9CnZvaWQgc2V0eShpbnQgeSkgeyBwb2ludHNbcG9pbnRzLnNpemUoKS0xXS55ID0geTsgfQp2b2lkIHNldHooaW50IHopIHsgcG9pbnRzW3BvaW50cy5zaXplKCktMV0ueiA9IHo7IH0KCnR5cGVkZWYgdm9pZCAoKnNldGNhbGxiYWNrKShpbnQpOwoKc2V0Y2FsbGJhY2sgc2V0Y2FsbGJhY2tzW10gPSB7JnNldHgsICZzZXR5LCAmc2V0en07CgppbnQgY2luZGV4ID0gMDsKCnZvaWQgY2ludChpbnQgaSkKeyAKICAgc2V0Y2FsbGJhY2tzW2NpbmRleF0oaSk7IAogICBjaW5kZXggPSAoY2luZGV4ICsgMSklMzsKfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CmJvb2wgcGFyc2VfbnVtYmVycyhJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCkKewogICAgYm9vbCByID0gcGhyYXNlX3BhcnNlCiAgICAoCiAgICAgICAgZmlyc3QsIAogICAgICAgIGxhc3QsICAgICAgICAgCiAgICAgICAgKiggJygnID4+IGludF9bJmNpbnRdID4+ICcsJyA+PiBpbnRfWyZjaW50XSA+PiAnLCcgPj4gaW50X1smY2ludF0gPj4gJyknICksIAogICAgICAgIHNwYWNlIAogICAgKTsKCiAgICBpZiAoZmlyc3QgIT0gbGFzdCkgLy8gZmFpbCBpZiB3ZSBkaWQgbm90IGdldCBhIGZ1bGwgbWF0Y2gKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gcjsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnN0cmluZyBzdHI7CiAgICB3aGlsZSAoZ2V0bGluZShzdGQ6OmNpbiwgc3RyKSkKICAgIHsgICAgICAgICAgIAogICAgICAgIGlmIChwYXJzZV9udW1iZXJzKHN0ci5iZWdpbigpLCBzdHIuZW5kKCkpKQogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlN1Y2NlZWRlZCA6ICIgPDwgc3RyIDw8IHN0ZDo6ZW5kbDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiRmFpbGVkIDogIiA8PCBzdHIgPDwgc3RkOjplbmRsOwogICAgfQogICAgZm9yKHNpemVfdCBpID0gMCA7IGkgPCBwb2ludHMuc2l6ZSgpIDsgaSsrICkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIlsiIAogICAgICAgICAgICAgICAgICA8PCBwb2ludHNbaV0ueCA8PCAiLCIgPDwgcG9pbnRzW2ldLnkgPDwgIiwiIDw8IHBvaW50c1tpXS56IAogICAgICAgICAgICAgICAgICA8PCAiXSIgPDwgc3RkOjplbmRsOyAKICAgIH0KICAgIHJldHVybiAwOwp9
-
upload with new input
-
result: Success time: 0s memory: 2872 kB returned value: 0
(8,7,15) (0,0,1) (0,3,2) (0,6,3) (1,0,4) (1,1,5) (2,1,6) (2,2,7) (2,5,8) (3,0,9) (3,3,10) (3,4,11) (3,5,12) (4,1,13) (4,4,14) (7,6,15)
Succeeded : (8,7,15) Succeeded : (0,0,1) (0,3,2) (0,6,3) Succeeded : (1,0,4) (1,1,5) Succeeded : (2,1,6) (2,2,7) (2,5,8) Succeeded : (3,0,9) (3,3,10) (3,4,11) (3,5,12) Succeeded : (4,1,13) (4,4,14) Succeeded : (7,6,15) [8,7,15] [0,0,1] [0,3,2] [0,6,3] [1,0,4] [1,1,5] [2,1,6] [2,2,7] [2,5,8] [3,0,9] [3,3,10] [3,4,11] [3,5,12] [4,1,13] [4,4,14] [7,6,15]
-
result: Success time: 0s memory: 2872 kB returned value: 0
(8,7,15) (0,0,1) (0,3,2) (0,6,3) (1,0,4) (1,1,5)
Succeeded : (8,7,15) Succeeded : (0,0,1) (0,3,2) (0,6,3) Succeeded : (1,0,4) (1,1,5) [8,7,15] [0,0,1] [0,3,2] [0,6,3] [1,0,4] [1,1,5]


