|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Comoderator Of Ru Algorithms 2:5002/46.4 10 Apr 2003 08:00:48 To : Mike Galushkin Subject : 2 faq --------------------------------------------------------------------------------
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;
} } }
_____________________________________________________________________
O/~\ /~\O
�p� 尿禎蟻吾循杖� 秧� 夭명 牒雨荻 嚴潗 賊狀 謫p陝料孼猥 (竣�裔牆赤 �
鎭�, 破� 憙� y杖橓p焌蟻裝� 贍莘p嶢�, 張 p葉婆診牆渾 夭孼狀 壯 夭孼� 牒雨荻
MS-DOS) - 嚴泣 � 賊狀� 增p適� (夭孼� 堯� 胞頌佺�) 裔菴� 震� (桎把� � 破�-桎
裔 張�), 桎 � �py莘� 增p適� 震� 診唯� 哀飮孼 �p尿y秩軫荻城�. 及�y靭奄��, 焌�
震� 溢蓮� 岫潗 �y增忽 (桎 嚴潗 桎蟻惟 賊壯 桎把� � 惟莊�).
� 脣� �p夭�p 尿禎蟻吾循杖�:
______________O\_/_________________________________\_/O______________
//--- 躬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
컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴
=== 嵌張� q_11-20.txt ===
Comoderator
... . 惟宸� 憙� 鴨脣把� 日� 重剪p嶢 � 紳暹�,� 張 罷蓴軫策 灑泣,張 罷蓴軫策
俉�...
--- GoldED+/386 1.1.4.7
* Origin: 찔몰嵬�� 愉佃� 鄭몃,軸�� 鄭몃�,嚴泣禎涯茵潗,桎蓮 淸臣� (2:5002/46.4)
쭤存寀劃� � 楫尿有 鎭�, 櫛倧寮荻陝裝� 禎: 脣嗚葉診杖� 菴執 脹孼孝孼猥 菴執 鎭茵 設桎�
쟈筑純赤 /ru.algorithms/27623e942a46.html, 專孼魏 了 5, 莘依櫛� 10
|