#include <iostream>
#include <vector>
// Write a program that outputs all possibilities to put + or - or nothing
// between the numbers 1, 2, ..., 9 (in this order) such that the result is
// always 100. For example: 1 + 2 + 34 – 5 + 67 – 8 + 9 = 100.
Nothing,
Add,
Substract
};
// Produce the next vector of Operations
// \returns "true" if a vector was produced, "false" otherwise
bool next(std::vector<Operation>& operations) {
for (Operation& o: operations) {
switch (o) {
return true;
return true;
break; // loop to increment next
}
}
return false; // if we reach here, the vector is not long enough
} // next
// Given a list of integers and operations, return the total
int compute(std::vector<int> const& suite,
std::vector<Operations> const& operations)
{
// 1. First pass, group by nothing
std::vector<int> catenated{1, suite[0]};
for (size_t i = 0, max = operations.size(); i < max; ++i) {
catenated.push_back(suite[i+1]);
continue;
}
int& last = catenated.back();
last *= 10;
last += suite[i+1];
}
// 2. Second pass, evaluate
int total = catenated[0]; catenated.pop();
switch (o) {
total += catenated[0]; catenated.pop();
break;
total -= catenated[0]; catenated.pop();
break;
}
}
return total;
} // compute
// Display the list of "+- " and its result
void display(std::vector<int> const& suite,
std::vector<Operations> const& operations,
int const target)
{
std::cout << suite[0];
for (size_t i = 0, max = operations.size(); i < max; ++i) {
switch (operations[i]) {
case Operation::Add
: std
::cout
<< " + "; break;
case Operation::Substract
: std
::cout
<< " - "; break; }
std::cout << suite[i + 1];
}
std::cout << " = " << target << "\n";
} // display
// Output the lists of "+- " which achieve the goal for the given vector and the
// given target number.
void compute(std::vector<int> const& suite, int const target) {
if (suite.empty()) { return; }
std::vector<Operation> operations{suite.size() - 1, N};
do {
if (compute(suite, operations) == target) {
display(suite, operations, target);
}
} while (next(operations));
}
int main() {
std::vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9};
compute(vec, 100);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKLy8gV3JpdGUgYSBwcm9ncmFtIHRoYXQgb3V0cHV0cyBhbGwgcG9zc2liaWxpdGllcyB0byBwdXQgKyBvciAtIG9yIG5vdGhpbmcgCi8vIGJldHdlZW4gdGhlIG51bWJlcnMgMSwgMiwgLi4uLCA5IChpbiB0aGlzIG9yZGVyKSBzdWNoIHRoYXQgdGhlIHJlc3VsdCBpcyAKLy8gYWx3YXlzIDEwMC4gRm9yIGV4YW1wbGU6IDEgKyAyICsgMzQg4oCTIDUgKyA2NyDigJMgOCArIDkgPSAxMDAuCgplbnVtIGNsYXNzIE9wZXJhdGlvbiB7CglOb3RoaW5nLAoJQWRkLAoJU3Vic3RyYWN0Cn07CgovLyBQcm9kdWNlIHRoZSBuZXh0IHZlY3RvciBvZiBPcGVyYXRpb25zCi8vIFxyZXR1cm5zICJ0cnVlIiBpZiBhIHZlY3RvciB3YXMgcHJvZHVjZWQsICJmYWxzZSIgb3RoZXJ3aXNlCmJvb2wgbmV4dChzdGQ6OnZlY3RvcjxPcGVyYXRpb24+JiBvcGVyYXRpb25zKSB7Cglmb3IgKE9wZXJhdGlvbiYgbzogb3BlcmF0aW9ucykgewoJCXN3aXRjaCAobykgewoJCWNhc2UgT3BlcmF0aW9uOjpOb3RoaW5nOgoJCQlvID0gT3BlcmF0aW9uOjpBZGQ7CgkJCXJldHVybiB0cnVlOwoJCWNhc2UgT3BlcmF0aW9uOjpBZGQ6CgkJCW8gPSBPcGVyYXRpb246OlN1YnN0cmFjdDsKCQkJcmV0dXJuIHRydWU7CgkJY2FzZSBPcGVyYXRpb246OlN1YnN0cmFjdDoKCQkJbyA9IE9wZXJhdGlvbjo6Tm90aGluZzsKCQkJYnJlYWs7IC8vIGxvb3AgdG8gaW5jcmVtZW50IG5leHQKCQl9Cgl9CglyZXR1cm4gZmFsc2U7IC8vIGlmIHdlIHJlYWNoIGhlcmUsIHRoZSB2ZWN0b3IgaXMgbm90IGxvbmcgZW5vdWdoCn0gLy8gbmV4dAoKLy8gR2l2ZW4gYSBsaXN0IG9mIGludGVnZXJzIGFuZCBvcGVyYXRpb25zLCByZXR1cm4gdGhlIHRvdGFsCmludCBjb21wdXRlKHN0ZDo6dmVjdG9yPGludD4gY29uc3QmIHN1aXRlLAoJCSAgICBzdGQ6OnZlY3RvcjxPcGVyYXRpb25zPiBjb25zdCYgb3BlcmF0aW9ucykKewoJLy8gMS4gRmlyc3QgcGFzcywgZ3JvdXAgYnkgbm90aGluZwoJc3RkOjp2ZWN0b3I8aW50PiBjYXRlbmF0ZWR7MSwgc3VpdGVbMF19OwoJCglmb3IgKHNpemVfdCBpID0gMCwgbWF4ID0gb3BlcmF0aW9ucy5zaXplKCk7IGkgPCBtYXg7ICsraSkgewoJCWlmIChvcGVyYXRpb25zW2ldICE9IE9wZXJhdGlvbjo6Tm90aGluZykgewoJCQljYXRlbmF0ZWQucHVzaF9iYWNrKHN1aXRlW2krMV0pOwoJCQljb250aW51ZTsKCQl9CgkJCgkJaW50JiBsYXN0ID0gY2F0ZW5hdGVkLmJhY2soKTsKCQlsYXN0ICo9IDEwOwoJCWxhc3QgKz0gc3VpdGVbaSsxXTsKCX0KCQoJLy8gMi4gU2Vjb25kIHBhc3MsIGV2YWx1YXRlCglpbnQgdG90YWwgPSBjYXRlbmF0ZWRbMF07IGNhdGVuYXRlZC5wb3AoKTsKCglmb3IgKE9wZXJhdGlvbiBjb25zdCYgbzogb3BlcmF0aW9ucykgewoJCXN3aXRjaCAobykgewoJCWNhc2UgT3BlcmF0aW9uOjpOb3RoaW5nOiBicmVhazsKCQkKCQljYXNlIE9wZXJhdGlvbjo6QWRkOgoJCQl0b3RhbCArPSBjYXRlbmF0ZWRbMF07IGNhdGVuYXRlZC5wb3AoKTsKCQkJYnJlYWs7CgkJCQoJCWNhc2UgT3BlcmF0aW9uOjpTdWJzdHJhY3Q6CgkJCXRvdGFsIC09IGNhdGVuYXRlZFswXTsgY2F0ZW5hdGVkLnBvcCgpOwoJCQlicmVhazsKCQl9Cgl9CgkKCXJldHVybiB0b3RhbDsKfSAvLyBjb21wdXRlCgovLyBEaXNwbGF5IHRoZSBsaXN0IG9mICIrLSAiIGFuZCBpdHMgcmVzdWx0CnZvaWQgZGlzcGxheShzdGQ6OnZlY3RvcjxpbnQ+IGNvbnN0JiBzdWl0ZSwKCQkgICAgIHN0ZDo6dmVjdG9yPE9wZXJhdGlvbnM+IGNvbnN0JiBvcGVyYXRpb25zLAoJCSAgICAgaW50IGNvbnN0IHRhcmdldCkKewoJc3RkOjpjb3V0IDw8IHN1aXRlWzBdOwoJZm9yIChzaXplX3QgaSA9IDAsIG1heCA9IG9wZXJhdGlvbnMuc2l6ZSgpOyBpIDwgbWF4OyArK2kpIHsKCQlzd2l0Y2ggKG9wZXJhdGlvbnNbaV0pIHsKCQljYXNlIE9wZXJhdGlvbjo6Tm90aGluZzogYnJlYWs7CgkJCgkJY2FzZSBPcGVyYXRpb246OkFkZDogc3RkOjpjb3V0IDw8ICIgKyAiOyBicmVhazsKCQkKCQljYXNlIE9wZXJhdGlvbjo6U3Vic3RyYWN0OiBzdGQ6OmNvdXQgPDwgIiAtICI7IGJyZWFrOwoJCX0KCQkKCQlzdGQ6OmNvdXQgPDwgc3VpdGVbaSArIDFdOwoJfQoJCglzdGQ6OmNvdXQgPDwgIiA9ICIgPDwgdGFyZ2V0IDw8ICJcbiI7Cn0gLy8gZGlzcGxheQoKLy8gT3V0cHV0IHRoZSBsaXN0cyBvZiAiKy0gIiB3aGljaCBhY2hpZXZlIHRoZSBnb2FsIGZvciB0aGUgZ2l2ZW4gdmVjdG9yIGFuZCB0aGUKLy8gZ2l2ZW4gdGFyZ2V0IG51bWJlci4Kdm9pZCBjb21wdXRlKHN0ZDo6dmVjdG9yPGludD4gY29uc3QmIHN1aXRlLCBpbnQgY29uc3QgdGFyZ2V0KSB7CglpZiAoc3VpdGUuZW1wdHkoKSkgeyByZXR1cm47IH0KCQoJT3BlcmF0aW9uIGNvbnN0IE4gPSBPcGVyYXRpb246Ok5vdGhpbmc7CglzdGQ6OnZlY3RvcjxPcGVyYXRpb24+IG9wZXJhdGlvbnN7c3VpdGUuc2l6ZSgpIC0gMSwgTn07CgkKCWRvIHsKCQlpZiAoY29tcHV0ZShzdWl0ZSwgb3BlcmF0aW9ucykgPT0gdGFyZ2V0KSB7CgkJCWRpc3BsYXkoc3VpdGUsIG9wZXJhdGlvbnMsIHRhcmdldCk7CgkJfQoJfSB3aGlsZSAobmV4dChvcGVyYXRpb25zKSk7Cn0KCmludCBtYWluKCkgewoJc3RkOjp2ZWN0b3I8aW50PiB2ZWN7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOX07Cgljb21wdXRlKHZlYywgMTAwKTsKCXJldHVybiAwOwp9
Main.java:1: error: illegal character: '#'
#include <iostream>
^
Main.java:1: error: class, interface, or enum expected
#include <iostream>
^
Main.java:2: error: illegal character: '#'
#include <vector>
^
Main.java:8: error: <identifier> expected
enum class Operation {
^
Main.java:9: error: <identifier> expected
Nothing,
^
Main.java:11: error: ';' expected
Substract
^
Main.java:16: error: <identifier> expected
bool next(std::vector<Operation>& operations) {
^
Main.java:16: error: ';' expected
bool next(std::vector<Operation>& operations) {
^
Main.java:16: error: illegal start of type
bool next(std::vector<Operation>& operations) {
^
Main.java:16: error: '(' expected
bool next(std::vector<Operation>& operations) {
^
Main.java:16: error: illegal start of type
bool next(std::vector<Operation>& operations) {
^
Main.java:16: error: <identifier> expected
bool next(std::vector<Operation>& operations) {
^
Main.java:16: error: ';' expected
bool next(std::vector<Operation>& operations) {
^
Main.java:17: error: illegal start of type
for (Operation& o: operations) {
^
Main.java:17: error: ';' expected
for (Operation& o: operations) {
^
Main.java:17: error: <identifier> expected
for (Operation& o: operations) {
^
Main.java:17: error: <identifier> expected
for (Operation& o: operations) {
^
Main.java:30: error: illegal start of type
return false; // if we reach here, the vector is not long enough
^
Main.java:30: error: ';' expected
return false; // if we reach here, the vector is not long enough
^
Main.java:34: error: class, interface, or enum expected
int compute(std::vector<int> const& suite,
^
Main.java:40: error: class, interface, or enum expected
for (size_t i = 0, max = operations.size(); i < max; ++i) {
^
Main.java:40: error: class, interface, or enum expected
for (size_t i = 0, max = operations.size(); i < max; ++i) {
^
Main.java:40: error: class, interface, or enum expected
for (size_t i = 0, max = operations.size(); i < max; ++i) {
^
Main.java:43: error: class, interface, or enum expected
continue;
^
Main.java:44: error: class, interface, or enum expected
}
^
Main.java:47: error: class, interface, or enum expected
last *= 10;
^
Main.java:48: error: class, interface, or enum expected
last += suite[i+1];
^
Main.java:49: error: class, interface, or enum expected
}
^
Main.java:52: error: class, interface, or enum expected
int total = catenated[0]; catenated.pop();
^
Main.java:54: error: class, interface, or enum expected
for (Operation const& o: operations) {
^
Main.java:58: error: class, interface, or enum expected
case Operation::Add:
^
Main.java:59: error: class, interface, or enum expected
total += catenated[0]; catenated.pop();
^
Main.java:60: error: class, interface, or enum expected
break;
^
Main.java:62: error: class, interface, or enum expected
case Operation::Substract:
^
Main.java:63: error: class, interface, or enum expected
total -= catenated[0]; catenated.pop();
^
Main.java:64: error: class, interface, or enum expected
break;
^
Main.java:65: error: class, interface, or enum expected
}
^
Main.java:69: error: class, interface, or enum expected
} // compute
^
Main.java:77: error: class, interface, or enum expected
for (size_t i = 0, max = operations.size(); i < max; ++i) {
^
Main.java:77: error: class, interface, or enum expected
for (size_t i = 0, max = operations.size(); i < max; ++i) {
^
Main.java:77: error: class, interface, or enum expected
for (size_t i = 0, max = operations.size(); i < max; ++i) {
^
Main.java:81: error: class, interface, or enum expected
case Operation::Add: std::cout << " + "; break;
^
Main.java:81: error: class, interface, or enum expected
case Operation::Add: std::cout << " + "; break;
^
Main.java:83: error: class, interface, or enum expected
case Operation::Substract: std::cout << " - "; break;
^
Main.java:83: error: class, interface, or enum expected
case Operation::Substract: std::cout << " - "; break;
^
Main.java:84: error: class, interface, or enum expected
}
^
Main.java:87: error: class, interface, or enum expected
}
^
Main.java:90: error: class, interface, or enum expected
} // display
^
Main.java:95: error: class, interface, or enum expected
if (suite.empty()) { return; }
^
Main.java:98: error: class, interface, or enum expected
std::vector<Operation> operations{suite.size() - 1, N};
^
Main.java:100: error: class, interface, or enum expected
do {
^
Main.java:103: error: class, interface, or enum expected
}
^
Main.java:105: error: class, interface, or enum expected
}
^
Main.java:109: error: class, interface, or enum expected
compute(vec, 100);
^
Main.java:110: error: class, interface, or enum expected
return 0;
^
Main.java:111: error: class, interface, or enum expected
}
^
56 errors