AKB Forums

Go Back   AKB Forums > Technical sections > Algorithms
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Algorithms The source of algorithms for your project

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Jun 30, 2003, 21:20   #1
ЙЦУКЕН
 
Join Date: Jul 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Posts: 3,114
Rep Power: 7
Reputation: 10
Send a message via ICQ to nm
кто рискнет ?

Так. люди. вы какие-то пассивные ,программеры :)

для начинающих предлагаю занять свое свободное время (послесессионное) следующим:

написание игры 'Life', которая умеет играть на бесконечном поле
и
написание алгоритма, который бы умел генерить
лабиринты (все линии под углами 90 градувос к друг другу, косых линий нет), которые проходимы из любой точки в другую.

для желающих потренировать мозги и размяться - вперед ;)
если есть вопросы - пишите сюда или в приват
nm is offline   Reply With Quote Quote selected
Old Jul 1, 2003, 04:00   #2
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,615
Rep Power: 11
Reputation: 202
Send a message via ICQ to Agregat Send a message via MSN to Agregat
Меня вот что волнует в первой задачке - я же могу сгенерить такую популяцию, которая разрастется до бесконечности - и никакого озу тебе не хватит...
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Jul 1, 2003, 05:43   #3
Administrator
 
greka's Avatar
 
Join Date: Sep 2001
Location: @work
Posts: 5,347
Rep Power: 10
Reputation: 23
Send a message via ICQ to greka
Quote:
Originally posted by Agregat
Меня вот что волнует в первой задачке - я же могу сгенерить такую популяцию, которая разрастется до бесконечности - и никакого озу тебе не хватит...
а ты свапуй на диск, в файлы

а что, идейка некосмическая, можна пораскинуть у кого чем есть...

а каковы правила этой игры ?
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/
greka is offline   Reply With Quote Quote selected
Old Jul 1, 2003, 05:45   #4
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,615
Rep Power: 11
Reputation: 202
Send a message via ICQ to Agregat Send a message via MSN to Agregat
Гарик, могу объяснить и на пальцах, но лучше пусть Гугл найдет тебе хорошие ссылки.
Автор игры - Конвей. Игра - жизнь.
Первая приличная ссылка вот
http://www.elvisti.kiev.ua/skl/conwey1/w_life_n.htm
Я делал ее еще на паскале на первом курсе и для ограниченного поля.
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Jul 10, 2003, 18:50   #5
ЙЦУКЕН
 
Join Date: Jul 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Posts: 3,114
Rep Power: 7
Reputation: 10
Send a message via ICQ to nm
Quote:
Originally posted by Agregat
Гарик, могу объяснить и на пальцах, но лучше пусть Гугл найдет тебе хорошие ссылки.
Автор игры - Конвей. Игра - жизнь.
Первая приличная ссылка вот
http://www.elvisti.kiev.ua/skl/conwey1/w_life_n.htm
Я делал ее еще на паскале на первом курсе и для ограниченного поля.

как ты заметил - речь шла именно об неограниченном поле, но не о популяции. кстати огромная популяция - она скорее всего у тебя либо периодическая, либо повторяет саму себя с мааленькими изменениями - я думаю, что оно должно аатличненько так сжиматься ....
nm is offline   Reply With Quote Quote selected
Old Jul 11, 2003, 04:16   #6
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,615
Rep Power: 11
Reputation: 202
Send a message via ICQ to Agregat Send a message via MSN to Agregat
Гаспар, ты можешь доказать или привести ссылку на доказательство, но не существует неограниченно растущих популяций?
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Jul 11, 2003, 08:31   #7
ЙЦУКЕН
 
Join Date: Jul 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Posts: 3,114
Rep Power: 7
Reputation: 10
Send a message via ICQ to nm
Quote:
Originally posted by Agregat
Гаспар, ты можешь доказать или привести ссылку на доказательство, но не существует неограниченно растущих популяций?
я говорил что то подобное ? попытайся перечитать мой пост еще раз

