blog¥¿¦¡转²¾¨ì¤F这¨½¡G

http://blog.phoeagon.cz.cc



I know

phoeagon啲01¥@¬É

2009 ¦~ 1 ¤ë 30 ¤é  ¬P´Á¤­   ´¸¤Ñ


­Y¤z§A¤£¤Ó¥i¯à¥Î¨ìªºFree Pascalªºtechniques ¤ÀÃþ: Programming Impossib...

­Y¤z§A¤£¤Ó¥i¯à¥Î¨ìªºFree Pascalªºtechniques

FreePascal§@¬°·í«e¬y¦æªºPascal½s;¹¡A¤ä«ù¤F³\¦h¤¤»yªk¡A¥]¬A°w¹ïTP©MDelphiªº¤ä´©¡CFreePascal¦³¤@¨Ç¥\¯à¤@¯ë«Ü¤Ö¥Î¨ì¡A²{¦b¨Ó¬Ý¬Ý~

¥H¤U¤º®e«ÜBT¡A«Ü¤£ªeÃÉ¡C¤£¤Ö¥]§t¤F¤Q¤ÀÁà­®ªº½sµ{²ßºD¡Aªì¾ÇªÌ¶¹D¡AMM½ÐµLµø¦¹¤å~¡C¶È¨Ñ°Ñ¦Ò~

WARNING: the things below are really awful.

PG13 Level.

[¥H¤U¬Y¨Ç§Þ¥©©Î³\¥i¥H¤p´T«×´£°ªµ{§Ç®Ä²v¡C]

 

¤@¡Dªð¦^¦a§}¹Bºâ²Å

C/C++¤¤¦³­Ó«Ü¦³¦Wªº¹Bºâ²Å&¥Î¨Óªð¦^Åܶqªº¦a§}¡C¦]¬°Pascal¹ï«ü°wªº¨Ì¿à¨S¦³C¨º¼ËÅãµÛ¡A§Ú¤@ª½¼g¤F´X¦~µ{§Ç³£¨S¦³²z¹L°ÊºA¦sÀx¡]Dynamic¡^¡Cª½¨ì¦³¤@¦¸¾Ç²ßpascal¤¤¹Bºâ²Åªº°õ¦æµ¥¯Å®É¬Ý¨ì¡Apascal¦³Ãþ¦üªº¹Bºâ²Å¡A@¡C

²³©Ò©Pª¾¡A¦pªG¥H¤U©w¸q

Type pLongint = ^longint;

Var s : pLongint;

³o¸Ìlongint«eªº¼Ð¸¹ªí¥Ü«ü°wÃþ«¬¡C¦Ó¦bµ{§Ç¤¤½Õ¥Îsªí¥Ü½Õ¥Î«ü°wsªº¦a§}¡As^¤~ªí¥Üs¹ï©óªº¼Æ¾Ú¡C

¨º¤\³o­Ó@¦³¤°麽»ù­È©O¡H

¤@¯ë¨SÔ£¯S¤jªº»ù­È¡A³o´N¬O¦h¼Æ¤Hª¾¹D^¤£ª¾¹D@ªº­ì¦]~¦ÓNOIp¦Ò¹L@¡A©ó¬O´N¨Ó½Æ²ß¤@¤U¡C

@¥i¥H¨ú¬Y­ÓÅܶq©ÎªÌ¹Lµ{ªº¦a§}¡C

¦p¡G

Var s : Longint;

¥Î@s¥i¥H¨ú¦^s¹ïÀ³Åܶqªº¤º¦s¦a§}~¡]·íµM¬Oµ{§Ç¦Û¤vªº½u©Ê¤º¦s¦a§}¡A¥Î32¦ì¥|¦r¸`µL²Å¸¹¾ã¼Æªí¥Ü¡C¡^

³o­Ó¥\¯à¹ï©ó°ÊºA©MÀRºA¼Æ¾Úµ²ºc²V¥Î®É«D±`¦³¥Î¡C[?]

 

 

¤G¡DÃa²ßºD¡Abreak¡Aexit¡Ahalt¡Agotoªº«e¥@¤µ¥Í

