PostScript 50 binär, 113 ASCII
Dies verwendet eine grafische Ausgabe. Hexdump des Programms mit Binärtoken:
$ hexdump -C textRect_binary.ps
00000000 74 5b 30 20 39 5b 74 92 62 34 92 36 92 38 92 10 |t[0 9[t.b4.6.8..|
00000010 32 92 19 5d 7b 92 2c 7b 32 92 19 7d 92 83 92 3e |2..]{.,{2..}...>|
00000020 92 6e 7d 92 49 5d 39 20 39 92 6b 91 c7 39 92 8e |.n}.I]9 9.k..9..|
00000030 92 c3 |..|
00000032
Laden Sie es herunter, um es zu testen . Mit Ghostscript kann der zu rendernde Text wie folgt an das Programm übergeben werden:
gs -st=helloworld textRect_binary.ps
Die grafische Ausgabe sieht folgendermaßen aus:

Derselbe Code, der ASCII-Token verwendet, sieht folgendermaßen aus:
t[0 9[t length
4 div dup
ceiling
2 copy]{cvi{2 copy}repeat
exch neg}forall]9 9 moveto/Courier 9 selectfont
xyshow
Die Strategie besteht darin, xyshowzu definieren, wohin wir uns bewegen, nachdem wir jedes Zeichen gezeigt haben, bevor wir das nächste Zeichen zeigen. Wir beginnen in der unteren linken Ecke und bewegen uns im Uhrzeigersinn, dh zuerst nach oben, dann nach rechts, dann nach unten und dann nach links. Wir bewegen uns immer 9 Einheiten, so erste haben wir eine Relativbewegung 0 9, dann 9 0, dann 0 -9, dann -9 0. Mit der Sequenz können wir von einem Paar dieser Zahlen zum nächsten gelangen exch neg.
Wir müssen ein Array erstellen xyshow, das diese Zahlenpaare enthält, ein Paar für jedes Zeichen. Das heißt, wenn wir helloworldals Beispiel einen String haben, der 10 Zeichen hat, wollen wir zweimal nach oben, dann dreimal nach rechts, dann zweimal nach unten und dreimal nach links. Wir erhalten diese Werte (zwei und drei), indem wir die Stringlänge durch 8 dividieren, einmal auf den Boden gerundet, einmal an die Decke.
Also kopieren wir 0 9zweimal und wechseln dann mit zu den relativen x / y-Koordinaten exch neg, kopieren diese dreimal und so weiter.
Dieser kommentierte Code zeigt, was auf dem Stapel passiert:
t[0 9 % t [ 0 9
[t length % t [ 0 9 [ length
4 div dup % t [ 0 9 [ length/4 length/4
ceiling % t [ 0 9 [ length/4=height width
2 copy] % t [ 0 9 [height width height width]
{%forall % t [ 0 9 ... x y height_or_width
cvi % t [ 0 9 ... x y height_or_width_integer
{2 copy} % t [ 0 9 ... x y height_or_width_integer {2 copy}
repeat % t [ 0 9 ... x y .. x y
exch neg % t [ 0 9 ... x y .. y -x
}forall] % t [0 9 ... -9 0]
9 9 moveto/Courier 9 selectfont
xyshow