fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. // Write a program that outputs all possibilities to put + or - or nothing
  5. // between the numbers 1, 2, ..., 9 (in this order) such that the result is
  6. // always 100. For example: 1 + 2 + 34 – 5 + 67 – 8 + 9 = 100.
  7.  
  8. enum class Operation {
  9. Nothing,
  10. Add,
  11. Substract
  12. };
  13.  
  14. // Produce the next vector of Operations
  15. // \returns "true" if a vector was produced, "false" otherwise
  16. bool next(std::vector<Operation>& operations) {
  17. for (Operation& o: operations) {
  18. switch (o) {
  19. case Operation::Nothing:
  20. o = Operation::Add;
  21. return true;
  22. case Operation::Add:
  23. o = Operation::Substract;
  24. return true;
  25. case Operation::Substract:
  26. o = Operation::Nothing;
  27. break; // loop to increment next
  28. }
  29. }
  30. return false; // if we reach here, the vector is not long enough
  31. } // next
  32.  
  33. // Given a list of integers and operations, return the total
  34. int compute(std::vector<int> const& suite,
  35. std::vector<Operations> const& operations)
  36. {
  37. // 1. First pass, group by nothing
  38. std::vector<int> catenated{1, suite[0]};
  39.  
  40. for (size_t i = 0, max = operations.size(); i < max; ++i) {
  41. if (operations[i] != Operation::Nothing) {
  42. catenated.push_back(suite[i+1]);
  43. continue;
  44. }
  45.  
  46. int& last = catenated.back();
  47. last *= 10;
  48. last += suite[i+1];
  49. }
  50.  
  51. // 2. Second pass, evaluate
  52. int total = catenated[0]; catenated.pop();
  53.  
  54. for (Operation const& o: operations) {
  55. switch (o) {
  56. case Operation::Nothing: break;
  57.  
  58. case Operation::Add:
  59. total += catenated[0]; catenated.pop();
  60. break;
  61.  
  62. case Operation::Substract:
  63. total -= catenated[0]; catenated.pop();
  64. break;
  65. }
  66. }
  67.  
  68. return total;
  69. } // compute
  70.  
  71. // Display the list of "+- " and its result
  72. void display(std::vector<int> const& suite,
  73. std::vector<Operations> const& operations,
  74. int const target)
  75. {
  76. std::cout << suite[0];
  77. for (size_t i = 0, max = operations.size(); i < max; ++i) {
  78. switch (operations[i]) {
  79. case Operation::Nothing: break;
  80.  
  81. case Operation::Add: std::cout << " + "; break;
  82.  
  83. case Operation::Substract: std::cout << " - "; break;
  84. }
  85.  
  86. std::cout << suite[i + 1];
  87. }
  88.  
  89. std::cout << " = " << target << "\n";
  90. } // display
  91.  
  92. // Output the lists of "+- " which achieve the goal for the given vector and the
  93. // given target number.
  94. void compute(std::vector<int> const& suite, int const target) {
  95. if (suite.empty()) { return; }
  96.  
  97. Operation const N = Operation::Nothing;
  98. std::vector<Operation> operations{suite.size() - 1, N};
  99.  
  100. do {
  101. if (compute(suite, operations) == target) {
  102. display(suite, operations, target);
  103. }
  104. } while (next(operations));
  105. }
  106.  
  107. int main() {
  108. std::vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9};
  109. compute(vec, 100);
  110. return 0;
  111. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
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
stdout
Standard output is empty