хотя . все равно . как я вижу программеры у нас более важными делами заняты
nm is offline   Reply With Quote Quote selected
Old Jul 11, 2003, 09:14   #8
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,615
Rep Power: 11
Reputation: 202
Send a message via ICQ to Agregat Send a message via MSN to Agregat
Я понял о чем ты.
Но все же если существуют такие популяции ("она скорее всего у тебя" - не совсем устраивает ) - то никакое сжатие тебе не поможет.
А делом на самом деле заняты другим...
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Jul 11, 2003, 16:23   #9
Banned
 
DaNYer's Avatar
 
Join Date: Oct 2002
Location: Brooklyn, New York
Posts: 3,760
Rep Power: 0
Reputation: 10
menya zainteresovala eta zadachka. popodrobnee pls. mne nikogda ne prixodilos' s takim stalkivat'sya. kak doljen bil predstavlen labirint? kakaya texnika? matrica?
DaNYer is offline   Reply With Quote Quote selected
Old Jul 11, 2003, 20:12   #10
ЙЦУКЕН
 
Join Date: Jul 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Posts: 3,114
Rep Power: 7
Reputation: 10
Send a message via ICQ to nm
Quote:
Originally posted by DaNYer
menya zainteresovala eta zadachka. popodrobnee pls. mne nikogda ne prixodilos' s takim stalkivat'sya. kak doljen bil predstavlen labirint? kakaya texnika? matrica?
bez raznicy, kak tebe udobno , tak i predstawljaj ... nu . dlja konkretizacii skazhu -
labirint prjamougol'nyj, NxM kletok (podskazka - (2n+1 na 2m+1 kletok) wse stenki idut pod uglami 0,90,180,270 gradusow drug k drugu
esli predstawljaesh w wide matricy -
skazhem wse stenki pomechaesh 1 , wse pustye mesta 0 ... nado sozdat'/pridumat' algoritm, kotoryj pozwolit stroit' labirinty, iz ljuboj pustoj (0) tochki kotorogo w ljubuju druguju pustuju tochku mozhno projti...
nm is offline   Reply With Quote Quote selected
Old Jul 15, 2003, 01:06   #11
инсценирующий жизнь
 
[ Xelgen ]'s Avatar
 
Join Date: Jul 2002
Location: Fireplace of Ecotopia
Posts: 4,165
Rep Power: 7
Reputation: 64
Send a message via ICQ to [ Xelgen ] Send a message via Skype™ to [ Xelgen ]
Quote:
Originally posted by nm
кто рискнет?
ну я... рискну..

вообще то как выходить их лаюиринта имеющего выход, думаю все знают, модет здесь это как то задействовать...

кстати "проходимы из любой точки в другую" означает что во всем лабиринте один общий "коридор"?
__________________
...ибо...
Rgrdz. [ Кселджэн ]
[ Xelgen ] is offline   Reply With Quote Quote selected
Old Jul 15, 2003, 07:40   #12
ЙЦУКЕН
 
Join Date: Jul 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Posts: 3,114
Rep Power: 7
Reputation: 10
Send a message via ICQ to nm
Quote:
Originally posted by [ Xelgen ]
ну я... рискну..

вообще то как выходить их лаюиринта имеющего выход, думаю все знают, модет здесь это как то задействовать...

кстати "проходимы из любой точки в другую" означает что во всем лабиринте один общий "коридор"?

da
nm is offline   Reply With Quote Quote selected
Old Jul 21, 2003, 08:41   #13
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,615
Rep Power: 11
Reputation: 202
Send a message via ICQ to Agregat Send a message via MSN to Agregat
pro labirint ya dumayu - volnovoj algoritm daet reshenie na ura
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Aug 6, 2003, 12:47   #14
Дошкольник
 
Join Date: Mar 2003
Location: 2A
Posts: 102
Rep Power: 6
Reputation: 10
Life

Поле может быть бесконечным только в теории, а так в данном примере MinInt .. MaxInt (можно конечно поменять на int64).
Сразу говорю пример написан с руки (не оптимизирован и могут быть логические ошибки).

interface
uses Classes;

