Нужно поступить иначе просто. Для начала взять пару человек, сформировав костяк команды, зарелизить что-то действительно стоящее и тогда люди сами захотят вступить, остается только делать отбор в команду для повышения качества. Однако, такая методика не распространяется на команды новичков, так как у них банально не хватит знаний и опыта для релизинга чего-то стоящего.
Предлагаю самым рулезным делфи-кодерам решить очень интересную задачку. Задача: дана шахматная доска размером N на N. Найти количество расположений N ферзей на этой доске таким образом, чтобы ни один не находился под боем. Пример для N=4: 0 * 0 0 0 0 0 * * 0 0 0 0 0 * 0 0 0 * 0 * 0 0 0 0 0 0 * 0 * 0 0 Ответ: 2 Есть интересный факт, который я раскрою после решения кем-то
Хех, я всегда знал, что такие посты заглушают волную бестолкового флуда Часть "кодеров" убежала прочь с этой темы, часть погрузилась в делфи, нагревая свои черепные коробки. Программирование = знание синтаксиса + искусство решения задач. Кодер, обладающий только первым компонентом, несомненно может написать текстовый редактор, калькулятор и т.п., но он никогда не решит вышезапощенную задачу. Думать алгоритмически, строить в голове путь решения задачи - вот что я считаю главным в программировании. Такие программисты пишут стойкие, быстрые и красивые алгоритмы.
KEZ, не нравится - не смотри. Joker-jar и все вменяемые: да, идей есть действительно много, но я категорически против того, как это было с Zero Byte - весь проект держался на мне. Неужели нет энтузиастов на ачате? Полно! Как раз Delphi - тот язык, в котором можно работать коллективно, и вот моя первая идея. Надеюсь, они не пройдут даром и будут замечены администрацией, которая прислушается к идее о создании раздела. ZeroNews программа берет сдирает новости с сервиса google, rss-каналов, и автоматически постит их на сайт под учеткой админа. Заточить под основные скрипты, настроить работу в режиме демона. Алгоритм таков: Сначала она грузит страницу новостей и выделяет по заданным формулам обзоры в один массив, адреса картинок ака превью в другой. Дальше загружает страницы со ссылок и аналогичным образом выдирает полные тексты и полные картинки. После либо через php-скрипт сливает на собственную новостную ленту (свой двиг), либо чередой загрузок определенных страниц логинится под своей модераторской учеткой и таким же образом постит новости. Это один цикл. Далее. Можно програму натаскать на то, чтобы каждые 30 минут она проверяла новые новости и повторяла вышеописанное. Жду ваших поправок в алгоритме, и приступим.
Наши коллеги дельфисты оживились. Не к добру это. План такой. Делаем прогу AntiZeroNews, которая будет спамить "новости с сервиса google, rss-каналы" сообщениями, которые будут переполнять буффер ZeroNews'a во время сбора новостей и тот будет уходить в офф, предварительно отсылая на php скрипт кучу непонятных запросов, которые скрипт не сможет обработать, умрет и утянет за собой весь веб сервер. А мы в это время будем потирать ладошки и злобно хихикать. ЗЫ даешь холивар! =)) ЗЫЫ не воспринимайте этот пост всерьез=) ЗЫЫЫ хотел запостить это в тему про с++, но ее снесли=\ ЗЫЫЫЫ какой-то я бред написал ^^
Ты это решил, глядя на циферки? И кто вообще сказал о тиме? Я предполагал раздельчик, где будут отписываться энтузиасты, это не обязывает никого к постоянному участию.
Zitt, KeDestroyTheWorld( 0 ); Knight_of_Darkness, даже по твоему сообщению все понятно, КАК ты хочешь заниматься одним проектом в группе человек? Каждый будет писать одно и тоже? Без координации ты не сделаешь ничего, а работа с координацией и есть командная, теперь ты понимаешь, что я имел ввиду? У тебя есть только желание, но не опыт.
Правильно, это никак не значит, что я набираю команду. Я лишь могу предложить, отписать алгоритм, сказать, каких функций не хватает, собрать программу. А кто сказал, что человек, участвующий сегодня будет продолжать завтра? Вобщем, сказанное тобой боян - с тобой никто не пытается спорить. Были бы люди и желание с их стороны.
Решение задачи о ферзях. 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 - количество решений. Если исходить из императивного программирования, то решение задачи может оказаться очень запутанным, а если следовать засадам декларативного программирования, то решение можно найти куда легче. Кто не понял о чем речь, читаем доки и не спрашываем ерунды.
The_HuliGun, может всё-таки выложишь более развернутый алгоритм на народное обозрение? А что касается стороны L=14?
Читаем сначала о Прологе, предикатах, логическом программировании, потом уже обсуждаем код Code: 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
Вот как эту зудучу решил я, код на Делфи (о ней же все-таки тема). Для наглядности рисую и доски, хотя это не нужно, главное - число. Code: 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 года