September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,14 +1,15 @@
|
|||
-- CARPET MODEL
|
||||
-- CARPET MODEL --------------------------------------------------------------
|
||||
|
||||
-- sierpinskiCarpet :: Int -> [[Bool]]
|
||||
on sierpinskiCarpet(n)
|
||||
|
||||
-- rowStates :: Int -> [Bool]
|
||||
script rowStates
|
||||
on lambda(x, _, xs)
|
||||
on |λ|(x, _, xs)
|
||||
|
||||
-- cellState :: Int -> Bool
|
||||
script cellState
|
||||
|
||||
-- inCarpet :: Int -> Int -> Bool
|
||||
on inCarpet(x, y)
|
||||
if (x = 0 or y = 0) then
|
||||
|
|
@ -20,63 +21,74 @@ on sierpinskiCarpet(n)
|
|||
end if
|
||||
end inCarpet
|
||||
|
||||
on lambda(y)
|
||||
on |λ|(y)
|
||||
inCarpet(x, y)
|
||||
end lambda
|
||||
end |λ|
|
||||
end script
|
||||
|
||||
map(cellState, xs)
|
||||
end lambda
|
||||
end |λ|
|
||||
end script
|
||||
|
||||
map(rowStates, range(0, (3 ^ n) - 1))
|
||||
map(rowStates, enumFromTo(0, (3 ^ n) - 1))
|
||||
end sierpinskiCarpet
|
||||
|
||||
|
||||
-- TEST
|
||||
|
||||
-- TEST ----------------------------------------------------------------------
|
||||
on run
|
||||
-- Carpets of orders 1, 2, 3
|
||||
|
||||
set strCarpets to ¬
|
||||
intercalate(linefeed & linefeed, ¬
|
||||
map(showCarpet, range(1, 3)))
|
||||
map(showCarpet, enumFromTo(1, 3)))
|
||||
|
||||
set the clipboard to strCarpets
|
||||
|
||||
return strCarpets
|
||||
end run
|
||||
|
||||
|
||||
-- CARPET DISPLAY
|
||||
-- CARPET DISPLAY ------------------------------------------------------------
|
||||
|
||||
-- showCarpet :: Int -> String
|
||||
on showCarpet(n)
|
||||
|
||||
-- showRow :: [Bool] -> String
|
||||
script showRow
|
||||
-- showBool :: Bool -> String
|
||||
script showBool
|
||||
on lambda(bool)
|
||||
on |λ|(bool)
|
||||
if bool then
|
||||
character id 9608
|
||||
else
|
||||
" "
|
||||
end if
|
||||
end lambda
|
||||
end |λ|
|
||||
end script
|
||||
|
||||
on lambda(xs)
|
||||
on |λ|(xs)
|
||||
intercalate("", map(my showBool, xs))
|
||||
end lambda
|
||||
end |λ|
|
||||
end script
|
||||
|
||||
intercalate(linefeed, map(showRow, sierpinskiCarpet(n)))
|
||||
end showCarpet
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- GENERIC FUNCTIONS ---------------------------------------------------------
|
||||
|
||||
-- GENERIC LIBRARY FUNCTIONS
|
||||
-- enumFromTo :: Int -> Int -> [Int]
|
||||
on enumFromTo(m, n)
|
||||
if m > n then
|
||||
set d to -1
|
||||
else
|
||||
set d to 1
|
||||
end if
|
||||
set lst to {}
|
||||
repeat with i from m to n by d
|
||||
set end of lst to i
|
||||
end repeat
|
||||
return lst
|
||||
end enumFromTo
|
||||
|
||||
-- map :: (a -> b) -> [a] -> [b]
|
||||
on map(f, xs)
|
||||
|
|
@ -84,7 +96,7 @@ on map(f, xs)
|
|||
set lng to length of xs
|
||||
set lst to {}
|
||||
repeat with i from 1 to lng
|
||||
set end of lst to lambda(item i of xs, i, xs)
|
||||
set end of lst to |λ|(item i of xs, i, xs)
|
||||
end repeat
|
||||
return lst
|
||||
end tell
|
||||
|
|
@ -98,20 +110,6 @@ on intercalate(strText, lstText)
|
|||
return strJoined
|
||||
end intercalate
|
||||
|
||||
-- range :: Int -> Int -> [Int]
|
||||
on range(m, n)
|
||||
if n < m then
|
||||
set d to -1
|
||||
else
|
||||
set d to 1
|
||||
end if
|
||||
set lst to {}
|
||||
repeat with i from m to n by d
|
||||
set end of lst to i
|
||||
end repeat
|
||||
return lst
|
||||
end range
|
||||
|
||||
-- Lift 2nd class handler function into 1st class script wrapper
|
||||
-- mReturn :: Handler -> Script
|
||||
on mReturn(f)
|
||||
|
|
@ -119,7 +117,7 @@ on mReturn(f)
|
|||
f
|
||||
else
|
||||
script
|
||||
property lambda : f
|
||||
property |λ| : f
|
||||
end script
|
||||
end if
|
||||
end mReturn
|
||||
|
|
|
|||
11
Task/Sierpinski-carpet/Gnuplot/sierpinski-carpet-1.gnuplot
Normal file
11
Task/Sierpinski-carpet/Gnuplot/sierpinski-carpet-1.gnuplot
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
## SCff.gp 1/14/17 aev
|
||||
## Plotting Sierpinski carpet fractal.
|
||||
## dat-files are PARI/GP generated output files:
|
||||
## http://rosettacode.org/wiki/Sierpinski_carpet#PARI.2FGP
|
||||
#cd 'C:\gnupData'
|
||||
|
||||
##SC5
|
||||
clr = '"green"'
|
||||
filename = "SC5gp1"
|
||||
ttl = "Sierpinski carpet fractal, v.#1"
|
||||
load "plotff.gp"
|
||||
20
Task/Sierpinski-carpet/Gnuplot/sierpinski-carpet-2.gnuplot
Normal file
20
Task/Sierpinski-carpet/Gnuplot/sierpinski-carpet-2.gnuplot
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
## plotscf.gp 12/7/16 aev
|
||||
## Plotting a Sierpinski carpet fractal to the png-file.
|
||||
## Note: assign variables: ord (order), clr (color), filename and ttl (before using load command).
|
||||
## ord (order) # a.k.a. level - defines size of fractal (also number of dots).
|
||||
reset
|
||||
set terminal png font arial 12 size 640,640
|
||||
ofn=filename.".png"
|
||||
set output ofn
|
||||
unset border; unset xtics; unset ytics; unset key;
|
||||
set title ttl font "Arial:Bold,12"
|
||||
set xrange [0:1]; set yrange [0:1];
|
||||
sc(n, x, y, d) = n >= ord ? \
|
||||
sprintf('set object rect from %f,%f to %f,%f fc rgb @clr fs solid;', x, y, x+d, y+d) : \
|
||||
sc(n+1, x, y, d/3) . sc(n+1, x+d/3, y, d/3) . \
|
||||
sc(n+1, x+2*d/3, y, d/3) . sc(n+1, x, y+d/3, d/3) . \
|
||||
sc(n+1, x+2*d/3, y+d/3, d/3) . sc(n+1, x, y+2*d/3, d/3) . \
|
||||
sc(n+1, x+d/3, y+2*d/3, d/3) . sc(n+1, x+2*d/3, y+2*d /3, d/3);
|
||||
eval(sc(0, 0.0, 0.0, 1.0))
|
||||
plot -100
|
||||
set output
|
||||
27
Task/Sierpinski-carpet/Gnuplot/sierpinski-carpet-3.gnuplot
Normal file
27
Task/Sierpinski-carpet/Gnuplot/sierpinski-carpet-3.gnuplot
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
## plotscf1.gp 12/7/16 aev
|
||||
## Plotting a Sierpinski carpet fractal to the png-file.
|
||||
## Note: assign variables: ord (order, just for title), clr (color), filename and ttl (before using load command).
|
||||
## In this version order is always 5.
|
||||
reset
|
||||
set terminal png font arial 12 size 640,640
|
||||
ofn=filename.".png"
|
||||
set output ofn
|
||||
unset border; unset xtics; unset ytics; unset key;
|
||||
set title ttl font "Arial:Bold,12"
|
||||
o=3
|
||||
sqr(x,y) = abs(x + y) + abs(x - y) - o
|
||||
f(x) = o*abs(x) - o
|
||||
c0(x,y) = abs(x + y) + abs(x - y) - 1
|
||||
c1(x,y) = c0(o*x,f(y)) * c0(f(x),o*y) * c0(f(x),f(y))
|
||||
c2(x,y) = c1(o*x,f(y)) * c1(f(x),o*y) * c1(f(x),f(y))
|
||||
c3(x,y) = c2(o*x,f(y)) * c2(f(x),o*y) * c2(f(x),f(y))
|
||||
c4(x,y) = c3(o*x,f(y)) * c3(f(x),o*y) * c3(f(x),f(y))
|
||||
sc(x,y) = sqr(x,y)>0 || c0(x,y)*c1(x,y)*c2(x,y)*c3(x,y)*c4(x,y)<0 ? 0:1
|
||||
set xrange [-1.5:1.5]; set yrange [-1.5:1.5];
|
||||
set pm3d map;
|
||||
set palette model RGB defined (0 "white", 1 @clr);
|
||||
set size ratio -1
|
||||
smp=640; set samples smp; set isosamples smp;
|
||||
unset colorbox
|
||||
splot sc(x,y)
|
||||
set output
|
||||
20
Task/Sierpinski-carpet/Gnuplot/sierpinski-carpet-4.gnuplot
Normal file
20
Task/Sierpinski-carpet/Gnuplot/sierpinski-carpet-4.gnuplot
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
## pSCF.gp 12/7/16 aev
|
||||
## Plotting Sierpinski carpet fractals.
|
||||
## Note: assign variables: ord (order), clr (color), filename and ttl (before using load command).
|
||||
## ord (order) # a.k.a. level - defines size of fractal (also number of dots).
|
||||
#cd 'C:\gnupData'
|
||||
|
||||
##SCF21
|
||||
ord=3; clr = '"red"';
|
||||
filename = "SCF21gp"; ttl = "Sierpinski carpet fractal #21, ord ".ord;
|
||||
load "plotscf.gp"
|
||||
|
||||
##SCF22
|
||||
ord=5; clr = '"brown"';
|
||||
filename = "SCF22gp"; ttl = "Sierpinski carpet fractal #22, ord ".ord;
|
||||
load "plotscf.gp"
|
||||
|
||||
##SCF31
|
||||
ord=5; clr = '"navy"';
|
||||
filename = "SCF31gp"; ttl = "Sierpinski carpet fractal #31, ord ".ord;
|
||||
load "plotscf1.gp"
|
||||
22
Task/Sierpinski-carpet/Kotlin/sierpinski-carpet-1.kotlin
Normal file
22
Task/Sierpinski-carpet/Kotlin/sierpinski-carpet-1.kotlin
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// version 1.1.2
|
||||
|
||||
fun inCarpet(x: Int, y: Int): Boolean {
|
||||
var xx = x
|
||||
var yy = y
|
||||
while (xx != 0 && yy != 0) {
|
||||
if (xx % 3 == 1 && yy % 3 == 1) return false
|
||||
xx /= 3
|
||||
yy /= 3
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun carpet(n: Int) {
|
||||
val power = Math.pow(3.0, n.toDouble()).toInt()
|
||||
for(i in 0 until power) {
|
||||
for(j in 0 until power) print(if (inCarpet(i, j)) "*" else " ")
|
||||
println()
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) = carpet(3)
|
||||
57
Task/Sierpinski-carpet/Kotlin/sierpinski-carpet-2.kotlin
Normal file
57
Task/Sierpinski-carpet/Kotlin/sierpinski-carpet-2.kotlin
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
// version 1.1.2
|
||||
|
||||
import java.awt.*
|
||||
import javax.swing.*
|
||||
|
||||
public class SierpinskiCarpet : JPanel() {
|
||||
private val dim = 513
|
||||
private val margin = 20
|
||||
private var limit = dim
|
||||
|
||||
init {
|
||||
val size = dim + 2 * margin
|
||||
preferredSize = Dimension(size, size)
|
||||
background = Color.blue
|
||||
foreground = Color.yellow
|
||||
Timer(2000) {
|
||||
limit /= 3
|
||||
if (limit <= 3) limit = dim
|
||||
repaint()
|
||||
}.start()
|
||||
}
|
||||
|
||||
private fun drawCarpet(g: Graphics2D, x: Int, y: Int, s: Int) {
|
||||
var size = s
|
||||
if (s < limit) return
|
||||
size /= 3
|
||||
for (i in 0 until 9) {
|
||||
if (i == 4) {
|
||||
g.fillRect(x + size, y + size, size, size)
|
||||
}
|
||||
else {
|
||||
drawCarpet(g, x + (i % 3) * size, y + (i / 3) * size, size)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun paintComponent(gg: Graphics) {
|
||||
super.paintComponent(gg)
|
||||
val g = gg as Graphics2D
|
||||
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
|
||||
g.translate(margin, margin)
|
||||
drawCarpet(g, 0, 0, dim)
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
SwingUtilities.invokeLater {
|
||||
val f = JFrame()
|
||||
f.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
|
||||
f.title = "Sierpinski Carpet"
|
||||
f.isResizable = false
|
||||
f.add(SierpinskiCarpet(), BorderLayout.CENTER)
|
||||
f.pack()
|
||||
f.setLocationRelativeTo(null)
|
||||
f.isVisible = true
|
||||
}
|
||||
}
|
||||
6
Task/Sierpinski-carpet/MATLAB/sierpinski-carpet.m
Normal file
6
Task/Sierpinski-carpet/MATLAB/sierpinski-carpet.m
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
n = 3;
|
||||
c = string('#');
|
||||
for k = 1 : n
|
||||
c = [c + c + c, c + c.replace('#', ' ') + c, c + c + c];
|
||||
end
|
||||
disp(c.join(char(10)))
|
||||
31
Task/Sierpinski-carpet/PARI-GP/sierpinski-carpet-1.pari
Normal file
31
Task/Sierpinski-carpet/PARI-GP/sierpinski-carpet-1.pari
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
\\ Improved simple plotting using matrix mat (color and scaling added).
|
||||
\\ Matrix should be filled with 0/1. 7/6/16 aev
|
||||
iPlotmat(mat,clr)={
|
||||
my(xz=#mat[1,],yz=#mat[,1],vx=List(),vy=vx,xmin,xmax,ymin,ymax,c=0.625);
|
||||
for(i=1,yz, for(j=1,xz, if(mat[i,j]==0, next, listput(vx,i); listput(vy,j))));
|
||||
xmin=listmin(vx); xmax=listmax(vx); ymin=listmin(vy); ymax=listmax(vy);
|
||||
plotinit(0); plotcolor(0,clr);
|
||||
plotscale(0, xmin,xmax,ymin,ymax);
|
||||
plotpoints(0, Vec(vx)*c,Vec(vy));
|
||||
plotdraw([0,xmin,ymin]);
|
||||
print(" *** matrix: ",xz,"x",yz,", ",#vy," DOTS");
|
||||
}
|
||||
\\ iPlotV2(): Improved plotting from a file written by the wrtmat(). (color added)
|
||||
\\ Saving possibly huge generation time if re-plotting needed.
|
||||
iPlotV2(fn, clr)={
|
||||
my(F,nf,vx=List(),vy=vx,Vr,xmin,xmax,ymin,ymax,c=0.625);
|
||||
F=readstr(fn); nf=#F;
|
||||
print(" *** Plotting from: ", fn, " - ", nf, " DOTS");
|
||||
for(i=1,nf, Vr=stok(F[i]," "); listput(vx,eval(Vr[1])); listput(vy,eval(Vr[2])));
|
||||
xmin=listmin(vx); xmax=listmax(vx); ymin=listmin(vy); ymax=listmax(vy);
|
||||
plotinit(0); plotcolor(0,clr);
|
||||
plotscale(0, xmin,xmax,ymin,ymax);
|
||||
plotpoints(0, Vec(vx)*c,Vec(vy));
|
||||
plotdraw([0,xmin,ymin]);
|
||||
}
|
||||
\\ Are x,y inside Sierpinski carpet? (1-yes, 0-no) 6/10/16 aev
|
||||
inSC(x,y)={
|
||||
while(1, if(!x||!y,return(1));
|
||||
if(x%3==1&&y%3==1, return(0));
|
||||
x\=3; y\=3;);\\wend
|
||||
}
|
||||
19
Task/Sierpinski-carpet/PARI-GP/sierpinski-carpet-2.pari
Normal file
19
Task/Sierpinski-carpet/PARI-GP/sierpinski-carpet-2.pari
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
\\ Sierpinski carpet fractal (n - order, clr - color, dfn - data file name)
|
||||
\\ 6/10/16, upgraded 11/29/16 aev
|
||||
pSierpinskiC(n, clr=5, dfn="")={
|
||||
my(n3=3^n-1,M,pf=n>=5);
|
||||
if(pf, M=matrix(n3+1,n3+1));
|
||||
for(i=0,n3, for(j=0,n3,
|
||||
if(inSC(i,j),
|
||||
if(pf, M[i+1,j+1]=1, print1("* ")), if(!pf, print1(" ")));
|
||||
); if(!pf, print(""));
|
||||
);\\fend i
|
||||
if(!pf, return(0));
|
||||
if(dfn=="", c, wrtmat(M, dfn));
|
||||
}
|
||||
{\\ Test:
|
||||
pSierpinskiC(3);
|
||||
pSierpinskiC(5,14); \\ SierpC5.png, color - navy
|
||||
}
|
||||
{pSierpinskiC(5,,"c:\\pariData\\SC5.dat");
|
||||
iPlotV2("c:\\pariData\\SC5.dat",10);} \\ SierpC5a.png, color - dark-green
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
\\ Sierpinski carpet fractal
|
||||
\\ Note: plotmat() can be found here on
|
||||
\\ http://rosettacode.org/wiki/Brownian_tree#PARI.2FGP page.
|
||||
\\ 6/10/16 aev
|
||||
inSC(x,y)={
|
||||
while(1, if(!x||!y,return(1));
|
||||
if(x%3==1&&y%3==1, return(0));
|
||||
x\=3; y\=3;);\\wend
|
||||
}
|
||||
pSierpinskiC(n,pflg=0)={
|
||||
my(n3=3^n-1,M);
|
||||
if(pflg<0||pflg>1, pflg=0); if(pflg, M=matrix(n3+1,n3+1));
|
||||
for(i=0,n3, for(j=0,n3,
|
||||
if(inSC(i,j),
|
||||
if(pflg, M[i+1,j+1]=1, print1("* ")), if(!pflg, print1(" ")));
|
||||
); if(!pflg, print(""));
|
||||
);\\fend i
|
||||
if(pflg, plotmat(M));
|
||||
}
|
||||
{\\ Test:
|
||||
pSierpinskiC(3);
|
||||
pSierpinskiC(5,1); \\ SierpC5.png
|
||||
}
|
||||
25
Task/Sierpinski-carpet/R/sierpinski-carpet-1.r
Normal file
25
Task/Sierpinski-carpet/R/sierpinski-carpet-1.r
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
## Are x,y inside Sierpinski carpet (and where)? (1-yes, 0-no)
|
||||
inSC <- function(x, y) {
|
||||
while(TRUE) {
|
||||
if(!x||!y) {return(1)}
|
||||
if(x%%3==1&&y%%3==1) {return(0)}
|
||||
x=x%/%3; y=y%/%3;
|
||||
} return(0);
|
||||
}
|
||||
## Plotting Sierpinski carpet fractal. aev 4/1/17
|
||||
## ord - order, fn - file name, ttl - plot title, clr - color
|
||||
pSierpinskiC <- function(ord, fn="", ttl="", clr="navy") {
|
||||
m=640; abbr="SCR"; dftt="Sierpinski carpet fractal";
|
||||
n=3^ord-1; M <- matrix(c(0), ncol=n, nrow=n, byrow=TRUE);
|
||||
cat(" *** START", abbr, date(), "\n");
|
||||
if(fn=="") {pf=paste0(abbr,"o", ord)} else {pf=paste0(fn, ".png")};
|
||||
if(ttl!="") {dftt=ttl}; ttl=paste0(dftt,", order ", ord);
|
||||
cat(" *** Plot file:", pf,".png", "title:", ttl, "\n");
|
||||
for(i in 0:n) {
|
||||
for(j in 0:n) {if(inSC(i,j)) {M[i,j]=1}
|
||||
}}
|
||||
plotmat(M, pf, clr, ttl);
|
||||
cat(" *** END", abbr, date(), "\n");
|
||||
}
|
||||
## Executing:
|
||||
pSierpinskiC(5);
|
||||
17
Task/Sierpinski-carpet/R/sierpinski-carpet-2.r
Normal file
17
Task/Sierpinski-carpet/R/sierpinski-carpet-2.r
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
## Plotting Sierpinski carpet fractal v.2. aev 4/2/17
|
||||
## ord - order, fn - file name, ttl - plot title, clr - color
|
||||
pSierpinskiC2 <- function(ord, fn="", ttl="", clr="brown") {
|
||||
m=640; abbr="SCR2"; dftt="Sierpinski carpet fractal v.2";
|
||||
cat(" *** START", abbr, date(), "\n");
|
||||
if(fn=="") {pf=paste0(abbr,"o", ord)} else {pf=paste0(fn, ".png")};
|
||||
if(ttl!="") {dftt=ttl}; ttl=paste0(dftt,", order ", ord);
|
||||
cat(" *** Plot file:", pf,".png", "title:", ttl, "\n");
|
||||
S = matrix(1,1,1);
|
||||
for (i in 1:ord) {
|
||||
Q = cbind(S,S,S); R = cbind(S,0*S,S); S = rbind(Q,R,Q);
|
||||
}
|
||||
plotmat(S, pf, clr, ttl);
|
||||
cat(" *** END", abbr, date(), "\n");
|
||||
}
|
||||
## Executing:
|
||||
pSierpinskiC2(5);
|
||||
|
|
@ -5,21 +5,20 @@ if char=='' then char="*" /*use the default of an asteris
|
|||
if length(char)==2 then char=x2c(char) /*it was specified in hexadecimal char.*/
|
||||
if length(char)==3 then char=d2c(char) /* " " " " decimal character*/
|
||||
width=linesize() /*the width of the terminal screen. */
|
||||
if N>18 then numeric digits 1000 /*just in case the user went ka─razy. */
|
||||
if N>18 then numeric digits 100 /*just in case the user went ka─razy. */
|
||||
nnn=3**N /* [↓] NNN is the cube of N. */
|
||||
|
||||
do j=0 for nnn; z= /*Z: is the line to be displayed. */
|
||||
do k=0 for nnn; jj=j; kk=k; xChar=char
|
||||
|
||||
do k=0 for nnn; jj=j; kk=k; x=char
|
||||
do while jj\==0 & kk\==0 /*one symbol for a not (¬) is a \ */
|
||||
if jj//3==1 & kk//3==1 then do /*in REXX: // ≡ division remainder*/
|
||||
xChar=' ' /*use a blank for this display line. */
|
||||
leave /*LEAVE terminates this DO WHILE. */
|
||||
end
|
||||
if jj//3==1 then if kk//3==1 then do /*in REXX: // ≡ division remainder*/
|
||||
x=' ' /*use a blank for this display line. */
|
||||
leave /*LEAVE terminates this DO WHILE. */
|
||||
end
|
||||
jj=jj%3; kk=kk%3 /*in REXX: % ≡ integer division. */
|
||||
end /*while*/
|
||||
|
||||
z=z || xChar /*xChar is either black or white. */
|
||||
z=z || x /*xChar is either black or white. */
|
||||
end /*k*/ /* [↑] " " " " blank. */
|
||||
|
||||
if length(z)<width then say z /*display the line if it fits on screen*/
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
dim c$(3)
|
||||
c$(1) = "# # #"
|
||||
c$(2) = "# #"
|
||||
c$(3) = "# # #"
|
||||
|
||||
for m = 1 to 6
|
||||
print "------ Order ";m;" ------------"
|
||||
for k = 1 to m
|
||||
for i = 1 to 3
|
||||
for j = 1 to m
|
||||
print c$(i);
|
||||
next j
|
||||
print
|
||||
next i
|
||||
next k
|
||||
next m
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
10 LET O=3
|
||||
20 LET S=3**O
|
||||
30 FOR I=0 TO S-1
|
||||
40 FOR J=0 TO S-1
|
||||
50 LET X=J
|
||||
60 LET Y=I
|
||||
70 GOSUB 120
|
||||
80 IF C THEN PLOT J,I
|
||||
90 NEXT J
|
||||
100 NEXT I
|
||||
110 GOTO 190
|
||||
120 LET C=0
|
||||
130 IF X-INT (X/3)*3=1 AND Y-INT (Y/3)*3=1 THEN RETURN
|
||||
140 LET X=INT (X/3)
|
||||
150 LET Y=INT (Y/3)
|
||||
160 IF X>0 OR Y>0 THEN GOTO 130
|
||||
170 LET C=1
|
||||
180 RETURN
|
||||
8
Task/Sierpinski-carpet/Zkl/sierpinski-carpet-1.zkl
Normal file
8
Task/Sierpinski-carpet/Zkl/sierpinski-carpet-1.zkl
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
fcn drawPat(x0,y0,s,img){ // Draw 3x3 pattern with hole in middle
|
||||
foreach y,x in (3,3){
|
||||
if(x.isEven or y.isEven){ // don't draw middle pattern
|
||||
if(s>1) self.fcn(x*s + x0, y*s + y0, s/3, img); // recurse
|
||||
else img[x + x0, y + y0]=0xff0000; // red
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Task/Sierpinski-carpet/Zkl/sierpinski-carpet-2.zkl
Normal file
3
Task/Sierpinski-carpet/Zkl/sierpinski-carpet-2.zkl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
img:=PPM(800,800);
|
||||
drawPat(0,0,(3).pow(5),img);
|
||||
img.write(File("foo.ppm","wb"));
|
||||
Loading…
Add table
Add a link
Reference in a new issue