Главная страница
    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.45 MB
Время: 0.007 c
1-97247
Igg
2002-05-21 00:35
2002.05.30
Как в StringGridе текст в верхнем столбце писать вертикально


3-97150
Саша
2002-05-06 12:37
2002.05.30
EDBEngineError Translate error.Value out of bounds


3-97145
Pavel_S
2002-05-06 16:00
2002.05.30
Проблема с Post


7-97442
TALLA
2002-03-03 14:37
2002.05.30
Эмуляция клика/двойного клика на любом приложении


14-97399
VictorT
2002-04-19 17:55
2002.05.30
Когда должно происходить событие FormActivate?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский