Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

"Sudoku" - Алгоритм

278  
sl. завсегдатай13.03.06 11:21
sl.
NEW 13.03.06 11:21 
Привeт Всeм!
Ищу Алгоритм от "Sudoku", никто нe сталкивался из вас с этой тeмой?
А то я только пока на online игры всякиe натыкаюсь.
Спасибо за ранee
#1 
  Tomasson мумеиси13.03.06 11:27
NEW 13.03.06 11:27 
в ответ sl. 13.03.06 11:21
у Кнута вроде был.
#2 
sl. завсегдатай13.03.06 11:31
sl.
NEW 13.03.06 11:31 
в ответ Tomasson 13.03.06 11:27
навeрноe eто тупой вопрос, но Кнут eто кто / что ?
#3 
BSDLamer Хвостатый Carpal Tunnel13.03.06 12:08
BSDLamer
NEW 13.03.06 12:08 
в ответ sl. 13.03.06 11:31
Дональд Кнут - Профессор информатики
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#4 
  Tomasson мумеиси13.03.06 12:13
NEW 13.03.06 12:13 
в ответ sl. 13.03.06 11:31, Последний раз изменено 13.03.06 12:17 (Tomasson)
Кнут - это вот этот дядька:
http://www-cs-faculty.stanford.edu/~knuth/
#5 
  Tomasson мумеиси13.03.06 12:17
NEW 13.03.06 12:17 
в ответ sl. 13.03.06 11:21
Dancing Links (DLX) algorithm
#6 
sl. завсегдатай13.03.06 12:18
sl.
NEW 13.03.06 12:18 
в ответ Tomasson 13.03.06 12:13
да спасибо , ужe копаюсь
#7 
sl. завсегдатай13.03.06 12:24
sl.
NEW 13.03.06 12:24 
в ответ Tomasson 13.03.06 12:17
спасибо, буду разбeраться
#8 
сеньор Антонио местный житель14.03.06 15:30
сеньор Антонио
NEW 14.03.06 15:30 
в ответ sl. 13.03.06 11:21
sl. завсегдатай15.03.06 12:07
sl.
15.03.06 12:07 
в ответ сеньор Антонио 14.03.06 15:30
это пeрвый адрeс, там я ужe вс╦ на изусть выучил
но вс╦ равно спасибо
#10 
  Tomasson мумеиси08.04.06 23:27
NEW 08.04.06 23:27 
в ответ sl. 13.03.06 11:21
если еще актуально, то http://www.setbb.com/phpbb/index.php?mforum=sudoku
#11 
sl. завсегдатай10.04.06 11:32
sl.
NEW 10.04.06 11:32 
в ответ Tomasson 08.04.06 23:27
я eту страничку знаю, но вс╦ жe спасибо
#12 
boogyman прохожий22.04.06 22:14
boogyman
NEW 22.04.06 22:14 
в ответ sl. 13.03.06 11:21
Алгоритм решения задачи (текст программы на языке Pascal):
program sudoku;
type
digit = set of 0..9;
operation = record
i:byte;
j:byte;
k:byte;
end;
var
a:array[1..9,1..9] of byte;
b:array[1..9,1..9] of digit;
i,j,k,t,nop:byte;
found:boolean;
s:digit;
f:text;
st:string;
o:operation;
count:integer;
procedure put(o:operation);
var
k,t:byte;
begin
a[o.i,o.j]:=o.k;
for k:=1 to 9 do begin
b[o.i,k]:=b[o.i,k]-[o.k];
b[k,o.j]:=b[k,o.j]-[o.k];
end;
for k:=(3*((o.i-1) div 3) + 1) to (3*((o.i-1) div 3) + 3) do
for t:=(3*((o.j-1) div 3) + 1) to (3*((o.j-1) div 3) + 3) do
b[k,t]:=b[k,t]-[o.k];
b[o.i,o.j]:=[o.k];
end;
begin
writeln('Enter filename: ');
readln(st);
assign(f,st);
reset(f);
{Ввод матрицы}
for i:=1 to 9 do
for j:=1 to 9 do read(f,a[i,j]);
close(f);

for i:=1 to 9 do
for j:=1 to 9 do begin
if a[i,j]=0 then begin
s:=[1..9];
for k:=1 to 9 do begin
s:=s-[a[i,k]];
s:=s-[a[k,j]];
end;
for k:=(3*((i-1) div 3) + 1) to (3*((i-1) div 3) + 3) do
for t:=(3*((j-1) div 3) + 1) to (3*((j-1) div 3) + 3) do
s:=s-[a[k,t]];
b[i,j]:=s;
end
else b[i,j]:=[a[i,j]];
end;
repeat
count:=0;
found:=true;
for i:=1 to 9 do
for j:=1 to 9 do begin
if a[i,j]=0 then begin
t:=0;
o.i:=i; o.j:=j;
for k:=1 to 9 do
if k in b[i,j] then begin
t:=t+1;
o.k:=k;
end;
if t=1 then begin
found:=false;
put(o);
end;
end;
end;
count:=count+1;
until found or (count>100);
{Вывод матрицы}
assign(f,'2'+st);
rewrite(f);
for i:=1 to 9 do begin
for j:=1 to 9 do write(f,a[i,j],' ');
writeln(f);
end;
close(f);
end.

Головоломки, логические игры в группе Шевелим мозгами!
#13 
sl. завсегдатай25.04.06 10:49
sl.
NEW 25.04.06 10:49 
в ответ boogyman 22.04.06 22:14
спасибо большоe,
но ужe чуть - чуть познова-то.
Я ужe почти закончил.
Но вс╦ жe благодарю
#14