You have your very heavy cubical box on a flat floor at position (0,0). All you can do with it is roll it in four cardinal directions (east, north, west, south). Your task is to bring it to a target position, such that the side facing up is the same as before your manipulations.
Make a program or function which receives target coordinates and returns the minimal sequence of moves which results in the box arriving to target in upright position.
Input: two integers x, y
- Get it in any convenient format - as a pair, as a complex number, etc.
- You can assume x * yx² + y² ≠ 0
Output: a string of instructions containing characters E
, N
, W
, S
- Spaces and newlines are allowed
- UPPER-CASE, lower-case and MiXeD-cAsE are allowed
Test cases:
2, 2 => EENN
2, 3 => ENENN
1, 0 => NES
-1, 0 => NWS
-1, -1 => ESWNWS
3, 4 => ENNENEN
-9, 0 => NWWWWWWWWWS
20, 5 => EEEEEEEEEEEEEEEEEEENENNNN
Note: the solutions above are not unique, so your code can have slightly different output. But it's required to output a minimal solution.
Invalid test cases:
0, 0 => not required to handle (the solution is an empty string)
1, 0 => N (invalid - the box arrives to x=0, y=1)
1, 0 => E (invalid because the box on its side)
2, 2 => ENWNESENWNES (invalid because it's not minimal)