Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

13.09.2007, 21:15
|
|
Познающий
Регистрация: 27.03.2007
Сообщений: 36
Провел на форуме: 1147600
Репутация:
86
|
|
Сообщение от Knight_of_Darkness
Я предполагал раздельчик, где будут отписываться энтузиасты... .
ну тогда уж раздельчик для всех языков...А то сторонникам других языков будет обидно.
|
|
|

13.09.2007, 21:29
|
|
Познающий
Регистрация: 03.02.2007
Сообщений: 94
Провел на форуме: 267066
Репутация:
165
|
|
угу, релизы на хтмл рулят! %)
Последний раз редактировалось Knight_of_Darkness; 13.09.2007 в 21:37..
|
|
|

13.09.2007, 21:46
|
|
Познавший АНТИЧАТ
Регистрация: 07.05.2006
Сообщений: 1,031
Провел на форуме: 5885100
Репутация:
773
|
|
давайте уже роботоф для зохвата человекоф+)
|
|
|

13.09.2007, 21:52
|
|
Banned
Регистрация: 15.08.2007
Сообщений: 9
Провел на форуме: 412449
Репутация:
10
|
|
Terminator
надо переписать ему систему что он не убивал человекоФ,кто возьмется?
|
|
|

13.09.2007, 21:58
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме: 2009677
Репутация:
472
|
|
Zitt,
KeDestroyTheWorld( 0 );
Knight_of_Darkness, даже по твоему сообщению все понятно, КАК ты хочешь заниматься одним проектом в группе человек? Каждый будет писать одно и тоже? Без координации ты не сделаешь ничего, а работа с координацией и есть командная, теперь ты понимаешь, что я имел ввиду? У тебя есть только желание, но не опыт.
Последний раз редактировалось Ni0x; 13.09.2007 в 22:01..
|
|
|

13.09.2007, 22:33
|
|
Познающий
Регистрация: 03.02.2007
Сообщений: 94
Провел на форуме: 267066
Репутация:
165
|
|
Правильно, это никак не значит, что я набираю команду. Я лишь могу предложить, отписать алгоритм, сказать, каких функций не хватает, собрать программу. А кто сказал, что человек, участвующий сегодня будет продолжать завтра?
Вобщем, сказанное тобой боян - с тобой никто не пытается спорить. Были бы люди и желание с их стороны.
Последний раз редактировалось Knight_of_Darkness; 13.09.2007 в 22:41..
|
|
|

13.09.2007, 22:36
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 228
Провел на форуме: 4325663
Репутация:
240
|
|
Решение задачи о ферзях.
n = |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 | |
L= |1 |0 |0 |2 |10 |4 |40 |92 |352 |724 |2680 |14200 |73712|
n - сторона квадрата, L - количество решений.
Если исходить из императивного программирования, то решение задачи может оказаться очень запутанным, а если следовать засадам декларативного программирования, то решение можно найти куда легче.
Кто не понял о чем речь, читаем доки и не спрашываем ерунды.
|
|
|

13.09.2007, 22:43
|
|
Познающий
Регистрация: 03.02.2007
Сообщений: 94
Провел на форуме: 267066
Репутация:
165
|
|
The_HuliGun, может всё-таки выложишь более развернутый алгоритм на народное обозрение? А что касается стороны L=14?
|
|
|

13.09.2007, 23:00
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 228
Провел на форуме: 4325663
Репутация:
240
|
|
Читаем сначала о Прологе, предикатах, логическом программировании, потом уже обсуждаем код
Код:
domains
queen = q(integer, integer)
queens = queen*
freelist = integer*
board = board(queens, freelist, freelist, freelist, freelist)
facts - counter
single counter(integer)
predicates
nondeterm placeN(integer,board,board)
nondeterm place_a_queen(integer,board,board)
nondeterm nqueens(integer SizeOfBoard,integer NumberOfQ)
nondeterm makelist(integer, freelist)
nondeterm findandremove(integer, freelist, freelist)
nextrow(integer, freelist, freelist)
nondeterm rows(integer, freelist, freelist)
clauses
nqueens(N,Q):-
makelist(N,L),
Diagonal=N*2-1,
makelist(Diagonal,LL),
rows(Q,L,Rows),
placeN(N,board([],Rows,L,LL,LL),Final),
Final=board(Queens,_,_,_,_),
write(Queens),nl,
counter(I),I1=I+1,assert(counter(I1)),
fail;
true.
placeN(_,board(D,[],L,D1,D2),board(D,[],L,D1,D2)):- !.
placeN(N,Board1,Result):-
place_a_queen(N,Board1,Board2),
placeN(N,Board2,Result).
place_a_queen(N,board(Queens,Rows,Columns,Diag1,Diag2),
board([q(R,C)|Queens],NewR,NewC,NewD1,NewD2)):-
nextrow(R,Rows,NewR),
findandremove(C,Columns,NewC),D1=N+C-R,
findandremove(D1,Diag1,NewD1),D2=R+C-1,
findandremove(D2,Diag2,NewD2).
findandremove(X,[X|Rest],Rest).
findandremove(X,[Y|Rest],[Y|Tail]):- findandremove(X,Rest,Tail).
makelist(1,[1]).
makelist(N,[N|Rest]):- N>1,N1=N-1, makelist(N1,Rest).
nextrow(Row,[Row|Rest],Rest).
rows(0,_,[]).
rows(N,[R|L],[R|S]):- N1=N-1,rows(N1,L,S).
rows(N,[_|L],S):- N>0,rows(N,L,S).
counter(0).
goal
nqueens(4,2),counter(N),write(N),exit.
Пример взят для Visual Prolog 5.2
|
|
|

14.09.2007, 02:41
|
|
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме: 4172659
Репутация:
646
|
|
Вот как эту зудучу решил я, код на Делфи (о ней же все-таки тема). Для наглядности рисую и доски, хотя это не нужно, главное - число.
Код:
program Ferzi;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
Ferz = '*';
Empty = '1';
War = '0';
N=4;
type
TDoska = array[1..N, 1..N] of char;
var
Count: word;
Dos: TDoska;
function SetFerz(D: TDoska; i,k: word): TDoska;
var
i1,k1: word;
begin
result := D;
if (i>N)or(k>N) then exit;
if result[i,k]<>Empty then exit;
for i1:=1 to n do
for k1:=1 to n do
begin
if result[i1,k1]=Empty then
begin
if (i1 = i)or(k1 = k) then result[i1,k1] := War;
if (i1-i=k1-k) then result[i1,k1] := War;
if (k1+i1=i+k) then result[i1,k1] := War;
end;
end;
result[i,k] := Ferz;
end;
procedure ShowDoska(D: TDoska);
var
i,k: word;
begin
for i := 1 to n do
begin
writeln;
for k:=1 to n do
write(D[i,k]:2);
end;
writeln;
end;
procedure Perestanovka(D: TDoska; h, c: integer);
var
i,k: word;
begin
if c = N then
begin
ShowDoska(D);
inc(Count);
end;
for k := 1 to N do
begin
if h < N then
if D[h+1,k]=Empty then
Perestanovka(SetFerz(D,h+1,k),h+1,c+1);
end;
end;
begin
FillChar(Dos,sqr(N),Empty);
Perestanovka(Dos, 0, 0);
writeln(#13#10,Count);
readln;
end.
Решал ее в прошлом году, признаюсь, поначалу никаких идей по поводу решения не было. А теперь о фактах. Эта задача была в финале чемпионата мира по программированию 1989 года 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|