# Description

**Go(x)° is automatic formula solver for geocaching players.**

Some multicaches specify the final/stage location in form of formula, for example: **N 48° 43.(B)(E-4)(A-5)' E 021° 14.(C-2)(A)(D-45)'**.

Go(x)° releases geocachers from calculating on their own, writing values down and typing the result coordinates into map application by hands.

Typical use case of application can be summarized as follows:

1. Copy and paste a text into Go(x)°.

2. If necessary, edit the text to get valid formula.

3. Press "send".

4. Enter required variable's values.

5. Tap on marker on the map to open location in your favorite map application.

Formula and each variable's value is stored permanently right after being entered.

At any time you can see a partial result computed with known values.

If all the required values are entered and the result is in form of valid coordinates then the result is automatically shown on map from where you can send it directly to other map applications.

So far there is support for recognition of coordinates in form **X DD° MM.MMM' Y DDD° MM.MMM'** only (with tolerance for white characters, °, ' etc.).

Direct sending of coordinates to other app is supported for: Google Maps, Locus Map Pro, Locus Map Free, Waze.

** -------- Rules of valid formula -------- **

**1.** Text inside brackets is considered to be algebraic formula (with standard operators prioriry and tolerance for white charcters) containing of:

- decimal constants: **3.5**, **7**, **-4**, **+0.01**, **4,8**, **-9,6**, ... (values are displayed with precision to three decimal places)

- variables: **a**, **x**, **BBB**, **Q1**, **Q2**, **number_1**, ... (underscore "_" is the only non-alphanumeric character allowed in variable name)

- operators: **+**, **-**, *****, **/**, **:**, **%**, **^** (respectively: plus, minus, multiplication, division, division, modulo, power)

- brackets and parenthesis: **()**, **{}**, **[]** (all three types have the same meaning)

**2.** Text outside brackets has the following restrictions:

- only integer numbers are allowed

- names of variables can contain just alphabetical characters except W, E, N, S (those are reserved for the compass points) and "_"

**3.** Length of formula is limited to 1000 characters!

** -------- Formula examples -------- **

N 48 ° 43 . C ( A + D ) D '

E 021 ° 15 . ( B - B ) ( C - A ) ( E )'

It is valid formula with variables A, B, C, D, E. White characters inside brackets (between operators and operands) are ignored.

N 48° 4D.(AB*BA+CB*D)' E 021° 14.(CD-2*B)AC'

It is valid formula with variables AB, AC, B, BA, CB, CD, D. If individual letters stand for digits, then it is appropriate to swith to one-letter variables mode and we get variables A, B, C, D.

N: 48 45. [ 108 + (ABB/15 )]

E: 021 12. 305 - [ (ABB % 15) x 2 ] + A

It is valid formula with variables ABB, A. By switching to one-letter variables mode we get variables A, B.

Moreover, there is a tricky part - character "x". App will ask you about "x" - wheter it is the multiplication operator or not.

If we choose "no", then "x" will be treated as another variable.

N 48°45.(2X)(2X+Y)(3X+2Y)

E 21°12.(3+X)(X+Y)(1+Y)

It is valid formula because multiplication will be automatically added everywhere the operator is missing i.e. (2X) will be changed to (2*X) or e.g. (4(a+b)) will be changed to (4*(a+b)) etc.

Inserting of multiplication works inside brackets only. Notation B2 will not be changed to B*2 even inside brackets, because it will be recognized as variable B2.

N48° (D+J+M+O).E(R:A)+(C+L+O)

E021° (G^I).(A+B+E+F+G+H+K+L+N+P)

It is valid formula, but if we want E in part ...E(R:A)... to be recognized as variable, we have to put it inside brackets i.e. ...(E)(R:A)..., because E is reserved character for "East".

If we changed this part to ...(E(R:A))... then the multiplication would be inserted after E and we would get (E*(R:A))

# Reviews

# What's New

1.9.2

- marginal design improvements

1.9.0

- share/export and import of formula

...

- allows to mark coordinates as visited

- allows to name/label sub-formula using a comment starting by character #, example:

# stage town hall

N 50 30.(x+y)

E...

- fixed problems with leading zeros in decimal places

- auto-generated check-sum equation

- allows processing of "multi-stage formulas" where each sub-formula represents one stage of multi-cache (sub-formulas share the same set of variables)