Con la regola del salto a metà distanza, si introduce una novità: la scelta del nuovo punto non è pienamente casuale.
Il salto può essere solo verso un certo sottoinsieme di punti.
Se i punti disponibili sono quelli con indice +1, +4, +7 si ottiene la figure seguente
DIM =800 spazio=50 GraphicsWindow.Width =DIM GraphicsWindow.Height=DIM GraphicsWindow.Title ="Tappeto: +1 +4 +7" x[0]=spazio y[0]=spazio x[1]=DIM/2 y[1]=spazio x[2]=DIM-spazio y[2]=spazio x[3]=DIM-spazio y[3]=DIM/2 x[4]=DIM-spazio y[4]=DIM-spazio x[5]=DIM/2 y[5]=DIM-spazio x[6]=spazio y[6]=DIM-spazio x[7]=spazio y[7]=DIM/2 GraphicsWindow.BrushColor="#99FFFF00" For i=0 To 7 GraphicsWindow.FillEllipse(x[i]-10,y[i]-10,20,20) EndFor indice=0 xx=x[indice] yy=y[indice] While "true" rand=Math.GetRandomNumber(3) If(rand=1) Then incr=1 ElseIf(rand=2) Then incr=4 Else incr=7 EndIf indice=indice+incr If(indice > 7) Then indice=indice-8 EndIf xx=(xx+x[indice])/2 yy=(yy+y[indice])/2 GraphicsWindow.SetPixel(xx, yy, "#000000") EndWhile
Ecco il risultato con +1 +3 +5 +7
... rand=Math.GetRandomNumber(4) If(rand=1) Then incr=1 ElseIf(rand=2) Then incr=3 ElseIf(rand=3) then incr=5 ElseIf(rand=4) then incr=7 EndIf indice=indice+incr If(indice > 7) Then indice=indice-8 EndIf ...
Ecco il risultato con +2 +4 +6
If(rand=1) Then incr=2 ElseIf(rand=2) Then incr=4 Else incr=6 EndIf
Disponi i punti in circolo e poi sperimenta con le regole
4 punti, scelta +0 +1 +2
DIM =800 spazio=50 GraphicsWindow.Width =DIM GraphicsWindow.Height=DIM GraphicsWindow.Title ="Tappeto rotondo: +0 +1 +2" x[0]=DIM/2 y[0]=spazio x[1]=DIM-spazio y[1]=DIM/2 x[2]=DIM/2 y[2]=DIM-spazio x[3]=spazio y[3]=DIM/2 GraphicsWindow.BrushColor="#99FFFF00" For i=0 To 3 GraphicsWindow.FillEllipse(x[i]-10,y[i]-10,20,20) EndFor indice=0 xx=x[indice] yy=y[indice] While "true" rand=Math.GetRandomNumber(3) If(rand=1) Then incr=0 ElseIf(rand=2) Then incr=1 ElseIf(rand=3) then incr=2 EndIf indice=indice+incr If(indice > 3) Then indice=indice-4 EndIf xx=(xx+x[indice])/2 yy=(yy+y[indice])/2 GraphicsWindow.SetPixel(xx, yy, "#000000") EndWhile
5 punti, +1+2+3+4, salto a metà
DIM =800 spazio=50 GraphicsWindow.Width =DIM GraphicsWindow.Height=DIM GraphicsWindow.Title ="Tappeto rotondo: 5 +1+2+3+4" DIM2=DIM/2 RAGGIO=(DIM-spazio)/2 angolo=90 deltaAngolo=360/5 For indice=0 To 4 alfa=Math.GetRadians(angolo) x[indice]=DIM2+RAGGIO*Math.Cos(alfa) y[indice]=DIM2-RAGGIO*Math.Sin(alfa) angolo=angolo+deltaAngolo EndFor GraphicsWindow.BrushColor="#99FFFF00" For i=0 To 4 GraphicsWindow.FillEllipse(x[i]-10,y[i]-10,20,20) EndFor indice=0 xx=x[indice] yy=y[indice] While "true" rand=Math.GetRandomNumber(4) indice=indice+rand If(indice > 4) Then indice=indice-5 EndIf xx=(xx+x[indice])/2 yy=(yy+y[indice])/2 GraphicsWindow.SetPixel(xx, yy, "#000000") EndWhile
6 punti, +0+3+4+5