Break¥Î©ó°h¥X·í«e´`Àô¡]¦^°é¡^¡Aexit¥Î©ó°h¥X¤lµ{¡]¦b¥Dµ{§Ç¤¤·|±j¨î°h¥Xµ{§Ç¡^¡Ahalt±j°hµ{§Ç¡C¦bFpascalªºfunction¤¤¡A¥i¥Hª½±µexit(¨ç¼Æªð¦^­È)°h¥X¡Cª`·NÀq»{FP¤U¡A¦pªGª½±µhalt¥i¯à¾É­P¿é¥X¤å¥óªº¤º®e¥á¥¢¡C½t¥Ñ¦b©ó¡A¼g¤J¨ìªF¦èÁÙ¦bbuffer¡C°£«D§A¸Õ³õflush¡A§_«h¤Á°Oclosefile¡C¡]³o¸Ì¤£¬O§Ú§âclose¿ù¼g¦¨closefile¡A§Ú¬O¾Ç²ßDelphiªº¡^

Break¡Aexit¡Ahalt¡Agoto²z½×¤W¥i¥H§¹¥þÁ×§K¡C¥L­Ìªº¤£©M¿Óªº§C«Uªº¦s¦b¨Ï±oµ{§Ç¦³¦h­Ó¤J¤f¥X¤f©M¹B§@¸ô½u¡A¨Ï±oµ²ºc¤Æ½sµ{¤Q¤À¤£©ö¡AµM¦Ó¡A¾A·íªº¹B¥Î¥i¥H¨Ï¥N½X§ó¥[¨q¦â¥iÀ\[¨Ó·½½Ð¨D]¡C

·í¦~¤@¹D²³æªº20¦æ¼Ðµ{ªº«öASCII´À´«¦r²ÅªºÃD¥Ø¡Aµ§ªÌ©Ò¨£¦³¤H¥Î¤F´X­Ógoto¡Aexit¦b¤£¦Pªº¤lµ{§Ç¤¤¸õ¨Ó¸õ¥h¡]·sªºFPC2.0¤£¤ä«ù¡A¦b1.9¤~¤ä«ù¡^~¼g¤F100¦h¦æ~[¨Ó·½½Ð¨D]

 

³oÂI¤×¨äªì¾ÇªÌ¤Å¾Ç~

«D¦bProgramming³õ¤WºNª¦ºu¥´¦h¦~ªº¤H³t³tÂ÷¶}¡A§_«h~«á­±§ó¥[Ws¡C

 

¤T¡DInline

¾Ú»¡¾Ç²ß¤FC¡C¦ý¬O­n°Q½×ªº¤£¬O¦bpascal¤¤´¡¤Jc©ÎªÌ·J½s¡C¡]³o­Ó¯S©Ê¨S¦³¦Ò¹L~¡^

Inline¥i¥H¸ò¦bprocedure©Îfunctionªº©w¸q¦Z¡Aªí¥Ü´£¥Üinline½sĶ¡C

Procedure dfs   (  I  :  Longint  );   inline;

Begin

End;

³o·|¥O½s;¹¥Hinline´¡¤Jªº¤è¦¡½sͤlµ{¡C³o¹ï©óswap¨â­ÓÅܶq¤§Ãþªº¤p¹Lµ{«Ü¦³´£°ª®Ä²vªº·N¸q¡C¹ï©ó§ó¦hªº¤]³\¤]¥i¥H´£³t[¨Ó·½½Ð¨D]~§ÚªºUSACOªºbetsy´N¬O³o¼ËAªº¡A¥Î¨C­Ó³£inline½sĶªº¤è¦¡±q1.085sªºTLE¨ì0.903sªºAC¡C

©Î³\¥i¥H¤p´T´£®Ä¡C

 

¥|¡AÃþCªº¥\¯à¡C

Åܶq¥i¥Hª½±µ¦b©w¸q®É¹w©w­È¡C

/*C++ Code* Fragment/

Int a=72;

Int c,d;

/*C++ Code Fragment*/

 

PASCAL¤¤¥i¥H:

//Pascal Code Fragment

Var a : Longint   =   72;

Var c,d : Longint  ;

//Pascal Code Fragment

 

PASCAL¤¤¥´¶}½sͶ}Ãö¡]¦boptions¤¤©Î{$operator(s?) on}¡^¥i¥H¥´¶}¤U¦C¡G

A+=1;   // a:=a+1

a-=1

a*=2

a/=2

Ãþ¦üCªºoperator¡C

 

