Вчера меня занесло на ресурс, внимание привлекла картинка с экрана и исходник. Исходный текст на сигавнишном языке выглядел непонятным, поэтому я стал искать. Ничего внятного не нашел, поэтому постарался понять, как это работает и переписал на PureBasic:
Dim c(3)
c(0)=$00ffFF
c(1)=$ffff00
c(2)=$00FF00
c(3)=$FF00FF
If InitSprite() And OpenWindow(0,0,0,640,480,"SineWave",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
; Repeat
x=128*2
y=128*2
RandomSeed(12345)
last=0
StartDrawing(ScreenOutput())
For i=1 To 30000
vertex=last
While vertex=last
vertex=Random(3,0)
Wend
x/2
y/2
If vertex=0 Or vertex=1
x=x+64*2
EndIf
If vertex=2 Or vertex=1
y=y+64*2
EndIf
Box( x+192,y+112,1,1,c(last))
last=vertex-1
If last=-1
last=3
EndIf
Next i
StopDrawing()
FlipBuffers()
Repeat
Until WindowEvent()=#PB_Event_CloseWindow
EndIf
c(0)=$00ffFF
c(1)=$ffff00
c(2)=$00FF00
c(3)=$FF00FF
If InitSprite() And OpenWindow(0,0,0,640,480,"SineWave",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
; Repeat
x=128*2
y=128*2
RandomSeed(12345)
last=0
StartDrawing(ScreenOutput())
For i=1 To 30000
vertex=last
While vertex=last
vertex=Random(3,0)
Wend
x/2
y/2
If vertex=0 Or vertex=1
x=x+64*2
EndIf
If vertex=2 Or vertex=1
y=y+64*2
EndIf
Box( x+192,y+112,1,1,c(last))
last=vertex-1
If last=-1
last=3
EndIf
Next i
StopDrawing()
FlipBuffers()
Repeat
Until WindowEvent()=#PB_Event_CloseWindow
EndIf
Я обратил внимание на комментарий original fractal program by @8bitfractals in Sinclair BASIC. Я уже побывал в этом клоповнике Twitter и ничего не смог посмотреть. Попробовал заново. После входа через учетку Google я просмотрел часть постов и остановился на сообщении Account suspended. Плюнул и зарегистрировался заново и стал читать, ставя лайки по совету этих долбоботов. Постов было дофига, я не заметил, как прочитал сообщения до 2018 года, и Орега вылетела вместе с вендой, сообщив о нехватке памяти.Хорошо, что нашел тот самый код:
Утром вернулся, просмотрел еще часть и Орега снова подавилась. Третий раз волшебный, и после очередной попытки я долистал до конца, сохранив картинки и исходники. В описании алгоритма фрактала встретил название restricted chaos game. Об алгоритме знают многие, знал и я, но про ограничение не слышал. Я просмотрел остальные картинки и с помощью BasinC перевел исходники на .tap. В новой версии нашел баг - при отладке нельзя выбрать окно показа переменных, программа вылетает с сообщение runtime error.
Комментарии
Отправить комментарий