Вверх ↑
Ответов: 8921
Рейтинг: 823
#1: 2016-12-18 15:25:31 ЛС | профиль | цитата
Модель: вся вселенная состоит из ячеек, в каждой из которой тикают часики и перекидывают 12-ти битный счётчик. У каждой ячейки 26 соседних (9 сверху, 9 снизу и 8 по сторонам). Состояние соседских счётчиков считывается и, если среднее не равно своему, свои часики ускоряются, чтобы догнать, или замедляются, чтобы подождать соседей и уравнять показания счётчиков.
Все часики и счётчики тикают одинаково и ничего не происходит. Но в один прекрасный момент одна ячейка тормознула и этого достаточно, чтобы вся система вышла из равновесия и случился Большой Взрыв.
Каждый бит счётчика интерпретируется как свойство элементарной частицы -- заряд, спин, магнитный момент, странность, очарованность..Разница между соседями -- масса. И вот Вселенная со своей материей, законами и развитием, причём физического движения нет, а есть движение ИНФОРМАЦИИ :-)
Запустил Бог свою игрушку и наслаждается переливами света от красного до синего (кайф Его такой). Но подкрался Дьявол и удалось ему изменить состояние одной точки и начался хаос. Появились протоны (при разнице 255), электроны (при разнице 1) и прочие частицы. Но механического движения не было, перемещалась только информация. Хорошо, что экземпляр был опытный, не полный, без физики, а то дело дошло бы до галактик и разума, не верующего в Бога"
Жванецкий писал(а):
А у нас было!