¥i±¤ÁÙ¬O¤£¯à²³æÀH³B¥Ó½ÐÅܶq~¤]¤£¯à¥Î++¡C

 

¤­¡A¨ç¼Æ­«¸ü¡A©w¸q¾Þ§@²Å¡C

FP¤¤¤ä´©¨ç¼Æ­«¸ü¡A¥u¦³¨ç¼ÆªºÅܼƤ£§¹¥þ¬Û¦P¡]¥]¬AÅܼÆÃþ«¬¡^¡C©Ò¥H

Procedure love(a:integer);

Procedure love(a:longint);

¬O§¹¥þ¤£¦Pªº¨â­ÓªF¦è~³o¤@ÂI±`±`¥O¤Hconfuse¡A¤×¨ä¬O³\¦h¤H¤£²zinteger©Mlongint¡I

³o¤]·N¨ýµÛ¨ç¼ÆForwardªº®É­Ô¤]­n¦³§¹¾ãªº°Ñ¼Æ¦Cªí¡A¤U­±¼¶¼g®É¤]­n¡I

Operator¥i¥H¦Û©w¸q¡C

¤»¡D¨ç¼Æ¥i¥Hªð¦^½ÆÂøÃþ«¬

¥i¥Hªð¦^¼Æ²Õ¡B°O¿ý¡B¶°¦Xµ¥¡C

§Ú¤£±ÀÂË¡A¦ý¶V¬O¤£±ÀÂ˪º¶V­n»¡¡A¦]¬°°÷µTº¾¡C

¤C¡D¥Î«ü°w¦^·¹¡I¡I

·Q¶H·j¯Á®É§A»Ý­n¹M¾ú¤@´ÊDFS¾ð¡AµM«á¿é¥X²Å¦X³W©wªº¸`ÂI¨ì®Úªº§Ç¦C¡C

ÅãµMDFS¡CµM¦Ó¹Lµ{¤£¯àª½±µÅª¤J¤W¼h¹Lµ{ªºÅܶq¡A©Ò¥Hªð¦^¥X³B§Ç¦C¬O­Ó°ÝÃD¡C¤]¤£¯àª½±µexit¡C¦]¬°¦pªG¦³¦h­Ó¸`ÂIªº¸ô®|­n¿é¥X¡A§A­n­«·s»¼Âk¶i¥hµM«á¬Æ¦Ü­n§P­«¿é¥X«ç¤\¼Ë~

