summaryrefslogtreecommitdiff
path: root/macros/generic/tex-ewd/t1.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/generic/tex-ewd/t1.tex
Initial commit
Diffstat (limited to 'macros/generic/tex-ewd/t1.tex')
-rw-r--r--macros/generic/tex-ewd/t1.tex73
1 files changed, 73 insertions, 0 deletions
diff --git a/macros/generic/tex-ewd/t1.tex b/macros/generic/tex-ewd/t1.tex
new file mode 100644
index 0000000000..1f69f36801
--- /dev/null
+++ b/macros/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