Форум: "Потрепаться";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];
ВнизЗадачка мастерам от новичка :) Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c