Chaos game: Difference between revisions

2,962 bytes added ,  1 month ago
(6 intermediate revisions by 5 users not shown)
Line 249:
150 PSET X,Y,V
160 NEXT I</syntaxhighlight>
 
==={{header|Applesoft BASIC}}===
Adapted from the code given above.
Line 270 ⟶ 271:
 
==={{header|BASIC256}}===
<syntaxhighlight lang="basic256">#Chaos game
#Chaos game
 
ancho = 500 : alto = 300
Line 302:
Refresh
ImgSave "chaos_game.jpg", "jpg"
End</syntaxhighlight>
End
 
</syntaxhighlight>
==={{header|GW-BASIC}}===
{{works with|PC-BASIC|any}}
{{works with|BASICA}}
<syntaxhighlight lang="qbasic">100 REM Chaos game
110 CLS
120 SCREEN 7 '320x200 EGA Color
130 X = INT(RND(1) * 200)
140 Y = INT(RND(1) * 173)
150 FOR I=1 TO 20000
160 V = INT(RND(1) * 3) + 1
170 ON V GOTO 180,210,240
180 X = X/2
190 Y = Y/2
200 GOTO 260
210 X = 100 + (100-X)/2
220 Y = 173 - (173-Y)/2
230 GOTO 260
240 X = 200 - (200-X)/2
250 Y = Y/2
260 PSET(X,Y),V
270 NEXT I
280 END</syntaxhighlight>
 
==={{header|IS-BASIC}}===
<syntaxhighlight lang="is-basic">100 PROGRAM "ChaosGam.bas"
110 RANDOMIZE
120 GRAPHICS HIRES 4
130 LET X=RND(800):LET Y=RND(600)
140 FOR I=1 TO 20000
150 LET VERTEX=RND(3)
160 SELECT CASE VERTEX
170 CASE 0
180 LET X=X/2
190 LET Y=Y/2
200 CASE 1
210 LET X=400+(400-X)/2
220 LET Y=600-(600-Y)/2
230 CASE 2
240 LET X=800-(800-X)/2
250 LET Y=Y/2
260 END SELECT
270 SET INK VERTEX+1
280 PLOT X,Y
290 NEXT</syntaxhighlight>
 
==={{header|Locomotive Basic}}===
Line 323 ⟶ 367:
150 plot x,y,v
160 next i</syntaxhighlight>
 
==={{header|MSX Basic}}===
{{works with|MSX BASIC|any}}
<syntaxhighlight lang="qbasic">100 REM Chaos game
110 CLS
120 SCREEN 2
130 X = INT(RND(1) * 256)
140 Y = INT(RND(1) * 192)
150 FOR I=1 TO 20000
160 V = INT(RND(1) * 3) + 1
170 ON V GOTO 180,220,260
180 X = X/2
190 Y = Y/2
200 V = 8 'red
210 GOTO 290
220 X = 128 + (128-X)/2
230 Y = 192 - (192-Y)/2
240 V = 3 'green
250 GOTO 290
260 X = 256 - (256-X)/2
270 Y = Y/2
280 V = 7 'blue
290 PSET(X,Y),V
300 NEXT I
310 END</syntaxhighlight>
 
==={{header|Sinclair ZX81 BASIC}}===
Line 769 ⟶ 838:
=={{header|EasyLang}}==
 
[https://easylang.dev/show/#cod=Zc1BCoMwEIXhfU7xL20FO1aKuMhJQhbFKgrVQAiS3L5MkW66GJj5eMwbwztEBhGTncfiEFoRHoI35aSenqHDm4wlPvdX2GaumjPlT+YQWbG0pKAgIgbYwjGRKbrHaUxI0+novZxP1j3xBe2pMjXZLf7CjbuqdlWFmvLTxnwA Run it]
[https://easylang.dev/show/#cod=Zc1BCsJADAXQfU7xl1WhphaRLjzJMItSWypYA0OR5PYmUrpxwkD+IySDvKSgYyZNGXckMBpmXBmZbKObV9c6qMfSvx+yTDjGHNmfTL7v6dpglQB/BGCRzwiFRV/GYQXXbfzI874EvxxnKsUJmuZ8wBmX0DhVmavtWtMX Run it]
 
<syntaxhighlight lang="text">
color 900
x[] = [ 0 100 50 ]
Line 778 ⟶ 847:
y = randomf * 100
for i = 1 to 100000
move x y
rect 0.3 0.3
h = randomrandint 3
x = (x + x[h]) / 2
y = (y + y[h]) / 2
.
</syntaxhighlight>
Line 1,106 ⟶ 1,175:
 
{{FormulaeEntry|page=https://formulae.org/?script=examples/Chaos_game}}
 
'''Solution'''
 
When using n points equally spaced over a circle we get a [https://en.wikipedia.org/wiki/N-flake Sierpiński n-gon]. However, the proportion (1/2 for a triangle) is different according to the following formula:
 
[[File:Fōrmulæ - Chaos game 01.png]]
 
[[File:Fōrmulæ - Chaos game 02.png]]
 
[[File:Fōrmulæ - Chaos game 03.png]]
 
The program is:
 
[[File:Fōrmulæ - Chaos game 04.png]]
 
'''Test cases'''
 
[[File:Fōrmulæ - Chaos game 05.png]]
 
[[File:Fōrmulæ - Chaos game 06.png]]
 
Notice that the Sierpiński's 4-gon is NOT the [https://en.wikipedia.org/wiki/Sierpi%C5%84ski_carpet Sierpiński carpet], it is a solid square
 
=={{header|FutureBasic}}==
Line 3,408 ⟶ 3,499:
XXX
</pre>
=={{header|Uiua}}==
<syntaxhighlight lang="Uiua">
Dim ← 500
Points ← [[50 ⌊÷2Dim] [-50Dim 50] [-50Dim -50Dim]]
# Uncomment to try different square or pentagonal references.
# Points ← [[50 50] [-50Dim 50] [50 -50Dim][-50Dim -50Dim]]
# Points ← [[50 ⌊÷2Dim] [⌊×0.4Dim 50] [⌊×0.4Dim -50Dim] [-50Dim 120] [-50Dim -120Dim]]
Colours ← [[1 0 0] [0 1 0] [0 0 1] [1 1 0] [1 0 1] [0 1 1]]
Rand ← ⌊×⚂
 
↯Dim_Dim_3 0
∧(⍜(⊡|[1 1 1]◌))Points
⊟Rand Dim Rand Dim
⍥(
Rand⧻Points
# Set next point and colour based on target.
⊃(⌊÷2+⊡:Points|⊙◌⊡:Colours)
⟜⍜⊡◌⊙:
)10000
# Uncomment to save image.
# &fwa "UiuaChaosGameSerpinski.png" &ime "png"
 
</syntaxhighlight>
{{out}}
[[File:UiuaChaosGameSerpinski.png|thumb|center|Render using colours associated with each target point.]]
 
=={{header|Wren}}==
{{trans|Kotlin}}
Line 3,413 ⟶ 3,531:
{{libheader|Wren-dynamic}}
{{libheader|Wren-seq}}
<syntaxhighlight lang="ecmascriptwren">import "dome" for Window
import "graphics" for Canvas, Color
import "math" for Point
Line 3,475 ⟶ 3,593:
 
var Game = ChaosGame.new(640, 640)</syntaxhighlight>
 
=={{header|X86 Assembly}}==
Sixty bytes handles it.
2,120

edits