|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Ilia Kantor 2:5020/1815.6 08 Dec 2001 22:16:42 To : All Subject : FAQ -------------------------------------------------------------------------------- === Cut === Q18. 혅晟孼猥 p葉�p荻迹 魏p震檣� (C source) A. (Andrew Usachov 2:5100/87) 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� #include <dos.h> #include <alloc.h> #include <fcntl.h> #include <io.h> #include <mem.h> #include <math.h> typedef struct { char bfType[2]; unsigned long bfSize; unsigned long bfReserved; unsigned long bfOffBits; unsigned long biSize; unsigned long biWidth; unsigned long biHeight; unsigned int biPlanes; unsigned int biBitCount; unsigned long biCompression; unsigned long biSizeImage; unsigned long biXPelsPerMeter; unsigned long biYPelsPerMeter; unsigned long biClrUsed; unsigned long biClrImportant; struct { unsigned char rgbBlue; unsigned char rgbGreen; unsigned char rgbRed; unsigned char rgbReserved; } bmiColors[256]; } TBMPFileHeader; typedef unsigned char Row[320]; main(argc,argv) int argc; char **argv; { Row *screen = MK_FP(0xA000,0), *picture, *buffer; int BMP; TBMPFileHeader header; unsigned x,y,i, xp,yp; long x0,y0, xdx,xdy, ydx,ydy, x1,y1; double A, SinA, CosA, scale; int r,g,b, black, black_bri, bri; if ( argc<2 || (picture = malloc(64000)) == NULL || (buffer = malloc(64000)) == NULL ) return(1); // 婆診諺 魏p震檣y 了 256-他奄狀莘 *.BMP 牒雨� � p暹靭p佃 了翟p剡孼�� 320x200 // � 悚� 尿禎蟻吾循杖� 惟逸p嚴茁�. 及傲�p 牒雨� 哀飮孼 岫潗 65078 蓀煜. BMP = open(argv[1], O_RDONLY | O_BINARY); read(BMP,&header,sizeof(header)); read(BMP,buffer,64000); close(BMP); // 渟p嶪賊夭 � �p宬料嚴孺� p臆夭 13h _AX=0x13; geninterrupt(0x10); // 了靭��諺 檉泣�py � 壯軸怏� 焌荏� 特p裝� 他奄 black_bri=32767; // �p惟增� 焌溢莘 特p狀莘 了 壯藕孼裝� 他奄荻 outportb(0x3c8,0); for (i=0; i<256; i++) { r=header.bmiColors[i].rgbRed >> 2; g=header.bmiColors[i].rgbGreen >> 2; b=header.bmiColors[i].rgbBlue >> 2; outportb(0x3c9, r); outportb(0x3c9, g); outportb(0x3c9, b); bri=r*r+g*g+b*b; // �p惟增� 鎭�y緘莘 他奄� if (bri<black_bri) { black_bri=bri; black=i; // 焌荏� 特p裝� 了 壯藕孼裝� 他奄荻 } } _AX=0x1001; // 適p星外諺 灑p額p � 特p裝� 他奄 _BH=black; geninterrupt(0x10); // � 牒雨� 增p適� �p陝堯尿� � 翟p城狀� 禎p�殃�, 撓 張翟軸怏溢 渟p嚴診淳潗 for (y=0; y<200; y++) memcpy(picture[y],buffer[199-y],320); // �p晟齧� 魏p震檣y for (A=0.0; inportb(0x60)!=0x01; A+=0.03) { // 禎魏 張 壯縯泣 ESCAPE scale=1.0/(1.0+0.2*cos(A*4.0)); // 惟戱淸打孼� y橓泣特杖� 魏p震檣� SinA=sin(A); CosA=cos(A); // 魏�y� 桎把y 魏p震檣� 壯哀 了翟p剡城� � 橓p蹴彦 音脣� 桎把� 僖p陝�? // (尿禎蟻�y�秩� 述婆衆孼�� � 淸揄�p荻陝狀� 桎把迹 � 切p茵鎭 16.16) x0= (160.0+scale*(-160.0*CosA+100.0*1.2*SinA))*65536.0; y0= (100.0+scale*(-100.0*CosA-160.0*SinA/1.2))*65536.0; // 壯 仲鏑獪� 壯哀 重嚴震潗�� 禎 魏p震檣� �p� 渟p諺予孼僚 禎 僖p陝y // 壯 炡揄言� 瞬億� xdx = scale*CosA*65536.0; xdy = scale*SinA*65536.0/1.2; // 壯 炡揄言� 純了 ydx = -scale*SinA*65536.0*1.2; ydy = scale*CosA*65536.0; for (y=0; y<200; y++) { // x0, y0 - 惟�p怏壯執 壯 魏p震檣� 壯妬乙 鎭�y緘� 增p適� 仲陝�p荻陝�� // x1, y1 - 惟�p怏壯執 壯 魏p震檣� 鎭�y緘� p尿y諺迹 桎把� x1 = x0; y1 = y0; for (x=0; x<320; x++) { // xp, yp - 惟�p怏壯執 壯 魏p震檣� 鎭�y緘� p尿y諺迹 桎把� (切p茵� 16:0) xp = x1 >> 16; yp = y1 >> 16; // "幽寥炡帳" if (/*xp>=0 &&*/ xp<=319 && /*yp>=0 &&*/ yp<=199) // �.�. 佺� unsigned buffer[y][x]=picture[yp][xp]; else buffer[y][x]=black; // 渟p抑淳蓮杖� 楯鏑� 增p適� 仲陝�p荻陝�� x1+=xdx; y1+=xdy; } // 渟p嶪賊 � 狀脣� 增p適� 仲陝�p荻陝�� x0+=ydx; y0+=ydy; } // 了翟p剡齧� 壯 僖p陝� � 余� 張日跡惟 禎脣p成外齧� memcpy(screen,buffer,64000); }; _AX=0x03; geninterrupt(0x10); free(buffer); free(picture); return(0); } 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� Q19. 淃尿� 禎 茵仲� A. (Arkady V.Belousov ark@belous.munic.msk.su) 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� #include <cv/string2.h> /*---------------------------------------------------------------------*/ /* �p設張杖� 增p適� � 胞頌佺佃. � 胞頌佺� 溢悅� y禎�p齬��潗 午蟾� '?' */ /* (誼灑� 午蟾) � '*' (誼灑� 惟泣特增脣 誼岫� 午蟾荻) */ #define isMaskDone() ((bool)!*mask) bool NFAST_ wildcmp(PCStr mask, PCStr name){ PCStr last; /* y魏晤循奄 壯 �p抑或y陷� 胞頌佺裝� 茁蚓鏑 */ /* �p設杖潗 壯妬依 (哀 渟p脣莘 茁蚓鏑� '*') 胞頌佺� � 夭孼諺 */ for(;; mask++, name++){ char ch = *name; if(*mask != '?' && *mask != ch) break; if(ch == EOS) return isMaskDone(); /* *mask == EOS */ } if(*mask != '*') return false; for(;; mask++, name++){ /* 퇸泣 茁蚓鏑 �py程�, 午成嶢 增�p�� �py程� 櫛舜贍� � */ /* �y悅� 裔禎日嶢� 狀述� 增�p桎述� 禎預打� �p設張杖� */ while(*mask == '*'){ /* while - 裔陷診 剪 "**" */ last = mask++; /* 퇸泣 '*' 增迪� � 惟莊� 胞頌佺�, 桎 仲陝�p荻城� */ /* 騶前� 增p適� 張 �p齬y奄�� */ if(*mask == EOS) return isMaskDone(); /* true */ } /* 퇸泣 惟葬堯前� 夭�, 橓p�y潗 p偃y蟻診� �p設張杖� */ char ch = *name; if(ch == EOS) return isMaskDone(); /* *mask == EOS */ if(*mask != '?' && *mask != ch){ /* 퇸泣 午蟾 胞頌佺� 張 櫛舜雪齧� 櫛 午蟾佃 夭孼�, */ /* �y悅� 剪增y炡潗 � 壯妬�y 禎愛�p適� � 禎鋌診潗�� */ /* 壯煜� 躍 櫛 衆抑y�緘� 禎預打� 夭孼� */ name -= (size_t)(mask - last) - 1, mask = last; } } } �p� 尿禎蟻吾循杖� 秧� 夭명 牒雨荻 嚴潗 賊狀 謫p陝料孼猥 (竣�裔牆赤 � 鎭�, 破� 憙� y杖橓p焌蟻裝� 贍莘p嶢�, 張 p葉婆診牆渾 夭孼狀 壯 夭孼� 牒雨荻 MS-DOS) - 嚴泣 � 賊狀� 增p適� (夭孼� 堯� 胞頌佺�) 裔菴� 震� (桎把� � 破�-桎 裔 張�), 桎 � �py莘� 增p適� 震� 診唯� 哀飮孼 �p尿y秩軫荻城�. 及�y靭奄��, 焌� 震� 溢蓮� 岫潗 �y增忽 (桎 嚴潗 桎蟻惟 賊壯 桎把� � 惟莊�). � 脣� �p夭�p 尿禎蟻吾循杖�: //--- 躬p齬p城� 蓴� 夭孼� for(; !last; last = _dos_findnext(&fi)){ register count nlen = checklen(fi.name); *(word*)memcopy(p, fi.name, nlen) = EOS; //--- �p� 禎尿劉 禎 靭診夭孼�, 嚴泣 張 y魏裔狀 妖成�, //--- 魏診依燼 哀飮裝 尿幽�妬潗�� if(fi.attrib & _A_SUBDIR){ //--- 희幽�婆潗 夭孼� "." � ".." if(p[0] == '.' && p[nlen - 1] == '.') continue; //--- 쿡蓀淳潗 魏診依� � 診頌擾y 秧� 禎衆抑y�緘莘 //--- p焉yp茁純謫� 翟軸菴 PStr tp = top; if(recurse && tp < dirNameTblTop){ tp = (PStr)memcopy(tp, p, nlen); *(word*)tp = nlen, tp++, tp++, top = tp; } if(wildcards && !dirFind) continue; } //--- 쿡蓀淳潗 � 夭孼� 秧� �p設張杖� �p� 張翟軸怏溢增� //--- 桎把y; 尿幽�婆潗 夭孼�, 張 櫛剪橓秩軫y�陷� 茵仲� p[memcspan(p, nlen, '.')] = '.'; if(wildcmp(wildname, p)){ p[nlen] = EOS; total++; doEntry(fi.wr_date, fi.wr_time, fi.attrib); } } 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� Q20. 嵌� 魅牆佺� A. (Serge Gut 2:4625/44.46) 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿡�y增夭 鎭悚 �y悅� 裔惟怏p荻城� 張惟桎p赤 櫛翟緘杖�: AABCDAABC 흠檍� : A - 5 5/10 = 0.5 B - 2 2/10 = 0.2 <---- C - 2 2/10 = 0.2 | D - 1 1/10 = 0.1 | | 쾰妖� 蓴憶� 櫛翟緘杖� 10 (찰婆衆�奄�� 橓p��帙前潗 蓴�p円齧溢增� 魏輦謫� 茁蚓鏑� � p葉禎乙侁諺 撓 � 增鏑訟� � 禎p�殃� y岫循杖� 橓p��帙前鎭�) 淃衆� 憙謫� 增p迪� 惟哀述� 惟藺妖惺僚 �p前執� 靭桎哀�. 콸泣� 增鏑訟� � 橓p��帙前��麟 診孺� 翟p暹溢, 破翟� �y壹� 橓p��帙前鎭� 橓p蹴彦 妬增� p設��乙贈 �p矮泣預鎭蟻狀 �y壹� 橓p��帙前鎭� 杖悅彦 妬增� 0.5 - 渟p循� 妬增� = 0.5 -+--- 0.2 \ 0.2 | - 蕣�p�� 妬增� = 0.5 0.1 / H涉p剪外 橓p��帙前鎭� 橓p蹴彦 妬增� �p前診瞬�諺 �y泣, 壯�p剪外 杖悅彦 - 抑妖擾�. � 壯袍� �p夭�p� 禎�y婆�. 0.5 0 0.2 1 0.2 1 0.1 1 �p賊言顥齧� 禎桎� 桎 蓮 � p暹鴨音牆忽� 妬增�麟. � 惟莊�-惟莊荻 �p巍諺 � 桎�y, 破� 鴨泣潗 灑蟻袍 張特莘. � 0.5 0 B 0.2 10 C 0.2 110 D 0.1 111 흰謫� - AABCDAABC = 0 0 10 110 111 0 0 10 110 �p料諺 裔惟怏p荻陝狀� 櫛翟緘杖� (憙� 淳厓�) 張 溢蓮� 岫潗 p葉惟怏p荻陝� 張仲鏑獪夭� 楫前翟閃�, 軸�� 秧妖� 惟哀� 茁蚓鏑荻 剪泣妬奄��. 燐翟� �p展嶢城� 裔惟怏p荻陝狀� 櫛翟緘杖� 增p迪秩� 訟壯p狀� 鴨p億�. � 壯袍� 衆y妬� 佺� �y鴨� 診惟�. () / \ 0(A) 1 / \ 0(B) 1 / \ 0(C) 1(D) 찌� 余� �p夭�p 櫛增設音杖� 惟哀述� 惟藺妖惺僥 禎 橓p��帙前��: 0.3 00 0.25 01 -+------------- (渟p脣� 鴨音杖�) 0.1 100 0.1 101 -+----------- (蕣�p赤 鴨音杖�) 0.1 1100 0.05 1101 -+--------- (�p奄會 鴨音杖�) 0.05 1110 0.05 1111 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� Q21. H性跡鴨杖� �p城妬橒撓 �y鎭� � �p宬� A. (Alex Chernobaev 2:5020/394.36) 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 1. 퇸泣 �y悅� 壯煜� �p城妬橒僥 �y潗 靭輦y 壓y�� 橓p鋪壯麟, 溢悅� 尿禎蟻吾循潗 "脣鷹荻迹" 贍莘p嶢�. �y增� 菴� 張�y增迹 �p宬 G=(V,E); 樂奄�� �p城妬橒僥 �y潗 剪 s � t (s <> t). (1) 蓴諺 橓p鋪壯� vi �p寥尿顥齧秩� 墮依� 婆衆� T(vi) - �p諺孼�'�� 靭叱� � 壯妬蟻裝� 午成孼猥�, p設裝� 0; (2) 裔脣��秩� 壓� 楫尿魏 "�p佺診 脣鷹�" (NewFront, OldFront), � 診唯� 渟p諺孼壯� T (鎭�y緘� �p諺�); (3) OldFront:={s}; NewFront:={}; T:=1; (4) 秧� 魏輦迹 了 橓p鋪�, 醇賊�陷� � OldFront, �p前茵�p外筬秩� 櫛遵厓猥 橓p鋪裝 uj, � 嚴泣 T(uj) = 0, 桎 T(uj):=T, NewFront:=NewFront + {uj}; (5) 嚴泣 NewFront = {}, 桎 �y震 張 �y緘增�y奄; 쬠來�; (6) 嚴泣 賊壯 了 橓p鋪� uj 櫛舜雪齧� t, 桎 壯藕孼 �p城妬橒僥 �y潗 秧妖� T; 쬠來�; 妖成� (7) OldFront:=NewFront; NewFront:={}; T:=T+1; goto (4) 퇸泣 壯 胞愼 (6) 岫乙 哀增嵬�y診 橓p鋪壯 t, 桎 脣葺診狀淳潗 �p城妬橒僥 �y潗 溢悅� 衆抑y�陷� 翟p暹佃: �p抑� 櫛遵鴨� 橓p鋪裝 t 壯軸怏秩� 橓p鋪壯 � �p諺孼�'迹 靭叱迹 T-1, �p抑� 櫛遵鴨� 禎衆抑張� - 橓p鋪壯 � 靭叱迹 T-2, � �.�., 禎魏 張 哀增嵬張� s; 嚴泣 "渟p億�p�y潗" 禎�y特牆渾 楫尿適 橓p鋪�, 桎 禎�y婆秩� 賊妖 了 �p城妬橒撓 �y鎭� 剪 s � t. H� �p蟾震劉 述莘厓檍 櫛�p陝�潗 壯 胞愼 (4) 妖切p茵打� � 桎�, 了 魏惟� 橓p鋪裝 脣鷹� �p曜乙 � 橓p鋪�y uj - 桎宸� 脣葺診狀瞬孼猥 �y震 溢悅� 前y緘增淳潗 岫增p檍. 2. 퇸泣 �p齬y奄�� 壯煜� �p城妬橒僥 �y潗 脣 洵橓袍牆佃 �p宬�, 宸� p齬p閃 �p寥尿陝� 橓緘增橓牆酷 婆衆� - 橓焌, � 憙� 橓焌 張剪p擾城言茴�, 溢悅� 尿禎蟻吾循潗 贍莘p嶢� 콸隅增p�. �p� 壯泣婆� p齬�p � 剪p擾城言茴忽 橓櫛� �p城妬橒僥 �y潗 溢蓮� 張 �y緘增脣循潗 菴蓮 秧� 竣�午謫� �p宬�. �p城妬橒僥 �y潗 �y緘增�y奄, 桎蟻惟 嚴泣 � �p宬� 張� 打幽荻 剪p擾城言茴謫� �y壹�p狀莘 橓焌 - 禎 診惟�y 打幽y 溢悅� �py震潗�� 仲鏑獪� y莘厓�, y靭贓胞� 秧妖y 哀 悚仲佺円狀增�. 쾰� 翟緘莘 衆y妬� 禎艾賊嶢 贍莘p嶢� 臀迹菴, 惟桎p渾 禎譽鏑�奄 泣灑 壯煜� �p城妬橒猥 �y震, 泣灑 翟壯py鍊潗 打幽� 剪p擾城言茴迹 秧妖�. 刀佃��y執� 贍莘p嶢荏 �瞬��秩� 幽葉茁特仲夭� � 全尿陝� � p暹泣杷紅 悠嵬性 禎 鎭�p僚 �p宬荻 (壯�p.: H.�p尿桎淸鴨�. 屢�p�� �p宬荻. 잼莘p嶢麟特仲僥 禎艾賊. �., "經p", 1978). �y緘增�y奄 謫p佃狀� 惟泣特增脣 �py燼� 贍莘p嶢溢�, 灑音� 述莘厓紅 � 魏孺�-桎 衆y妬��. 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� Q22. 咬p城壯� 禎蟻仲�� 狀診打� A. (Alexey Olkhovsky aolkhov@messages.to) 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 희禎蟻�y奄�� 秧� 述婆衆孼�� �p搖靭震特仲撓 述p剡孼僥. 쾰� 渟p億賊� � 張� 張翟軸怏� 增焉 �p搖靭震特仲撓 全�p惺僥. 잼莘p嶢� 渟p億賊� �p迪譽鏑茴謫� 述p剡孼�� � 卦H 展孼� �p前�: 찰p剡孼猥 仲陝�py奄�� 衆億� 壯�p設�, �p� 憙佃 p暹訟循�贈 壯 桎劉裝 - 婆衆� � 午蟾� �p搖靭震特仲撓 全�p惺僥. 퇸泣 展�p抑狀� 桎劉� - 婆衆�, 張 紳��� 炡袍� 憶� � 述軸厓y� 增p適y. 흡成�, 述診凝外齧� 了 增焉� � 炡袍� � 述軸厓y� 增p適y 蓴� 全�p惺僚 � �p姚p嶢奄佃 述袍 鎭�y緘�, � 焌�y 全�p惺療 炡鎚諺 � 增焉. 距循� 仲翟魏 蓴憶菴 炡袍秩� � 增焉 (檍 �p姚p嶢奄 - 焌荏� 杖伍僥). �p設�� 仲翟魏 述診凝外齧� 了 增焉� 蓴� 全�p惺僚 舜依潗 哀 音脣� 仲翟孺 盾誼婆鎭蟻狀, 焌茵 佺� � 增焉 張 炡袍秩�. 嵌宸� 哀增嵬�y� 惟張� 醇賊狀莘 述p剡孼��, �p前桎 述診凝外齧� 了 增焉� 蓴� 破� � 張� 嚴潗. �p夭�p: (2+3)*4+5 音循� 仲翟魏 - 炡鎚諺 � 增焉 2 - 炡袍� � 述軸厓y� 增p適y + - 增焉 �y增, 禎憙佃y 杖特莘 張 哀增齧�, � 壯�p剪外, 炡鎚諺 町�� 3 - 炡袍� � 述軸厓y� 增p適y �p設�� 仲翟魏 - 述診凝外齧� 町�� � 音�y� 仲翟�y * - 增焉 卽荻� �y增, 炡鎚諺 y日跡孼猥 4 - 炡袍� � 述軸厓y� 增p適y + - �p姚p嶢奄 y日跡孼�� - 述袍, 禎憙佃y 憶� 哀增齧�, � 町�� - 炡鎚� === Cut === 행愉迹 裔 日迹 壓儼�, � 採跡�.. [Team 褐狀] --- GoldEd 3.00.Alpha4+ * Origin: http://algolist.da.ru - 經� 잼莘鳥嫉荻 (2:5020/1815.6) 쭤存寀劃� � 楫尿有 鎭�, 櫛倧寮荻陝裝� 禎: 脣嗚葉診杖� 菴執 脹孼孝孼猥 菴執 鎭茵 設桎�
쟈筑純赤 /ru.algorithms/39463c128345.html, 專孼魏 了 5, 莘依櫛� 10
|