|
7 years ago | |
---|---|---|
README.md | 7 years ago | |
psrw.ps | 7 years ago |
README.md
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?
Links
-
A brief summary of Poscript commands
-
A game of life written in Poscript
-
An interesting proof showing that ed, the standard text editor is indeed Turing-complete
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.