diff --git a/app/src/main/assets/changes_version_24_de.html b/app/src/main/assets/changes_version_24_de.html new file mode 100644 index 0000000..1981440 --- /dev/null +++ b/app/src/main/assets/changes_version_24_de.html @@ -0,0 +1,5 @@ +

Version 1.2.24:

+ diff --git a/app/src/main/assets/changes_version_24_en.html b/app/src/main/assets/changes_version_24_en.html new file mode 100644 index 0000000..e19c9e3 --- /dev/null +++ b/app/src/main/assets/changes_version_24_en.html @@ -0,0 +1,5 @@ +

Version 1.2.24:

+ diff --git a/app/src/main/assets/terms_of_service_de.html b/app/src/main/assets/terms_of_service_de.html index 4bf782e..bf3f4d0 100644 --- a/app/src/main/assets/terms_of_service_de.html +++ b/app/src/main/assets/terms_of_service_de.html @@ -27,7 +27,7 @@ -

Copyright (c) 2018 by siggel <siggel-apps@gmx.de>

+

Copyright (c) 2018-2020 by siggel <siggel-apps@gmx.de>

Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version.

diff --git a/app/src/main/assets/terms_of_service_en.html b/app/src/main/assets/terms_of_service_en.html index a05e5cf..65ee016 100644 --- a/app/src/main/assets/terms_of_service_en.html +++ b/app/src/main/assets/terms_of_service_en.html @@ -27,7 +27,7 @@ -

Copyright (c) 2018 by siggel <siggel-apps@gmx.de>

+

Copyright (c) 2018-2020 by siggel <siggel-apps@gmx.de>

Coordinate Joker is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or diff --git a/app/src/main/java/com/github/siggel/coordinatejoker/Calculator.java b/app/src/main/java/com/github/siggel/coordinatejoker/Calculator.java index 5d07262..a89fa1e 100644 --- a/app/src/main/java/com/github/siggel/coordinatejoker/Calculator.java +++ b/app/src/main/java/com/github/siggel/coordinatejoker/Calculator.java @@ -73,9 +73,9 @@ class Calculator { * @return calculated result */ static double evaluate(String formula, Integer x, Integer y) { + formula = simplify(formula); // Check if there are any parenthesis. If so then evaluate it first and // replace it with the value. - formula = formula.replace(" ", ""); int openIndex = findOpeningParenthesis(formula); int closeIndex = findCosingParenthesis(formula, openIndex); while (openIndex != -1 && closeIndex != -1 && openIndex < closeIndex) { @@ -105,6 +105,21 @@ static double evaluate(String formula, Integer x, Integer y) { .evaluate(); } + /** + * simplify formula string so calculation can start + * + * @param formula the coordinate formula before simplification + * @return the coordinate formula after simplification + */ + private static String simplify(String formula) { + // get rid of whitespace + formula = formula.replace(" ", ""); + // handle []-brackets like ()-brackets + formula = formula.replace("[", "("); + formula = formula.replace("]", ")"); + return formula; + } + private static int findOpeningParenthesis(final String text) { return findOpeningParenthesis(text, 0); } diff --git a/app/src/test/java/com/github/siggel/coordinatejoker/CalculatorTest.java b/app/src/test/java/com/github/siggel/coordinatejoker/CalculatorTest.java index 9eff248..1f4cf9c 100644 --- a/app/src/test/java/com/github/siggel/coordinatejoker/CalculatorTest.java +++ b/app/src/test/java/com/github/siggel/coordinatejoker/CalculatorTest.java @@ -59,6 +59,7 @@ public void multipleParenthesesWithProduct() { public void nestedParentheses() { assertEquals(42.0, Calculator.evaluate("(x+(x+y)) (x+x)", 1, 2)); assertEquals(42.0, Calculator.evaluate("(x+(x+y))(x+x)", 1, 2)); + assertEquals(42.0, Calculator.evaluate("(x+[x+y])[x+x]", 1, 2)); } @Test