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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random; public class Main { private static final int NUMBER_OF_QUESTIONS = 10; private static final int MIN_QUESTION_ELEMENTS = 2; private static final int MAX_QUESTION_ELEMENTS = 4; private static final int MIN_QUESTION_ELEMENT_VALUE = 1; private static final int MAX_QUESTION_ELEMENT_VALUE = 100; private final Random randomGenerator = new Random(); public static void main(String[] args) { Main questionGenerator = new Main(); List<Question> randomQuestions = questionGenerator.getGeneratedRandomQuestions(); for (Question question : randomQuestions) { System.out.println(question); } } public List<Question> getGeneratedRandomQuestions() { List<Question> randomQuestions = new ArrayList<Question>(NUMBER_OF_QUESTIONS); for (int i = 0; i < NUMBER_OF_QUESTIONS; i++) { int randomQuestionElementsCapacity = getRandomQuestionElementsCapacity(); Question question = new Question(randomQuestionElementsCapacity); for (int j = 0; j < randomQuestionElementsCapacity; j++) { boolean isLastIteration = j + 1 == randomQuestionElementsCapacity; QuestionElement questionElement = new QuestionElement(); questionElement.setValue(getRandomQuestionElementValue()); questionElement.setOperator(isLastIteration ? null : Operator.values()[randomGenerator.nextInt(Operator.values().length)]); question.addElement(questionElement); } randomQuestions.add(question); } return randomQuestions; } private int getRandomQuestionElementsCapacity() { return getRandomIntegerFromRange(MIN_QUESTION_ELEMENTS, MAX_QUESTION_ELEMENTS); } private int getRandomQuestionElementValue() { return getRandomIntegerFromRange(MIN_QUESTION_ELEMENT_VALUE, MAX_QUESTION_ELEMENT_VALUE); } private int getRandomIntegerFromRange(int min, int max) { return randomGenerator.nextInt(max - min + 1) + min; } } class Question { private List<QuestionElement> questionElements; public Question(int sizeOfQuestionElemets) { questionElements = new ArrayList<QuestionElement>(sizeOfQuestionElemets); } public void addElement(QuestionElement questionElement) { questionElements.add(questionElement); } public List<QuestionElement> getElements() { return questionElements; } public int size() { return questionElements.size(); } @Override public String toString() { StringBuilder sb = new StringBuilder(); for (QuestionElement questionElement : questionElements) { sb.append(questionElement); } return sb.toString().trim(); } } class QuestionElement { private int value; private Operator operator; public int getValue() { return value; } public void setValue(int value) { this.value = value; } public Operator getOperator() { return operator; } public void setOperator(Operator operator) { this.operator = operator; } @Override public String toString() { return value + (operator == null ? "" : " " + operator.getDisplayValue()) + " "; } } enum Operator { PLUS("+"), MINUS("-"), MULTIPLIER("*"), DIVIDER("/"); private String displayValue; private Operator(String displayValue) { this.displayValue = displayValue; } public String getDisplayValue() { return displayValue; } } |
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKaW1wb3J0IGphdmEudXRpbC5SYW5kb207CgpwdWJsaWMgY2xhc3MgTWFpbiB7CgogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5VTUJFUl9PRl9RVUVTVElPTlMgPSAxMDsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNSU5fUVVFU1RJT05fRUxFTUVOVFMgPSAyOwogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9RVUVTVElPTl9FTEVNRU5UUyA9IDQ7CiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUlOX1FVRVNUSU9OX0VMRU1FTlRfVkFMVUUgPSAxOwogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9RVUVTVElPTl9FTEVNRU5UX1ZBTFVFID0gMTAwOwogICAgcHJpdmF0ZSBmaW5hbCBSYW5kb20gcmFuZG9tR2VuZXJhdG9yID0gbmV3IFJhbmRvbSgpOwoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBNYWluIHF1ZXN0aW9uR2VuZXJhdG9yID0gbmV3IE1haW4oKTsKICAgICAgICBMaXN0PFF1ZXN0aW9uPiByYW5kb21RdWVzdGlvbnMgPSBxdWVzdGlvbkdlbmVyYXRvci5nZXRHZW5lcmF0ZWRSYW5kb21RdWVzdGlvbnMoKTsKICAgICAgICBmb3IgKFF1ZXN0aW9uIHF1ZXN0aW9uIDogcmFuZG9tUXVlc3Rpb25zKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihxdWVzdGlvbik7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBMaXN0PFF1ZXN0aW9uPiBnZXRHZW5lcmF0ZWRSYW5kb21RdWVzdGlvbnMoKSB7CiAgICAgICAgTGlzdDxRdWVzdGlvbj4gcmFuZG9tUXVlc3Rpb25zID0gbmV3IEFycmF5TGlzdDxRdWVzdGlvbj4oTlVNQkVSX09GX1FVRVNUSU9OUyk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1CRVJfT0ZfUVVFU1RJT05TOyBpKyspIHsKICAgICAgICAgICAgaW50IHJhbmRvbVF1ZXN0aW9uRWxlbWVudHNDYXBhY2l0eSA9IGdldFJhbmRvbVF1ZXN0aW9uRWxlbWVudHNDYXBhY2l0eSgpOwogICAgICAgICAgICBRdWVzdGlvbiBxdWVzdGlvbiA9IG5ldyBRdWVzdGlvbihyYW5kb21RdWVzdGlvbkVsZW1lbnRzQ2FwYWNpdHkpOwogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHJhbmRvbVF1ZXN0aW9uRWxlbWVudHNDYXBhY2l0eTsgaisrKSB7CiAgICAgICAgICAgICAgICBib29sZWFuIGlzTGFzdEl0ZXJhdGlvbiA9IGogKyAxID09IHJhbmRvbVF1ZXN0aW9uRWxlbWVudHNDYXBhY2l0eTsKCiAgICAgICAgICAgICAgICBRdWVzdGlvbkVsZW1lbnQgcXVlc3Rpb25FbGVtZW50ID0gbmV3IFF1ZXN0aW9uRWxlbWVudCgpOwogICAgICAgICAgICAgICAgcXVlc3Rpb25FbGVtZW50LnNldFZhbHVlKGdldFJhbmRvbVF1ZXN0aW9uRWxlbWVudFZhbHVlKCkpOwogICAgICAgICAgICAgICAgcXVlc3Rpb25FbGVtZW50LnNldE9wZXJhdG9yKGlzTGFzdEl0ZXJhdGlvbiA/IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgOiBPcGVyYXRvci52YWx1ZXMoKVtyYW5kb21HZW5lcmF0b3IubmV4dEludChPcGVyYXRvci52YWx1ZXMoKS5sZW5ndGgpXSk7CgogICAgICAgICAgICAgICAgcXVlc3Rpb24uYWRkRWxlbWVudChxdWVzdGlvbkVsZW1lbnQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJhbmRvbVF1ZXN0aW9ucy5hZGQocXVlc3Rpb24pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmFuZG9tUXVlc3Rpb25zOwogICAgfQoKICAgIHByaXZhdGUgaW50IGdldFJhbmRvbVF1ZXN0aW9uRWxlbWVudHNDYXBhY2l0eSgpIHsKICAgICAgICByZXR1cm4gZ2V0UmFuZG9tSW50ZWdlckZyb21SYW5nZShNSU5fUVVFU1RJT05fRUxFTUVOVFMsIE1BWF9RVUVTVElPTl9FTEVNRU5UUyk7CiAgICB9CgogICAgcHJpdmF0ZSBpbnQgZ2V0UmFuZG9tUXVlc3Rpb25FbGVtZW50VmFsdWUoKSB7CiAgICAgICAgcmV0dXJuIGdldFJhbmRvbUludGVnZXJGcm9tUmFuZ2UoTUlOX1FVRVNUSU9OX0VMRU1FTlRfVkFMVUUsIE1BWF9RVUVTVElPTl9FTEVNRU5UX1ZBTFVFKTsKICAgIH0KCiAgICBwcml2YXRlIGludCBnZXRSYW5kb21JbnRlZ2VyRnJvbVJhbmdlKGludCBtaW4sIGludCBtYXgpIHsKICAgICAgICByZXR1cm4gcmFuZG9tR2VuZXJhdG9yLm5leHRJbnQobWF4IC0gbWluICsgMSkgKyBtaW47CiAgICB9Cn0KCmNsYXNzIFF1ZXN0aW9uIHsKCiAgICBwcml2YXRlIExpc3Q8UXVlc3Rpb25FbGVtZW50PiBxdWVzdGlvbkVsZW1lbnRzOwoKICAgIHB1YmxpYyBRdWVzdGlvbihpbnQgc2l6ZU9mUXVlc3Rpb25FbGVtZXRzKSB7CiAgICAgICAgcXVlc3Rpb25FbGVtZW50cyA9IG5ldyBBcnJheUxpc3Q8UXVlc3Rpb25FbGVtZW50PihzaXplT2ZRdWVzdGlvbkVsZW1ldHMpOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIGFkZEVsZW1lbnQoUXVlc3Rpb25FbGVtZW50IHF1ZXN0aW9uRWxlbWVudCkgewogICAgICAgIHF1ZXN0aW9uRWxlbWVudHMuYWRkKHF1ZXN0aW9uRWxlbWVudCk7CiAgICB9CgogICAgcHVibGljIExpc3Q8UXVlc3Rpb25FbGVtZW50PiBnZXRFbGVtZW50cygpIHsKICAgICAgICByZXR1cm4gcXVlc3Rpb25FbGVtZW50czsKICAgIH0KCiAgICBwdWJsaWMgaW50IHNpemUoKSB7CiAgICAgICAgcmV0dXJuIHF1ZXN0aW9uRWxlbWVudHMuc2l6ZSgpOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICBmb3IgKFF1ZXN0aW9uRWxlbWVudCBxdWVzdGlvbkVsZW1lbnQgOiBxdWVzdGlvbkVsZW1lbnRzKSB7CiAgICAgICAgICAgIHNiLmFwcGVuZChxdWVzdGlvbkVsZW1lbnQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc2IudG9TdHJpbmcoKS50cmltKCk7CiAgICB9Cn0KCmNsYXNzIFF1ZXN0aW9uRWxlbWVudCB7CgogICAgcHJpdmF0ZSBpbnQgdmFsdWU7CiAgICBwcml2YXRlIE9wZXJhdG9yIG9wZXJhdG9yOwoKICAgIHB1YmxpYyBpbnQgZ2V0VmFsdWUoKSB7CiAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHNldFZhbHVlKGludCB2YWx1ZSkgewogICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgT3BlcmF0b3IgZ2V0T3BlcmF0b3IoKSB7CiAgICAgICAgcmV0dXJuIG9wZXJhdG9yOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHNldE9wZXJhdG9yKE9wZXJhdG9yIG9wZXJhdG9yKSB7CiAgICAgICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICByZXR1cm4gdmFsdWUgKyAob3BlcmF0b3IgPT0gbnVsbCA/ICIiIDogIiAiICsgb3BlcmF0b3IuZ2V0RGlzcGxheVZhbHVlKCkpICsgIiAiOwogICAgfQp9CgplbnVtIE9wZXJhdG9yIHsKCiAgICBQTFVTKCIrIiksIE1JTlVTKCItIiksIE1VTFRJUExJRVIoIioiKSwgRElWSURFUigiLyIpOwogICAgcHJpdmF0ZSBTdHJpbmcgZGlzcGxheVZhbHVlOwoKICAgIHByaXZhdGUgT3BlcmF0b3IoU3RyaW5nIGRpc3BsYXlWYWx1ZSkgewogICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gZGlzcGxheVZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGlzcGxheVZhbHVlKCkgewogICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWU7CiAgICB9Cn0=
-
upload with new input
-
result: Success time: 0.08s memory: 213440 kB returned value: 0
88 + 27 - 37 95 / 66 - 41 / 61 66 - 69 / 10 - 67 10 * 7 + 20 / 97 79 - 31 / 72 + 28 3 - 78 / 76 19 + 42 + 5 * 70 65 / 56 + 19 / 56 89 - 28 / 50 + 46 85 - 16 * 3 * 75