«Ü²³æ¡A§â¤@­Ópre«ü°w§@¬°°Ñ¼Æ¶Çµ¹¤lµ{¡A¨Ï¥¦±o¨ì¤@±ø±q®Ú¨ì·í«e¸`ÂIªº¸ô®|ºc¦¨ªºÃì¿ö¡]linked list¡^¡C

¤K¡D¦ì¹Bºâ

Xor, or, and, shl, shr, xor, not…

¤j®a­n¦Y¹¡¡A­G¤~¯à°µ¦n¦ì¹Bºâ¡C

¤E¡B«ü°w

¤£¬O«ÜµTº¾¡C

New, dispose, ^, getmem, freemem, nil, GPE¦Ó¤w¡C

¤Q¡Bsizeof

«Ü²³æ¡A¤£¹L¬O§_°ÊºA¼Æ¾Úµ²ºc¤S¦³¤£¦P¡C

¤Q¤@¡C°ÊºA¼Æ²Õ~

·í·í·í·í~ ¡]±B§¶i¦æ¦±¡^

²×©ó»¡¹D³o¸Ì~§Ú¤@ª½¥H¬°°ÊºA¼Æ²Õ­n¦Û¤v¥Î«ü°w¥h°µ~

¤µ¤Ñ¤Wfpcªºcommunity¤~§Ë²M·¡~

Example¡G

//PASCAL

//by phoeagon

//for tripley

Var

C  :  array of array of longint;

Begin

Setlength(c,100);   //c is now an array [0..99], each element is a one-dimension

//dynamic array

Setlength(c[10],100);//c[10]is now an array[0..9]of longint;~~~

….

End.

«Ü¦n«Üws~

¤Q¤G¡Bansistring¡Bint64.

 

¤U­±¶V来¶V恶¤ß~

§Úª¾¹D会¦³¤H¤£¬Û«H¤W¤åªº§i¥Ü闯进来¡C

 

§ÚÁÙ¬O¦A»¡¤@¹M~¥H¤U¤º®e«ÜBT¡A«Ü¤£ªeÃÉ¡C¤£¤Ö¥]§t¤F¤Q¤ÀÁà­®ªº½sµ{²ßºD¡Aªì¾ÇªÌ¶¹D¡AMM½ÐµLµø¦¹¤å~¡C¶È¨Ñ°Ñ¦Ò~ ¤Á°O¤Á°O~MM¤£¯à¾Çªº¦p¦¹µTº¾~§_«h´Á±æ§äMMªºOIers¨Ó§äµ§ªÌªº³Â·Ð´N¤£±o¤F¤F~

 

¤Q¤T¡BÅܼÆÁÙ¬O±`¶q¡H

Constùتº¥s±`¶q¡Avarùتº¥sÅܼÆ~¼o¸Ü~

¦ý¬O¡A¦b¤lµ{¶Ç»¼°Ñ¼Æ®É¡A¦pªG¤£»Ý­n§ïÅÜÅܼưѼƪº­È¡A¤S§Æ±æ¤£­n«þ¨©Åܶq¶Ç»¼¡A¥i¥H¥[¤Wconst¼ÐÃÑ¡A´N¹³var¤@¼Ë¥[¡A¥i¥H¥[§Ö³t«×¡]¤ñvar§Ö¡A¤£¹L³o¨ú¨M¤_½s;¹~¡^

§ó¥[äú¤ßªº¬O¡A±`¶q¬O¥i¥HÅܪº~¡I¡I¡I¥u­n¥´¶}F***Pascal©ÎDelphi©Îlazªºoptions¤¤compilerªº¤@¶µ¡A¥´¶}“Assignable typed constants”´N¥i¥H¤F~©ÎªÌ¥[¤W½sĶ°Ñ¼Æ$J+¡C

¬°¦ó±`¶q¬O¥iÅܪº?³o¬O爲¤F¦V¤U­Ý®e16-bitªºpascal©Mdelphi~

¤Q¥|¡BÁÙ¬OÂ÷¤£¶}C¡I

§Úª¾¹D¦³¤H­n§ì¨g¤F¡A³o¸ÌÁÙ¬O­n»¡C~³o¸Ì¤£¸ò¤W­±©M¦b¤@°_¬O¦]¬°¡A³o¸Ì¤Óäú¤ß¤F~

¦bC¤¤Åܶq¨ä¹ê¬O¤£½×Ãþ«¬ªº¡A§A¥i¥H§â¥¬º¸«¬½á­Èµ¹¾ã¼Æ¡A¤]¥i¥H§âchar½á­Èµ¹¥¬º¸«¬~Á`¤§¥u¬O¤º¦s¤¤¨º­Ó¾÷¾¹½Xªº«þ¨©~¡]Ãþ¦ü»PCPU¤¤ªº±H¦s¾¹¡A¥u¬O¦W¦r¤£¦P¡^

¦ý¬O°Q¹½ªºPascal©~µM¤£Åý~

©ó¬O¡A¸g¹L¤£¾Ó§V¤O¡AF***PASCAL¤¤¡A¥H¤ÎDelphi¤¤¡A¦³¤F¤@ºØ·B¬üC¤¤Åܶq¡Avariant¡CVariant¯u¬O¦n¥S§Ì¡A¸õ¹L©Ò¦³ªºÃþ«¬ÀË´ú~¬Û·í¤_¸U¯à§Î¡]¤£§¹¥þ·Ç½T~¡^¡C

//by phoeagon (word ¦Ñ¬O§âp¤j¼g¡A«Ü¤£¤j¤è¬üÆ[±oÅé~)

//for tripley

var

    i:longint;

    x:variant;

    j:char;

q:boolean;

begin

  x:=q;    i:=x;

 x:=j; q:=x;

 x:=i; j:=x;

end.

½Ðª`·N¨C­Ó¤£¦PÃþ«¬ªºÅܶq¬O¦p¦óÅܤƪº~¦ý¬O¥¦«ÜºC~

¤Q¤­¡BÁÙ¬O¼Æ¾ÚÃþ«¬

¼Æ¾ÚÃþ«¬±j¨îÂà´«¡A¤S¥s¦r²Å¬M®g¡C

¦plongint(‘N’)¥i¥H±j¨î§âcharÅܦ¨longint~Á`¤§¸ÕµÛ§aÃþ«¬¦WºÙÅܦ¨³æ¤¸¨ç¼Æ~

