Problem E
Charged
Background
The electric field $\vec{E}$ of a particle with charge $q$ can be derived from its electric potential $V$:
\[ \vec{E} = -\nabla V \]where $\nabla $ is the derivative operator and $V$ at every point in space is
\[ V = {1\over 4\pi \varepsilon _0}{q\over ||\vec{r}||} \]where $\vec{r}$ is the distance from the particle at that point, $1\over 4\pi \varepsilon _0$ is some constant, and $||\vec{r}|| = \sqrt{r_ x^2 + r_ y^2}$ (in a two-dimensional plane). The net electric potential at any point is the sum of all of the electric potentials from all the particles.
The force from particle $B$ on particle $A$ is the charge of $A$ $(q_ A)$ multiplied by the electric field from $B$:
\begin{align*} \vec{F}_{B\rightarrow A} & = q_ A\vec{E}_ B\\ & = {1\over 4\pi \varepsilon _0}{q_ A\cdot q_ B\over ||\vec{r}||^2}\hat{r} \end{align*}For this problem, however, you will only visualize the electric potential $V$.
Problem
Given two kinds of particles, those with a positive charge $+e$, and those with negative charges $-e$, display the electric potential at every point in space. The electric potential should be normalized relative to ${|e|\over 4\pi \varepsilon _0}$ (i.e., treat ${|e|\over 4\pi \varepsilon _0}$ as $1$).
Input
Input starts with $3$ integers $n,m,q$ where $0<n,m\le 50$ and $0<q\le 10$. Then follows $q$ lines: each line contains three values $x,y,s$, where $1 \leq x \leq m$ and $1 \leq y \leq n$ correspond to the integer coordinates of the charged particle and $s$ is the sign of the particle’s charge being either a + or a -. No two particles will have the same coordinates.
Output
Your output should be an $n\times m$ grid of ASCII characters oriented with the positive $y$-axis pointing down and the positive $x$-axis pointing to the right, with coordinates starting from $1$. Every character in the grid corresponds to the total potential at that point.
If the field contains a particle, print either a + or - corresponding to its charge. Otherwise, the character you place will be related to the sign of the potential. If the potential is negative then use the characters {%,X,x}. If it is positive, however, use the character set {0,O,o} (the first element is a zero).
There are $3$ tiers to the field’s magnitude:
-
$1 / \pi $
-
$1 / \pi ^2$
-
$1 / \pi ^3$
If the field is below the third tier print a “.”.
If the magnitude is above the first tier then you would use % or 0 (zero) depending on the sign, if it is below the first tier then you would use X or O, and so on and so forth.
Sample Input 1 | Sample Output 1 |
---|---|
20 20 2 5 5 + 15 15 - |
OOOOOOOOOoooo....... OOOOOOOOOoooo....... OOO000OOOOooo....... OO00000OOOooo....... OO00+00OOOoo........ OO00000OOooo........ OOO000OOOoo....xxxxx OOOOOOOOoo...xxxxxxx OOOOOOOoo...xxxxxxxx ooOOOooo...xxxXXXxxx ooooooo...xxXXXXXXXx oooooo...xxXXXXXXXXX oooo....xxXXX%%%XXXX .......xxxXX%%%%%XXX .......xxXXX%%-%%XXX ......xxxXXX%%%%%XXX ......xxxXXXX%%%XXXX ......xxxxXXXXXXXXXX ......xxxxXXXXXXXXXX ......xxxxxXXXXXXXXx |
Sample Input 2 | Sample Output 2 |
---|---|
20 20 3 15 15 - 10 10 + 5 5 - |
XXXXXXXXXXxxxxxxxxxx XXXXXXXXXXxxxxxxxxxx XXX%%%XXXXxxxxxxxxxx XX%%%%%XXXxxxxxxxxxx XX%%-%%XXxxxxxxxxxxx XX%%%%%Xxx..xxxxxxxx XXX%%%Xx.oo..xxxxxxx XXXXXXx.OOOo..xxxxxx XXXXXx.O000Oo.xxxxxx XXXXxxoO0+0OoxxXXXXX xxxxx.oO000O.xXXXXXX xxxxx..oOOO.xXXXXXXX xxxxxx..oo.xX%%%XXXX xxxxxxx..xxX%%%%%XXX xxxxxxxxxxXX%%-%%XXX xxxxxxxxxXXX%%%%%XXX xxxxxxxxxXXXX%%%XXXX xxxxxxxxxXXXXXXXXXXX xxxxxxxxxXXXXXXXXXXX xxxxxxxxxXXXXXXXXXXX |
Sample Input 3 | Sample Output 3 |
---|---|
20 20 2 10 2 + 10 18 - |
oooOOOO00000OOOOoooo oooOOOO00+00OOOOoooo oooOOOO00000OOOOoooo ooooOOOO000OOOOooooo oooooOOOOOOOOOoooooo ooooooOOOOOOOoooooo. .oooooooOOOooooooo.. ....ooooooooooo..... .................... .................... .................... ....xxxxxxxxxxx..... .xxxxxxxXXXxxxxxxx.. xxxxxxXXXXXXXxxxxxx. xxxxxXXXXXXXXXxxxxxx xxxxXXXX%%%XXXXxxxxx xxxXXXX%%%%%XXXXxxxx xxxXXXX%%-%%XXXXxxxx xxxXXXX%%%%%XXXXxxxx xxxXXXXX%%%XXXXXxxxx |