Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.30;
Скачать: CL | DM;

Вниз

Задачка мастерам от новичка :)   Найти похожие ветки 

 
esu ©   (2002-04-22 16:56) [0]

Предположим у нас есть некая матрица 2n на 2n каждый елемент которой может быть заполнен единицей или нулем.
1011
1101
0010
0110
над этой матрицей можно проводить сдедующие операции. Грубо говоря кликнув на елемент с координатами 3,1 матрица преобразуется в такую
1001
0010
0000
0100
Тоесть все елементы которые находятся справа, слева, сверху и снизу заданного подвергаются операции "не".
Ну и 2 задачи по этому поводу
Задача для игроков:
все елементы должны иметь значение 1.
Задача для математиков:
Найти простой алгоритм для решения и подумать какой же математикой тут пахнет.

Алгоритмы и решения прошу писать сюда или на esu@barco.kiev.ua, если нитерестно посмотреть как это выглядит то я написал игрушку которую можно скачать тут: http://esu.bigmir.net/task.raar (переименуйте в рар и заархивируйте, написана на D6, исходники прилагаются, претензии к коду приветствуются)


 
VictorT ©   (2002-04-22 17:19) [1]

А была такая игрушка фирмы 1С, известной сейчас на несколько другом поприще, про братьев Пилотов (мультфильм "Следствие ведут Колобки"), так там надо было решить такую головоломку, чтобы открыть холодильник... Очень долго долбался...


 
MBo ©   (2002-04-22 17:38) [2]

N:integer=4;

implementation

{$R *.DFM}

//заполнение
procedure TForm1.Button1Click(Sender: TObject);
var
r,c:integer;
begin
StringGrid1.ColCount:=2*N;
StringGrid1.RowCount:=2*N;
for c:=0 to StringGrid1.ColCount-1 do
for r:=0 to StringGrid1.RowCount-1 do
StringGrid1.Cells[c,r]:=inttostr(random(2));
end;


//ручная тренировка ;)
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var r,c,r1,c1,q,sum:integer;
begin
with stringgrid1 do
for c1:=0 to ColCount-1 do
for r1:=0 to RowCount-1 do begin
if ( c1=acol) or (r1=arow) then
Cells[c1,r1]:=IntToStr(1-StrToInt(Cells[c1,r1]));
end;
end;


//пошаговый прогон
procedure TForm1.Button2Click(Sender: TObject);
var
r,c,r1,c1,q,sum:integer;
begin
with Stringgrid1 do begin
sum:=0;
for c:=0 to ColCount-1 do
for r:=0 to RowCount-1 do begin
q:=strtoint(Cells[c,r]);
Objects[c,r]:=pointer(q);
sum:=sum+q;
end;
if sum=Sqr(2*N) then Exit;
for c:=0 to ColCount-1 do
for r:=0 to RowCount-1 do begin
q:=Integer(Objects[c,r]);
if q=0 then
for c1:=0 to ColCount-1 do
for r1:=0 to RowCount-1 do begin
if (c1=c) or (r1=r) then
Cells[c1,r1]:=IntToStr(1-StrToInt(Cells[c1,r1]));
end;
end;
end;
end;


 
VictorT ©   (2002-04-22 18:09) [3]

MBo © (22.04.02 17:38)
Вот спасибочки. Уже опробовал. Я иногда, где-то раз в месяц, люблю в упомянутую игрушку поиграть и каждый раз на этой головоломке застреваю.


 
esu ©   (2002-04-22 18:13) [4]

MBo Respect :)



Страницы: 1 вся ветка

Текущий архив: 2002.05.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
14-97385
SPeller
2002-04-18 08:44
2002.05.30
Проблема с Виндой


14-97398
copyr25
2002-04-19 21:58
2002.05.30
Завтра вся московская милиция будет


1-97286
Demon Ltd
2002-05-18 00:31
2002.05.30
Копи файла


14-97407
Sergo
2002-04-22 09:40
2002.05.30
Снова о больном :)


7-97434
pvn
2002-03-06 05:57
2002.05.30
народ, помогите пожалуйста!!!