|
|
|
|
|
by hanemile
201 days ago
|
|
With the metatopic of this thread being obscure languages, I had some fun squeezing this into some list comprehensions (maybe someone's got an idea of how to keep track of the state within the list): ``` $ cat << EOF > pi.py state = [0, 0, 2*8, 2*12]; _ = [print(f'\rRun {state.__setitem__(0, state[0] + 1) or state[0]}/{state[3]} | Last \u03c0: {current_pi:.6f} | *Average \u03c0: {(state.__setitem__(1, state[1] + current_pi) or state[1]) / state[0]:.6f}*', end='', flush=True) for current_pi in [(4 * sum([1 for _ in range(state[2]) if __import__("random").random()*2 + __import__("random").random()*2 < 1]) / state[2]) for _ in range(state[3])]]; print() EOF $ time python3 pi.py Run 4096/4096 | Last π: 3.140625 | *Average π: 3.143051* python3 pi.py 0.41s user 0.01s system 99% cpu 0.429 total ``` Play around with the `2*8` and `2*10` values in the state, they control the amount of rounds and the range in which the random values get generated respectively. |
|