ÁÙ¦³³\¦h¨ç¼Æ¡C

¨ä¤¤¡A³Ì­n»¡ªº¬O¡A¡A¡A¡Around¡C

Round~«Ü³Â·Ð~¤@¨Çª©¥»¨½¬O¥|±Ë¤­¤J¡A¤@¨Ç¬O»È¦æ®a±Ë¤J~¦]¬°round¨Ï¥Î¤FCPUªºMPU¡A¼Æ¾Ç¨ó³B²z¾¹¡A³o¨Ç³B²z¾¹¡A¦³ªº¾÷¾¹¦³¦³ªº¨S¦³¡]¥D­n¬O¦Ñ·Ý¾÷¨S¦³¡^¡A¦³ªº¬O»È¦æ®a±Ë¤Jªkµ¥µ¥~«Ü¥i¦R¤F~

ÅܶqÁÙ¥i¥H¥Îhi¨ú¥X°ª¦r¸`ªº¤º®e¡Alo¨ú¥X§C¦r¸`ªº¤º®e¡A¥Îswap§@¥æ´«°ª§C¦r¸`¡A¥Îhigh¨ú¥XÅܶq¤W­­¡Alow¨ú¥XÅܶq¤U­­¡I¡I¡I

¼Æ¾ÚÃþ«¬ÁÙ¦³¤å¥ó~¶°¦X¡B°O¿ý¡B¼Æ²Õ¡B°ÊºA«ü°w¡BªTÁ|¡B¤l¬É¡C¨ä¤¤Åܶq¬Û®e©ÊªºÀË´ú¤]¬O«Ü©_©Çªº~

(to be continued)


 






³X«È¯d¨¥ (ªð¦^ phoeagon ªº¤é»x)


phoeagon ©ó 2009-01-30 01:43 PM µoªí¡G
§ó¥¿¡G
Setlength(c[10],100);//c[10]is now an array[0..99]of longint;~~~
[ ¦^ÂÐ ] [ «ÊÂê ] [ §R°£ ]


³X«È¦WºÙ¡G
¹q¶l¦a§}¡G (¤£·|¤½¶})
ÅçÃÒ½X¡G  «ö¦¹§ó·sÅçÃÒ½X (¦p¬Ý¤£²M·¡ÅçÃÒ½X½ÐÂIÀ»¹Ï¤ù¨ê·s)
«N«N¸Ü¡G (¥²»Ý µn¤J «á¤~¯à¨Ï¥Î¦¹¥\¯à)
[ ¶}±Ò¦h¥\¯à½s¿è¾¹ ]







¤H®ð¡G79434
¼ÊºÙ¡G phoeagon
©Ê§O¡G ¨k
MORE...  
« July 2024 »
SMTWTFS
123456
78910111213
14151617181920
21222324252627
28293031
» ³Ì·s¤é»x
Blog Moved!
¸ó¯¸jsMath实现
¸ô¥Ñªí¬O个¦n东¦è
Twitter Fav¦Cªí达陈100...
·d©w¤F¤½¦¡显¥Ü
» ¤é»x¤ÀÃþ
¥þ³¡ (175)
Code Storage (11)
Math&Phy@Chem@MM (8)
Music Anyway (5)
Programming Impossible (28)
RSS´£¥Ü (2)
StorageBox (5)
'Bout Here (12)
·Æ¹«¤H¥Í (42)
¸H®h (51)
¥¼¤ÀÃþ (11)
» ³X«È¯d¨¥
³Ìªñ¤T­Ó¤ë©|µL¥ô¦ó¯d¨¥
» ³Ìªñ³X«È
³Ìªñ¨S¦³³X«È
» ¨C¤ë¤å³¹
» ¤é»x­q¾\
©|¥¼­q¾\¥ô¦ó¤é»x
» §Úªº¦n¤Í
» §Úªº³sµ²
Ink Mark --Jlim
StarKirby
|S||S||S|
¡u¬y¦~²½¡v
» ¤é»x²Î­p
¤å³¹Á`¼Æ¡G 175
¯d¨¥Á`¼Æ¡G 86
¤µ¤é¤H®ð¡G 15
²Ö¿n¤H®ð¡G 79434
» ¯¸¤º·j¯Á
RSS Feed