A dynamic Postscript to generate a different random walk every time you open the document...
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
psrw/README.md

2.9 KiB

psrw

2D radom walk in Postscript

This is a simple Postscript hack to visualise a 2D random walk. The interesting part is that you get a different trajectory of the random walk every time you open the file psrw.ps.

You can open the file with gv:

''' gv -nosafer -nosafedir psrw.ps '''

where the extra options are needed to disable some security checks. You can also visualise the document with Ghostscript, if you like:

''' gs psrw.ps '''

Liked it? Now close the file and reopen it ;-)

WTF?

Postscript is a Turing-complete language. This means that you can do any feasible computation in Postscript. Hence, simulating a random walk in Postscript is not a big fuss at all, also because the standard Postscript definition already includes a pseudo-random number generator, so you don't need to implement it yourself. The only problem is that the pseudo-random number generator needs to be initialised with a new seed, otherwise you would always visualise the same trajectory.

The simple solution implemented in psrw.ps is to store the seed in the same file as a comment, and update it after every run. In a word, psrw.ps rewrites itself at each run, changing the seed and allowing to generate a new random walk trajectory every time you open the file.

Why?

Well, there is no particular reason to write anything like psrw.ps. I just tried to do something similar around 2001 or 2002, when I was using Postscript quite heavily, and at that time I did not find a proper way through. The simplicity of the solution implemented in psrw.ps scratches a long-standing personal itch, and tells a lot about my poor knowledge of Postscript...

No really, WHY?

I just wanted to make a point about (not) trusting documents written in formats that you don't understand, or that are not freely accessible or not documented. Many text formats out there are Turing-complete or close-to, and some visualiser (e.g., for PDF or OpenXML) include interpreters for other Turing-complete languages (like Javascript or VBScript). This mean that they can do almost anything when you "open" those "text" files.

If it's so easy to craft a document that modifies itself to change a comment that you can't visualise, what else can be done by "text" files saved in proprietary formats?

License

This program is (c) 2018 Vincenzo (KatolaZ) Nicosia. You can use, modify, and redistribute it under the terms of the GNU General Public License, either Version 3 of the License or, at your option, any later version.