diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/tex-ewd/t1.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/tex-ewd/t1.tex | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/tex-ewd/t1.tex b/Master/texmf-dist/doc/generic/tex-ewd/t1.tex new file mode 100644 index 00000000000..1f69f368011 --- /dev/null +++ b/Master/texmf-dist/doc/generic/tex-ewd/t1.tex @@ -0,0 +1,73 @@ +% This software is licensed to you under the terms of a BSD-style license, +% see bsdlic.txt for details. +% This file demonstrates usage of the dotnot macros. +\input dotnot +\headline{\bf \title} +\def\title{\centerline{Usage of dotnot}} +\def\out{\hbox{\it out:\/}} + +The greatest common denominator: +\bblock +\cofl{m > 0 \land n > 0} +\[\glocon m, n; \virvar gcd + ; \privar i, j + ; i \vir int, j \vir int \:= m, n + ; \do i \not= j \->\IF i > j \-> i \:= i - j + \| j > i \-> j \:= j - i + \FI + \od + ; gcd \vir int \:= i +\] \co{gcd = \gcd.(n, m)} +\eblock +This is the outcome of p0: +\bblock +\out\;\[\glocon n, q; \virvar d +\cofl{0 \le n < q} +; \privar u, v +; d \vir int \array, u \vir int, v \vir int \:= (1), 10, n*10 +; \do u \div 2 < v \mand u \le q \->\&% + d:hiext.\bigl((v + u \div 2 - 1) \div q\bigr) + ; u, v \:= 10*u, (v - d.high*q)*10 \decind + \od +; \IF u \div 2 < v \-> d:hiext.\bigl((v + q \div 2) \div q\bigr)% + \| v \le u \div 2 \-> skip % use `%' to combine several input lines + % into one output line + \FI +\] \co{\hbox{$d$ contains the decimal digits of $n/q$}} +\eblock +An alternative program to compute the greatest common denominator: +\bblock +\[\glocon m, n; \virvar gcd + ;\privar i, j + ;i \vir int, j \vir int \:= m, n + ;\do i > j \-> i \:= i - j + \| i < j \-> j \:= j - i + \od + ;gcd \vir int \:= (i + j) \div 2 +\] +\eblock +This program computes the next higher permutation of c. +\bblock +\[ \glovar c; \privar i,j + ; i\vir int \:= c.hib -1;\;\do c.i \ge c.(i+1) \-> i \:= i - 1\od + ; j\vir int \:= c.hib;\;\do c.j \le c.i \-> j \:= j-1 \od + ; c:swap.(i,j) + ; i \:= i+1; j \:= c.hib; + ; \do i < j \-> c:swap.(i,j); i,j \:= i+1,j-1 \od +\] +\eblock +And this is the famous Dutch flag program: +\bblock +\[ \glovar buck; \glocon n; \privar r, w, b + ; r \vir int, w \vir int, b\vir int \:= 1, n,n + ; \do w \ge r \-> \[ \glovar buck, r, w, b; \pricon col + ; col \vir colour \:= buck.w + ; \IF col = red \-> buck:swap.(r,w); r := r+1 + \| col = white \-> w \:= w-1 + \| col = blue \-> buck:swap.(w,b); w,b \:= w-1, b-1 + \FI + \] + \od +\] +\eblock +\bye |