Add(MainForm,15505180,154,140)
{
Width=392
Height=338
Caption="Little Information Universe"
link(onCreate,8810012:doWork2,[])
}
Add(ChildPanel,5105318,154,175)
{
link(onEvent1,8810012:doWork3,[(193,181)])
link(onEvent2,8144310:doEvent1,[])
link(onEvent3,2111790:doDevil,[(193,195)(193,202)])
}
BEGIN_SDK
Add(EditMulti,12482495,21,21)
{
EventCount=3
Width=223
Height=249
VOffset=7
}
Add(Panel,3767906,28,28)
{
Width=75
Height=300
Align=1
}
Add(Button,9528290,77,28)
{
Left=10
Top=5
Caption=">>"
link(onClick,16393194:doEvent1,[])
}
Add(Button,6757521,77,70)
{
Left=10
Top=35
Caption="II"
link(onClick,2914132:doEvent1,[])
}
Add(Button,3584235,91,203)
{
Left=10
Top=125
Height=55
Caption="Devil"
Point(onMouseDown)
Point(onMouseUp)
link(onClick,12482495:onEvent3,[(232,209)(232,48)])
}
Add(Thread,2210409,168,35)
{
Delay=1
link(onExec,4315140:doWork2,[])
}
Add(Button,8776970,91,161)
{
Left=10
Top=95
Caption="XX"
link(onClick,9049766:doEvent1,[])
}
Add(Hub,9049766,133,161)
{
link(onEvent1,7771379:doWork3,[(158,167)])
link(onEvent2,12482495:onEvent1,[(222,174)(222,34)])
}
Add(HubEx,7771379,154,77)
{
Angle=3
link(onEvent,2210409:doStop,[(158,48)])
}
Add(Button,7656091,91,119)
{
Left=10
Top=65
Enabled=1
Caption="Step"
Point(doEnabled)
link(onClick,4315140:doWork3,[(214,125)])
}
Add(Hub,16393194,119,28)
{
link(onEvent1,28280:doWork1,[(142,34)(142,66)(32,66)(32,125)])
link(onEvent2,2210409:doStart,[])
}
Add(ChanelToIndex,28280,42,119)
{
link(onIndex,7656091:doEnabled,[])
}
Add(Hub,2914132,119,70)
{
link(onEvent1,28280:doWork2,[(144,76)(144,111)(25,111)(25,132)])
link(onEvent2,7771379:doWork2,[])
}
Add(HubEx,4315140,210,35)
{
link(onEvent,12482495:onEvent2,[])
}
END_SDK
Add(Image,6071133,322,133)
{
Left=75
Width=300
Height=300
Align=5
link(Bitmap,15120213:Var2,[])
}
Add(Bitmap,9325375,322,84)
{
HWidth=100
HHeight=100
FillColor=8323200
Point(doCreate)
Point(onCreate)
link(onCreate,15618408:doWork1,[(361,90)(361,111)(286,111)])
}
Add(Hub,14882871,203,154)
{
link(onEvent1,9325375:doCreate,[(235,160)(235,104)])
link(onEvent2,2111790:doStart,[(235,167)(235,181)])
}
Add(InlineCode,2111790,245,175)
{
WorkPoints=#34:doStart=Расчёт начальных установок|26:doCalcN=Расчёт одного шага|22:doPic=Вывести картинку|24:doDevil=Остановка ячейки|
EventPoints=#28:onCoordX=Коодината Х пикселя|28:onCoordY=Коодината Y пикселя|20:onColor=Цвет пикселя|24:onPic=Катинка отрисована|0:|
VarPoints=#
DataPoints=#
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|42: Speed:Array[0..101, 0..101] of double;|51: StatusCellsDlb:Array[0..101, 0..101] of double;|52: StatusCellsInt:Array[0..101, 0..101] of integer;|4: |9: public|25: _data_Data:THI_Event;|50: onCoordX:THI_Event; //Коодината Х пикселя|50: onCoordY:THI_Event; //Коодината Y пикселя|43: onColor:THI_Event; //Цвет пикселя|49: onPic:THI_Event; //Катинка отрисована|0:|83: procedure doStart(var _Data:TData; Index:word); //Расчёт начальных установок|75: procedure doCalcN(var _Data:TData; Index:word); //Расчёт одного шага|71: procedure doPic(var _Data:TData; Index:word); //Вывести картинку|73: procedure doDevil(var _Data:TData; Index:word); //Остановка ячейки|4:end;|0:|14:implementation|0:|30:procedure THiAsmClass.doStart;|17: var i,j:integer;|6: begin|58: for i:=0 to 101 do for j:=0 to 101 do Speed[i,j]:=2.0;|69: for i:=0 to 101 do for j:=0 to 101 do StatusCellsDlb[i,j]:=128.0;|71: for i:=0 to 101 do for j:=0 to 101 do StatusCellsInt[i,j]:=8323200;|5: end;|2: |30:procedure THiAsmClass.doCalcN;|22: var i,j,Temp:integer;|18: //Temp:int64;|6: begin|21: for i:=1 to 100 do|9: begin|24: for j:=1 to 100 do|12: begin|91: Speed[i,j]:=((StatusCellsDlb[i-1,j-1]+StatusCellsDlb[i-1,j]+StatusCellsDlb[i-1,j+1]|64: +StatusCellsDlb[i,j-1]+StatusCellsDlb[i,j+1]|93: +StatusCellsDlb[i+1,j-1]+StatusCellsDlb[i+1,j]+StatusCellsDlb[i+1,j+1])/8|56: -StatusCellsDlb[i,j])/64+Speed[i,j];|15: end; |8: end;|4: |21: for i:=1 to 100 do|9: begin|24: for j:=1 to 100 do|12: begin|60: StatusCellsDlb[i,j]:=StatusCellsDlb[i,j]+Speed[i,j];|86: if StatusCellsDlb[i,j]>256 then StatusCellsDlb[i,j]:=StatusCellsDlb[i,j]-256;|84: if StatusCellsDlb[i,j]<0 then StatusCellsDlb[i,j]:=StatusCellsDlb[i,j]+256;|41: Temp:=trunc(StatusCellsDlb[i,j]);|51: StatusCellsInt[i,j]:=Temp+(255-Temp)*65536;|15: end; |8: end;|3: |21: for i:=1 to 100 do|9: begin|48: StatusCellsDlb[0,i]:=StatusCellsDlb[100,i];|49: StatusCellsDlb[101,i]:=StatusCellsDlb[1,i]; |48: StatusCellsDlb[i,0]:=StatusCellsDlb[i,100];|48: StatusCellsDlb[i,101]:=StatusCellsDlb[i,1];|8: end;|47: StatusCellsDlb[0,0]:=StatusCellsDlb[100,100];|47: StatusCellsDlb[0,101]:=StatusCellsDlb[100,1];|54: StatusCellsDlb[101,0]:=StatusCellsDlb[1,100]; |48: StatusCellsDlb[101,101]:=StatusCellsDlb[1,1]; |5: end;|1: |28:procedure THiAsmClass.doPic;|17: var i,j:integer;|6: begin|20: for i:=0 to 99 do|9: begin|23: for j:=0 to 99 do|12: begin|33: _hi_OnEvent(onCoordX, j);|33: _hi_OnEvent(onCoordY, i);|54: _hi_OnEvent(onColor, StatusCellsInt[i+1,j+1]);|15: end; |8: end;|24: _hi_OnEvent(onPic, 1);|5: end;|1: |30:procedure THiAsmClass.doDevil;|7: begin |36: if StatusCellsDlb[30,30]>128 then |51: StatusCellsDlb[30,30]:=StatusCellsDlb[30,30]-120|57: else StatusCellsDlb[30,30]:=StatusCellsDlb[30,30]+120; |7: end; |4:end.|
link(onCoordX,16020033:doValue,[])
link(onCoordY,5984473:doValue,[])
link(onColor,12875597:doDraw,[(295,195)(295,237)])
link(onPic,15618408:doWork3,[(286,202)])
}
Add(Hub,8144310,203,182)
{
link(onEvent1,2111790:doCalcN,[])
link(onEvent2,2111790:doPic,[])
}
Add(Img_Point,12875597,308,231)
{
Point(X)
Point(Y)
Point(Color)
link(Bitmap,15120213:Var1,[(314,124)])
link(X,16020033:Value,[])
link(Y,5984473:Value,[])
}
Add(GetDataEx,15120213,322,119)
{
link(Data,9325375:Bitmap,[])
}
Add(Memory,16020033,315,175)
{
}
Add(Memory,5984473,322,182)
{
}
Add(HubEx,15618408,282,133)
{
link(onEvent,6071133:doLoad,[])
}
Add(HubEx,8810012,189,154)
{
link(onEvent,14882871:doEvent1,[])
}
карма: 19

1
Голосовали:igr