Ãëàâíàÿ ñòðàíèöà


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Ilia Kantor                          2:5020/1815.6  08 Dec 2001  22:15:26
 To : All
 Subject : FAQ
 -------------------------------------------------------------------------------- 
 
 
 === Cut ===
 îé öèôpû }
        x:=a[i];
        { ñäâèã - îñâîáîæäåíèå ìåñòà â êîíöå k-îé ãpyïïû }
        for j:=i downto b[k]+1 do a[j]:=a[j-1];
        { çàïèñü â êîíåö k-îé ãpyïïû }
        a[b[k]]:=x;
        { ìîäèôèêàöèÿ k-ãî èíäåêñà è âñåõ áîëüøèõ }
        for j:=k to P-2 do b[j]:=b[j]+1;
        end;
  end;
      Ðåçyëüòàòû òpàññèpîâêè ïpîãpàììíîãî ïpèìåpà 3.15 ïpè  P=10
 è
 D=4 ïpåäñòàâëåíû â òàáëèöå 3.9.
                                                   Òàáëèöà 3.9
    ÚÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
    ³öèôpà³          ñîäåpæèìîå ìàññèâîâ a è b                ³
    ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
    ³èñõ. ³  220 8390 9524 9510  462 2124 7970 4572 4418 1283 ³
    ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
    ³  1  ³  220 8390 9510 7970  462 4572 1283 9524 2124 4418 ³
    ³     ³ ÀÄÄÄÄÄÄÄÄ0ÄÄÄÄÄÄÄÄÙ ÀÄÄÄ2ÄÄÄÙ ÀÄ3Ù ÀÄÄÄ4ÄÄÄÙ ÀÄ8Ù ³
    ³     ³  b=(5,5,7,8,10,10,10,10,11,11)                    ³
    ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
    ³  2  ³ 9510 4418  220 9524 2124  462 7970 4572 1283 8390 ³
    ³     ³ ÀÄÄÄ1ÄÄÄÙ ÀÄÄÄÄÄÄ2ÄÄÄÄÄÙ ÀÄ6Ù ÀÄÄÄ7ÄÄÄÙ ÀÄ8Ù ÀÄ9Ù ³
    ³     ³  b=(1,3,6,6,6,6,7,9,10,11)                        ³
    ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
    ³  3  ³ 2124  220 1283 8390 4418  462 9510 9524 4572 7970 ³
    ³     ³ ÀÄ1Ù ÀÄÄÄ2ÄÄÄÙ ÀÄ3Ù ÀÄÄÄ4ÄÄÄÙ ÀÄÄÄÄÄÄ5ÄÄÄÄÄÙ ÀÄ9Ù ³
    ³     ³  b=(1,2,4,5,7,10,10,10,10,11)                     ³
    ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
    ³  4  ³  220  462 1283 2124 4418 4572 7970 8390 9510 9524 ³
    ³     ³ ÀÄÄÄ0ÄÄÄÙ ÀÄ1Ù ÀÄ2Ù ÀÄÄÄ4ÄÄÄÙ ÀÄ7Ù ÀÄ8Ù ÀÄÄÄ9ÄÄÄÙ ³
    ³     ³  b=(3,4,5,5,7,7,7,8,9,11)                         ³
    ÀÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q12. 3D -> 2D
 A1.  (Sergey Melnikov  2:5020/1065.18)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
   Âîò îäèí èç ñïîñîáîâ:
 
  Èç (x,y,z) â (u,v):
 
   U = X + Y*cos(a)
   V = Z + Y*sin(a)
 
   ãäå a - yãîë, êîòîpûé áåpåòñÿ îáû÷íî â 45ø.
 
   èëè òàê:
 
   U = X + Z / 1.4
   V = Y + Z / 1.4
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 A2.  (Ivan Voroshilin  2:5079/51.3)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
 Hy ýòî ïpîñòî... Ñìîòpÿ êàêyþ òû ïpîåêöèþ õî÷åøü...
 Äëÿ ïåpñïåêòèâíîé:
 sx=MaxScreenx/2+(x*Zoff/(z+Zoff));
 sy=MaxScreeny/2-(y*Zoff/(z+Zoff));
 Ãäå Zoff pàññòîÿíèå îò íàáëþäàòåëÿ (íàïpèìåp -256);
 
 À äëÿ ïàpàëåëüíîé ïpîñòî îòñåêàåøü êîîpäèíàòy z, òî åñòü:
 sx=MaxScreenx/2+x;
 sy=MaxScreeny/2-y;
 
 sx,sy - ñïpîåöèpîâàíûå êîîpä-òû  òî÷êè íà 2d-ýêpàí(ïëîñêîñòü).
 x,y,z - êîîp-òû òî÷êè 3d ïpîñòpàíñòâå.
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 A3.  (Vlad Borodin  2:5004/4.6)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
 Àëãîpèòì çàâèñèò îò òîãî ÷òî òåáå íàäî è êàê y òåáÿ âñå
 yñòpîåíî.
 Ñàìûé ïpîñòîé âàpèàíò ýòî êîãäà ýêpàí pàñïîëîæåí â íà÷àëå
 ñèñòåìû êîîpäèíàò,
 ò.å. òî÷êà (0,0,0) - ýòî ëèáî òî÷êà (0,0) ëèáî (320,200) è ò.ï.
 Äàëåå åñòü äâà âèäà ïpîýêòèpîâàíèÿ: öåíòpàëüíàÿ è ïàpàëëåëüíàÿ
 ïpîåêöèè.
 Ïpè ïàpàëëåëüíîé ïpîñòî îòápàñûâàåøü Z êîîpäèíàòy è âñå.
 Ïpè öåíòpàëüíîé çàäàåòñÿ ôîêyñ (íàïpèìåp òî÷êà (0,0,-100))
 çàòåì âûñ÷èòûâàåòñÿ
 ôîpìyëà ïpÿìîé ïpîõîäÿùåé ÷åpåç äàííyþ òî÷êy è ôîêyñ, è ïîòîì
 ïpîñòî
 âû÷èñëÿåòñÿ
 ìåñòî ïåpåñå÷åíèÿ ïpÿìîé ñ ïëîñêîñòüþ z=0.
 
 À âîîáùå îáùèé âàpèàíò ýòî êîãäà ýêpàí pàñïîëîæåí ãäå-òî è
 òîãäà îí èìååò
 ñîáñòâåííyþ ñèñòåìy êîîpäèíàò (îíà ñîñòîèò èç íåêîòîpîãî
 îpòîpèïåpà çàäàþùåãî
 ïëîñêîñòü è íîpìàëü ê íåé) è íàäî ñíà÷àëà ïåpåâåñòè äàííyþ
 òî÷êy èç îáû÷íîé
 ñèñòåìû êîîpäèíàò â ýêpàííyþ (ýòî äåëàåòñÿ yìíîæåíèåì ìàòpèöû
 îápàòíîé ê
 ìàòpèöå
 ïåpåõîäà íà âåêòîp, îïpåäåëÿåìûé äàííîé òî÷êîé) - ïîëy÷àåì
 ïåpâûé ñëy÷àé. Âîò è
 âñå! Îñòàëîñü òîëüêî ôîpìyëêè ñîñòàâèòü - à ýòî yæå ïpîñòî, íî
 íàäî ïpàâèëüíî
 çàäàòü ýêpàííyþ ñèñòåìy êîîpäèíàò è ôîêyñ, à òî ìîæåò âñå
 ïpîìàñøòàáèpîâàòüñÿ
 èëè êpèâî, íååñòåñòâåííî pàñòÿíyòüñÿ â ïpîñòpàíñòâå.
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q13. Àëãîpèòì Z-buffer
 A1.  (Michail Svarichevsky  2:452/30.31)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
 Hàçíà÷åíèå: Êîppåêòíîå îòîápàæåíèå 3d ïîëèãîíîâ(â òîì ÷èñëå è
 ïåpåñåêàþùèõñÿ)
 Çäåñü - mass - ñîáñòâåííî Z-Buffer
 X,Y,Z êîîpäèíàòû âûâîäèìîé òî÷êè.
 
 void putpix(int X,int Y,int Z)
 {
  if(Z<mass[X][Y])
     {
       mass[X][Y]=Z;
       putpixel(X,Y,Z);
     }
 }
  íà÷àëå ïpîãpàììû èíèöèàëèçèpyåøü mass áîëüøèì ÷èñëîì(íàïpèìåp
 10000000000)
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 A2.  (Alexandr Ivanov  2:453/33.10)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
   Êîãäà  ïpîpèñîâûâàåøü  íà  ýêpàíå  ïëîñêîñòè,  òî êàæäîé òî÷êå
 èçîápàæåíèÿ  íà  ýêpàíå  ñîîòâåòñòâyåò  3-è êîîpäèíàòû X,Y - ýòî
 ñîáñòâåííî êîîpäèíàòû òî÷êè íà ýêpàíå, è Z ñîñòàâëÿþùàÿ. Òàê âîò
 êîîpäèíàòy  Z  äëÿ  êàæäîé òî÷êè ìû ïîìåùàåì â ìàññèâ pàçìåpîì ñ
 ýêpàí,  è  êàæäûé  pàç,  êîãäà  âûâîäèì  î÷åpåäíyþ  òî÷êy, ÷òîáû
 yçíàòü,  áëèæå îíà ê íàì èëè äàëüøå, ïpîñòî ïpîâåpÿåì Z áyôôåp â
 å¸  êîîpäèíàòàõ  (X,Y)  è åñëè òàì çíà÷åíèå ìåíüøå (Z âîçpàñòàåò
 "âãëyáü" ýêpàíà) ÷åì Z êîîpäèíàòà òåêyùåé òî÷êè, òî ýòy òî÷êy íå
 âûâîäèì,  èíà÷å  âûâîäèì  òî÷êy  è  â  Z  -  áyôåp  ïèøåì  å¸  Z
 ñîñòàâëÿþùyþ.
   Êîpî÷å, Z - áyôôåp ñîäåpæèò "påëüåô" èçîápàæåíèÿ. :)
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q14. Àëãîpèòì "Ïëàâàþùèé ãîpèçîíò"
 A.   (Anton Lobastoff  2:5000/7.84)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
 Ôyíêöèÿ? òèïà y=F(x,z)? Òîãäà - "ïëàâàþùèì ãîpèçîíòîì" åÿ.
 Âêpàòöå:
 Âûäåëÿåòñÿ 2 ìàññèâà pàçìåpíîñòüþ = ÷èñëy òî÷åê ïî ãîpèçîíòàëè
 - âåpõíèé è
 íèæíèé ãîpèçîíòû. âåpõíèé èíèöèàëèçèpyåòñÿ ìèíèìàëüíî âîçìîæíûì
 çíà÷åíèåì,
 íèæíèé - ñîîòâ. ìàêñèìàëüíî âîçìîæíûì.
 
 1. Öèêë ïî Z
   2. Öèêë ïî X
     y=F(x,z)
     if( y > âåpõíèé[x] || y < íèæíèé[x] ) { pèñyåì îíyþ òî÷êy }
     âåpõíèé[x]=max(âåpõíèé[x],y)
     íèæíèé[x]=min(íèæíèé[x],y)
 
 Âîçìîæíû âàpèàöèè íà òåìy ñîåäèíåíèÿ òî÷åê ëèíèÿìè è
 ïåpåêpåñòíîé øòpèõîâêè.
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q15. Çàêpàñêà Ãypî è Ôîíãà
 A.   (Andrew Usachov  2:5100/87)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
   Ãypî:  äëÿ  êàæäîé òî÷êè ìíîãîyãîëüíèêà âû÷èñëÿåòñÿ íîpìàëü, ñ
 åå   ïîìîùüþ   -   ÿpêîñòü  òî÷êè.  ×òîáû  âû÷èñëèòü  ÿpêîñòü  â
 ïpîèçâîüëíîé   òî÷êå   ìíîãîyãîëüíèêà,  ÿpêîñòè  èíòåpïîëèpyþòñÿ
 ñíà÷àëà âäîëü ñòîpîí ìíîãîyãîëüíèêà, à ïîòîì ìåæäy äâyìÿ òî÷êàìè
 íà pàçíûõ ñòîpîíàõ.
   Ôîíã:  èíòåpïîëèpyþòñÿ  ñàìè  íîpìàëè,  ÿpêîñòü  âû÷èñëÿåòñÿ â
 êàæäîé êîíêpåòíîé òî÷êå.
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q15.1. À êàê âû÷èñëèòü ýòy íîpìàëü, à çàòåì ÿpêîñòü?
 A.     (Andrew A Aksyonoff  2:5036/5.47)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
   Hîpìàëü  -  çàpàíåå ïpîñyììèpîâàâ íîpìèpîâàííûå (ïpèâåäåííûå ê
 äëèíå  1  ;))  íîpìàëè  äëÿ  êàæäîé ãpàíè, ê êîòîpîé ïpèíàäëåæèò
 äàííàÿ âåpøèíà (à íå òî÷êà, êñòàòè) è ïîâåpíyâ ýòîò pre-computed
 påçyëüòàò yæå â ïpîöåññå îòpèñîâêè êàê íàäî.
   ßpêîñòü  -  ïîñ÷èòàâ  yãîë  ìåæäy  âåêòîpîì íîpìàëè è âåêòîpîì
 ñâåòà. Ñêàëÿpíîå ïpîèçâåäåíèå ïîäåëèòü íà äëèíy è âçÿòü îò ýòîãî
 âñåãî àpêêîñèíyñ.
 
  + Origin: [Team ÑÀÏÐ] (2:462/42)
 
 Ä [55] RU.ALGORITHMS (2:5010/207.3) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 RU.ALGORITHMS Ä
  Msg  : 6 èç 155 +93
  Îò   : Alexander Dedusenko                 2:462/42        26
 ñåíòÿáðÿ 00, 00:
  Êîìó : All
  Òåìà : FAQ [3/3]
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Hi, All.
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q16. Àëãîpèòì ïîñòpîåíèÿ ìíîæåñòâà ìàíäåëüápîòà
 A.   (Sergey Potapenko  2:463/308.9)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
   Âîò äåpæè. Ïpîãpàììêà ìàëåíüêàÿ è ÿ äyìàþ äîñòàòî÷íî ïîíÿòíàÿ.
 Ïpàâäà påìêè ÿ íåñòàâèë. Êîãäàòî ÿ ÷åñòíî ñîäpàë å¸ èç êàêîãî-òî
 æypíàëà.
 
 === Hà÷àëî fractal.c ===
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
 #include <dos.h>
 #include <conio.h>
 
 #define COLOR 100
 #define MAS 0.9
 
 typedef struct complex Complex;
 
 void Sqr(Complex *z)
 {
   Complex Fool=*z;
 
   z->x=Fool.x*Fool.x-Fool.y*Fool.y;
   z->y=2*Fool.x*Fool.y;
 
 }
 
 char GetColor(Complex zInit)
 {
   Complex z=zInit;
   int Color=COLOR;
 
   while(z.x*z.x+z.y*z.y <= 4 && Color)
   {
     Sqr(&z);
 
     z.x+=zInit.x;
     z.y+=zInit.y;
 
     Color--;
   }
 
   return Color;
 }
 
 void DrawMandelSet(double xMin,double xMax,double yMin,double
 yMax)
 {
   double xInc,yInc;
   Complex zInit;
 
   int y,x;
 
   char far *Screen=(char far *)MK_FP(0xa000,0);
 
   zInit.y=yMin;
 
   xInc=(xMax-xMin)/320;
   yInc=(yMax-yMin)/200;
 
   for(y=0;y<200;y++,zInit.y+=yInc)
   {
     zInit.x=xMin;
 
     for(x=0;x<320;x++,zInit.x+=xInc,Screen++)
     *Screen=GetColor(zInit);
   }
 }
 
 void main(void)
 {
   _AX=0x13;geninterrupt(0x10);
 
   DrawMandelSet(-2*MAS,1*MAS,-1*MAS,1*MAS);
 
   getch();
 
   _AX=0x03;geninterrupt(0x10);
 }
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q17. Îöåíî÷íàÿ ôyíêöèÿ äëÿ êpåñòèêîâ-íîëèêîâ (ïÿòü â pÿä)
 A1.  (Serv Ponomarev  2:5020/1564.7)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
         Èòàê ñyòü îöåíî÷íîé ôyíêöèè - îöåíèòü íàñêîëüêî âûãîäíî
 íàì ïîñòàâèòü â
 äàííyþ òî÷êy ñâîþ ôèøêy. Î÷åâèäíî íàì áûâàåò âûãîäíî ýòî
 ñäåëàòü ëèáî äëÿ
 ñîçäàíèÿ ñâîåãî äëèííîãî pÿäà, ëèáî äëÿ áëîêèpîâàíèÿ äëèííîãî
 pÿäà ïpîòèâíèêà.
         Òàêæå ñëåäyåò y÷åñòü, ÷òî áûâàåò âûãîäíåå
 ïpîäîëæèòü/çàáëîêèpîâàòü
 áîëüøîå   êîëè÷åñòâî  íå  î÷åíü  äëèííûõ  pÿäîâ,  âìåñòî  îäíîãî
 äëèííîãî.
   Ôèøêà,  ïîñòàâëåííàÿ â äàííyþ ïyñòyþ êëåòêy ìîæåò îäíîâpåìåííî
 y÷àñòâîâàòü  â  ïpîäîëæåíèè  äî  8  pÿäîâ  (2  ãîpèçîíòàëüíûõ, 2
 âåpòèêàëüíûõ è 4 äèàãîíàëüíûõ).
   Ñ÷èòàåì,  ÷òî  ìû  ïîñòàâèëè ôèøêy â äàííîå ìåñòî. Òîãäà ìîæíî
 ñîñ÷èòàòü äëèííû êàæäîãî èç íàøèõ pÿäîâ, âêëþ÷àþùèõ ýòy ôèøêy.
   Ââåäåì  êîýô.  M = sum(Ki). Ãäå Ki - êîýô. âàæíîñòè i-ãî pÿäà.
 Ò.ê.  íàïpàâëåíèå  pÿäà íàì áåçpàçëè÷íî, òî Ki çàâèñèò òîëüêî îò
 äëèííû pÿäà.
   Äëÿ ïpîñòîòû ìîæíî âçÿòü Ki=3*äëèííà pÿäà.
   Ïîëy÷åííûé  êîýô.  Ì  - îöåíêà òîé âûãîäû, êîòîpyþ ìû ïîëy÷èì,
 ïîñòàâèâ â äàííyþ êëåòêy ñâîþ ôèøêy.
   Äàëåå  ïpåäïîëîæèì, ÷òî ìû íå ïîñòàâèëè â äàííyþ êëåòêy ôèøêy,
 è ñîîòâåòñòâåííî ýòî ñäåëàë ïpîòèâíèê.
   Àíàëîãè÷íî   ñ÷èòàåì  êîýô.  N  -  îöåíêà  âûãîäû,  ïîëy÷àåìîé
 ïpîòèâíèêîì.
   Ñëîæèâ  Ì  è N ñ íåêèìè îöåíî÷íûìè êîýô. ïîëy÷èì îêîí÷àòåëüíyþ
 îöåíêy:
    F = M + Q*N.
   ×èñåë  ÿ  íå ïîìíþ, ïîýòîìy ñ âû÷èñëåíèåì Ki ñòîèò ïîèãpàòüñÿ,
 âîçìîæíî  åãî  ñòîèò çàìåíèòü ñòåïåííîé ôyíêöèåì (íî ñ íåáîëüøèì
 îñíîâàíèåì!).
   Êîýô. Q - ïîêàçàòåëü àãpåññèâíîñòè àëãîpèòìà, åñëè îí áîëüøå 1
 àëãîpèòì  ñèäèò  â  ãëyõîé îáîpîíå; ìåíüøå 1 - àëãîpèòì ïûòàåòñÿ
 çàõâàòèòü èíèöèàòèây.
   Ïî ìîåìy ìíåíèþ, Q ñëåäyåò ápàòü ìåíüøå 1.
   Èç  ôè÷,  yñëîæíÿþùèõ  æèçíü ïpîòèâíèêy, ìîæíî äîáàâèòü ôàêòîp
 ñëy÷àéíîñòè,   äëÿ  âàpèàíòîâ  õîäà  ñ  pàâíûìè,  èëè  áëèçêèìè,
 îöåíî÷íûìè ôyíêöèÿìè.
   Òåîpåòè÷åñêè   ïpîòèâ   òàêîãî  àëãîpèòìà  ìîæåò  ñyùåñòâîâàòü
 âûèãpûøíàÿ ñòpàòåãèÿ, íî ÿ åå íå íàøåë.
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 A2.  (Konstantin Gilyov  2:5000/72)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
   Åñëè  på÷ü èäåò î êëàññè÷åñêèõ êpåñòèêàõ-íîëèêàõ, íà ïîëå 3õ3,
 òî òàì âñå ñêy÷íî è òpèâèàëüíî. Èãpà ãàpàíòèpîâàíî çàêàí÷èâàåòñÿ
 íè÷üåé, åñëè îäèí èç ïàpòíåpîâ ñîâñåì yæ ãëyïûõ õîäîâ íå äåëàåò,
 è áåñïpîèãpûøíûå ñòpàòåãèè äëÿ îáîèõ ñîâåpøåííî î÷åâèäíû.
   Åñëè  æå  òû  èìååøü â âèäy èãpy "ãî-ìîêè" (êpåñòèêè-íîëèêè íà
 íåîãpàíè÷åííîì  ïîëå,  âûèãpûâàåò  ïîñòàâèâøèé  5  øòyê â pÿä ïî
 ãîpèçîíòàëè, âåpòèêàëè èëè ïîä yãëîì 45 ãpàäyñîâ), òî åñòü ñ ÷åì
 ïîpàçâëå÷üñÿ.  Ïîìíèòñÿ,  ÿ  ïèñàë  ïpîãpàììêy, êîòîpyþ ñàì æå ñ
 áîëüøèì  òpyäîì  ïîáåæäàë,  õîòÿ  èãpàë  íåñëàáî  - â òypíèpàõ ñ
 ëþäüìè ëèäèpîâàë äîâîëüíî yâåpåííî :)
   Îñíîâíàÿ  èäåÿ  îöåíêè  áûëà ïpèìåpíî òàêàÿ: ïpîñìàòpèâàåì âñå
 íåïyñòûå   îòpåçêè  äëèíû  5  è  ñyììèpyåì  îöåíêè  äëÿ  íèõ.  Â
 ïpîñòåéøåì  âàpèàíòå  ïpîñòî  ïpèïèñûâàåì  íåêîòîpûé  âåñ êàæäîé
 âîçìîæíîé  êîìáèíàöèè  êpåñòèêîâ,  íîëèêîâ  è  ïyñòûõ  êëåòîê  â
 îòpåçêå  (èõ  âñåãî  243,  âêëþ÷àÿ  ñîâñåì  ïyñòîé). Åñëè yäà÷íî
 ïîäîápàòü  ýòè  âåñà,  òî ïpîãpàììêà yæå äàæå â òàêîì ïpîñòåéøåì
 âàpèàíòå  äîâîëüíî  çàáàâíî èãpàåò - ñòîèò ÷y-÷yòü çàçåâàòüñÿ, è
 íå  ïîñòpîèòü êàêyþ-íüòü ëîâyøêy â ñàìîì íà÷àëå, êàê ìîæíî yæå è
 ñäàâàòüñÿ   (âîçüìåò   "èçìîpîì",   y  æåëåçÿêè-òî  âíèìàíèå  íå
 îñëàáåâàåò  è íå pàññåèâàåòñÿ ñî âpåìåíåì, â îòëè÷èå îò ÷åëîâåêà
 :))
   Ñyùåñòâåííî  yñèëèòü  èãpy  ïpîãpàììû  ìîæíî,  åñëè  y÷åñòü  â
 îöåíêàõ  ïåpåñå÷åíèå  íà  ïyñòîé  êëåòêå îòpåçêîâ, çàíÿòûõ îäíèì
 èãpîêîì  (ñîáñ-íî,  âñå  ëîâyøêè  èìåííî íà òàêèõ ïåpåñå÷åíèÿõ è
 ñòpîÿòñÿ).  Êpîìå òîãî èìååò ñìûñë yâåëè÷èâàòü ãëyáèíy ïpîñìîòpà
 äëÿ òàê íàçûâàåìûõ ôîpñèpîâàííûõ õîäîâ (êîãäà â êàêîì-òî îòpåçêå
 yæå  ïîñòàâëåíî  4  êpåñòèêà  è  ïÿòàÿ  êëåòêà ïyñòàÿ, èëè êîãäà
 ïåpåñåêàþòñÿ â ïyñòîé êëåòêå äâà îòpåçêà ïî òpè êpåñòèêà).
   Êàñàòåëüíî  îïòèìèçàöèè  - ñîâåpøåííî î÷åâèäíî, ÷òî èíòåpåñyåò
 íå  àáñîëþòíàÿ  âåëè÷èíà  ýòîé  îöåíêè, à òîëüêî åå èçìåíåíèå îò
 ïpåäïîëàãàåìîãî  õîäà, à íà ýòî èçìåíåíèå íåïîñpåäñòâåííî âëèÿþò
 òîëüêî 20 îòpåçêîâ, ïpîõîäÿùèõ ÷åpåç êëåòêy ýòîãî ñàìîãî õîäà, è
 êîñâåííî   åùå   íåêîòîpîå   êîëè÷åñòâî   îòpåçêîâ  â  íåáîëüøîé
 îêpåñòíîñòè.   Êàê   ýôôåêòèâíî  õpàíèòü  èíôîpìàöèþ  î  òåêyùåì
 ñîñòîÿíèè  èãpîâîãî  ïîëÿ,  ÷òîáû  íå  äåëàòü äypíîé pàáîòû - ýò
 îòäåëüíàÿ ïåñíÿ :)
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 === Cut ===
                    /\/ Èñêðåííå âàø, Èëüÿ \/\
 --- GoldEd 3.00.Alpha4+
  * Origin: http://algolist.da.ru - Ìèð Àëãîðèòìîâ (2:5020/1815.6)
 
 

Âåðíóòüñÿ ê ñïèñêó òåì, ñîðòèðîâàííûõ ïî: âîçðàñòàíèå äàòû  óìåíüøåíèå äàòû  òåìà  àâòîð 

 Òåìà:    Àâòîð:    Äàòà:  
 FAQ   Ilia Kantor   08 Dec 2001 22:15:26 
Àðõèâíîå /ru.algorithms/39463c1282fc.html, îöåíêà 2 èç 5, ãîëîñîâ 10
ßíäåêñ.Ìåòðèêà
Valid HTML 4.01 Transitional