type
TItemState = (sEmpty, sStable, sNew, sDying);
TDirection = (dNone, dLeft, dLeftTop, dTop, dRightTop, dRight, dRightBottom, dBottom, dLeftBottom);

PItem = ^TItem;
TItem = record
X: integer;
Y: integer;
State: TItemState;
end;

TPopulation = class(TList)
private
procedure CalculateDirections(Direction: TDirection; var X, Y: integer);
function GetItemState(X, Y: integer; Direction: TDirection = dNone): TItemState;
procedure MarkNeighbours;
public
procedure AddItem(X, Y: integer);
procedure ClearPopulation;
procedure Run(Step: integer = 1);
end;

implementation

procedure TPopulation.CalculateDirections(Direction: TDirection; var X, Y: integer);
begin
case Direction of
dLeft: dec(X);
dLeftTop: begin
dec(X);
dec(Y);
end;
dTop: Dec(Y);
dRightTop: begin
inc(X);
dec(Y);
end;
dRight: inc(X);
dRightBottom: begin
inc(X);
inc(Y);
end;
dBottom: inc(Y);
dLeftBottom: begin
dec(X);
inc(Y);
end;
end;
end;

function TPopulation.GetItemState(X, Y: integer; Direction: TDirection = dNone): TItemState;
var
i: integer;
begin
result:= sEmpty;
CalculateDirections(Direction, X, Y);
for i:= 0 to Count - 1 do
if (PItem(Self[i])^.X = X) and (PItem(Self[i])^.Y = Y) then
begin
result:= PItem(Self[i])^.State;
break;
end;
end;

procedure TPopulation.MarkNeighbours;
var
i: integer;
Dir, Dir1: TDirection;
Item: PItem;
NewItem: PItem;
NeighboursCount: byte;
NeighboursCountForEmptyItem: byte;
X, Y: integer;
begin
i:= 0;
while i < Count do
begin
NeighboursCount:= 0;
Item:= PItem(Self[i]);
if Item^.State = sStable then
begin
for Dir:= dLeft to dLeftBottom do
case GetItemState(Item^.X, Item^.Y, Dir) of
sStable, sDying: inc(NeighboursCount);
sEmpty: begin
NeighboursCountForEmptyItem:= 0;
new(NewItem);
X:= Item^.X;
Y:= Item^.Y;
CalculateDirections(Dir, X, Y);
NewItem^.X:= X;
NewItem^.Y:= Y;
for Dir1:= dLeft to dLeftBottom do
case GetItemState(NewItem^.X, NewItem^.Y, Dir1) of
sStable, sDying: inc(NeighboursCountForEmptyItem);
end;
if NeighboursCountForEmptyItem = 3 then
begin
NewItem^.State:= sNew;
Self.Add(NewItem);
end else
dispose(NewItem);
end;
end;
if (NeighboursCount < 2) or (NeighboursCount > 3) then
Item^.State:= sDying;
end;
inc(i);
end;
end;

procedure TPopulation.Run(Step: integer = 1);
var
i, j: integer;
begin
for i:= 1 to Step do
begin
MarkNeighbours;
j:= 0;
while j < Count do
begin
case GetItemState(PItem(Self[j])^.X, PItem(Self[j])^.Y) of
sNew: begin
PItem(Self[j])^.State:= sStable;
inc(j);
end;
sDying: begin
Dispose(Self[j]);
Self.Delete(j);
end;
else inc(j);
end;
end;
Pack;
end;
end;

procedure TPopulation.AddItem(X, Y: integer);
var
P: PItem;
begin
new(P);
P^.X:= X;
P^.Y:= Y;
P^.State:= sStable;
Add(P);
end;

procedure TPopulation.ClearPopulation;
var
i: integer;
begin
for i:= 0 to Count - 1 do
Dispose(Self[i]);
Clear;
end;
armeng is offline   Reply With Quote Quote selected
Old Aug 6, 2003, 12:59   #15
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,615
Rep Power: 11
Reputation: 202
Send a message via ICQ to Agregat Send a message via MSN to Agregat
А Pack это метод класс TList?
И что он представляет собой? Связанный список?
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 04:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link