HSP¥Ý¡¼¥¿¥ë
¥µ¥¤¥È¥Þ¥Ã¥× ¤ªÌ䤤¹ç¤ï¤»


HSPTV!·Ç¼¨ÈÄ


̤²ò·è ²ò·è Ää»ß ºï½üÍ×ÀÁ

2015
0220
FunnyMaker°ÊÁ°Ä󼨤·¤¿¥¯¥¤¥Ã¥¯¥½¡¼¥È¤Î½¤Àµ1²ò·è


FunnyMaker

¥ê¥ó¥¯

2015/2/20(Fri) 16:22:34|NO.67460

¤³¤ó¤Ë¤Á¤Ï¡£

°ÊÁ°¢­¤ÇÄ󼨤·¤¿Àۺ¥¤¥Ã¥¯¥½¡¼¥È¥â¥¸¥å¡¼¥ë¤Ç¤¹¤¬¡¢
http://hsp.tv/play/pforum.php?mode=all&num=66495
ºÇ¶á¤Õ¤È¸«Ä¾¤·¤Æ¡¢¤«¤Ê¤ê¥Ø¥ó¥Æ¥³¤Ê½èÍý¤ò¤·¤Æ¤¤¤¿¤³¤È¤Ëµ¤¤Å¤­¤Þ¤·¤¿¡£FIFO¤Ç¤â¤Ê¤¤¤·¥¹¥¿¥Ã¥¯¤Ç¤â¤Ê¤¤ÊÑÂÖ»ÅÍÍ¡£
2ǯÁ°¤Î¼«Ê¬¤ÎȯÁۤ˼ó¤ò·¹¤²¤Ê¤¬¤é½¤Àµ...¡£
¤³¤ó¤Ê¤â¤Î¤¬¤Ä¤¤ºÇ¶á¤Þ¤Ç HU3DM(http://dev.onionsoft.net/seed/info.ax?id=843) ¤ËÆ⢤µ¤ì¤ÆÊ¿µ¤¤ÇÆ°¤¤¤Æ¤¤¤Þ¤·¤¿...¡£ÌÞÏÀ¤â¤¦Æþ¤ìÂؤ¨¤Þ¤·¤¿¤±¤É¡£

¿ʬï¤âµ¤¤Ë¤·¤Æ¤¤¤Ê¤¤¤È»×¤¤¤Þ¤¹¤¬¡¢½¤Àµ&²þÎÉÈǤòŽ¤Ã¤Æ¤ª¤­¤Þ¤¹¡£

¤Þ¤º¤Ï¥¹¥¿¥Ã¥¯¤ò¤Þ¤È¤â¤Ë¤·¤¿¤Î¤È¡¢
¹â®²½¤Î°Ù¤Ë¡¢Ä¹¤µ2¤ÎÃÇÊÒ¤¬À¸¤¸¤¿»þ¤Ï¥¹¥¿¥Ã¥¯¤ËÀѤޤº¤Ë¤½¤Î¾ì¤ÇʤÓÂؤ¨¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
¾º½ç¤È¹ß½ç¤Ç½èÍý¤¬Ê̤ˤʤäƤë¤Î¤Ï®ÅÙ¤ò²Ô¤°¤¿¤á¤Ç¤¹¡£
Á°²ó¤ÈƱ¤¸¥Ç¡¼¥¿¤Ç»î¤¹¤ÈÅöÊý(CPU : Celeron 1.20GHz, RAM : PC133 SDRAM)¤Ç¤Ï½êÍ×»þ´Ö¤¬Ìó 0.764 Çܤˤʤê¤Þ¤·¤¿¡£(72ms ¢ª 55ms)
(°ø¤ß¤Ë¡¢¥×¥é¥°¥¤¥ó hspda ¤Î sortval ¤Ë¤ä¤é¤»¤ë¤È 1ms¡£À¨¤¤¤Í¡£)


#module N_M_S2_5 ;1¼¡¸µÇÛÎó¤Î¥¯¥¤¥Ã¥¯¥½¡¼¥È ;¶è´Ö¤ò»ØÄê¤Ç¤­¤ë¡£ ;¾¤Î1¼¡¸µÇÛÎó¤ò´¬¤­Åº¤¨¤Ë¤·¤Æ¥½¡¼¥È¤¹¤ë¡£ ; ;[½ñ¼°] ; ; MS2_Quick3 TGTARRY,ATTENDANT , opt, s,e ; ; TGTARRY : ¥¿¡¼¥²¥Ã¥ÈÇÛÎó ; ATTENDANT : ÉÕ¤­Åº¤¤ÇÛÎó ; opt : À°Î󥪥ץ·¥ç¥ó(0,other)=(¾º½ç,¹ß½ç) ; s,e : ³«»Ï,½ªÎ»¥¤¥ó¥Ç¥Ã¥¯¥¹ ; ;[È÷¹Í] ; ; Í×ÁÇ¿ô1°Ê²¼¤Î¥Ç¡¼¥¿¤òÅϤ·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ ; ¥¨¥é¡¼¥Á¥§¥Ã¥¯¤ò¾Ê¤¤¤Æ¤¤¤ë¡£°ú¿ô¤ÎÉÔÀµ¤ÏÃ×Ì¿½ý¤Ë¤Ê¤ë¡£ #deffunc MS2_Quick3 array TGT, array ATTENDANT, int opt, int s,int e ;[ÄêµÁ] ; ;¡¦¡ÖASTGT (Assigned Section in TGT)¡× : ¥¿¡¼¥²¥Ã¥ÈÇÛÎó¤Î¤¦¤Á¡¢º£²ó¥½¡¼¥ÈÂоݤȤʤäƤ¤¤ëÈÏ°Ï¡£ ;¡¦¡Öthresholding¡× : °ìÄê¤Î¶è´ÖÆâ¤Ç¥Ô¥Ü¥Ã¥È(¤³¤ÎÃͤòp¤È¤¹¤ë)¤ò·èÄꤷ¡¢p°Ê²¼¤ÎÍ×ÁǤò¶è´ÖÁ°Êý¤Ë¡¢p°Ê¾å¤ÎÍ×ÁǤò¶è´ÖÁ°Êý¤Ë´ó¤»½¸¤á¤ëÁàºî¡£ ;¡¦¡ÖPTS (Present Thresholding Section)¡× : thresholdingÁàºî¤ÎÂоݤȤʤäƤ¤¤ë¶è´Ö¡£ ;¡¦¡ÖPSI (Present Scan Index)¡× : thresholdingÁàºî¤Ë¤ª¤¤¤Æp°Ê²¼,°Ê¾å¤ÎÃͤòõº÷¤¹¤ë¤¿¤á¤Î¸½ºß¸¡ººÃæ¤ÎÍ×ÁǤΥ¤¥ó¥Ç¥Ã¥¯¥¹¡£º¸¢ª±¦¤Î¸¡ºº¤Ç¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò¡ÖRWPSI (Rightward PSI)¡×¡¢±¦¢ªº¸¤Î¤â¤Î¤ò¡ÖLWPSI (Leftward PSI)¡×¤È¸Æ¤Ö¡£ ;¡¦¡Ödivision¡× : thresholdingÁàºî´°Î»¸å¡¢PTS¤ò2ʬ³ä¤¹¤ëÁàºî¡£ len_ASTGT = e-s+1 ;ASTGT¤ÎŤµ StackCnt = 1 ;¥¹¥¿¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¶è´Ö¿ô(½é´ü²½) dim STACK,len_ASTGT : STACK = s,e ;¥¹¥¿¥Ã¥¯½é´ü²½¡£Í×ÁÇ(2*i),(2*i+1)¤ËÂèi¶è´Ö¤Î³«»Ï,½ªÎ»¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬µ­Ï¿¤µ¤ì¤ë¡£ if opt { ;¹ß½ç repeat ;< pop > sidx_PTS = STACK(2*StackCnt-2) : eidx_PTS = STACK(2*StackCnt-1) ;PTS³«»Ï/½ªÎ»¥¤¥ó¥Ç¥Ã¥¯¥¹ if TGT(sidx_PTS) < TGT(sidx_PTS+1) : p = TGT(sidx_PTS) : else : p = TGT(sidx_PTS+1) ;p¤Ï¶è´Ö¤Îº¸Ã¼2ÃͤΤ¦¤Á¾®¤µ¤¤Êý¤È¤¹¤ë ;< thresholding > RWPSI = sidx_PTS : LWPSI = eidx_PTS repeat ;< rightward scan > repeat if TGT(RWPSI) <= p : break RWPSI ++ loop ;< leftward scan > repeat if TGT(LWPSI) >= p : break LWPSI -- loop if RWPSI < LWPSI { ;Í׸ò´¹ tmpnum = TGT(RWPSI) : TGT(RWPSI) = TGT(LWPSI) : TGT(LWPSI) = tmpnum ;TGT tmpnum2 = ATTENDANT(RWPSI) : ATTENDANT(RWPSI) = ATTENDANT(LWPSI) : ATTENDANT(LWPSI) = tmpnum2 ;ATTENDANT RWPSI ++ : LWPSI -- } else : break ;Í×ʬ³ä¡£¤³¤³¤Ç¼¡¤Î¤³¤È¤¬Êݾڤµ¤ì¤Æ¤¤¤ë¡£­¡ sidx_PTS¡åLWPSI¡åRWPSI¡åeidx_PSI ­¢ RWPSI-LWPSI¡å1 loop ;< division > ;RWPSI¤Îº¸ÎÙ¤ò¶­³¦¤È¤·¤ÆPTS¤òʬ³ä¤¹¤ë StackCnt -- ;¸½PTS¤ÎÅÐÏ¿²ò½ü ;< º¸Â¦¿·µ¬¶è´Ö¸õÊä¤Î¶ãÌ£ > if RWPSI - sidx_PTS >= 3 { ;ÅÐÏ¿²ÁÃÍÍ­¤ê STACK(2*StackCnt) = sidx_PTS, RWPSI-1 StackCnt ++ } else { ;º¸Â¦¿·µ¬¶è´Ö¸õÊä¤ÎŤµ¤¬0¡Á2¤Î¾ì¹ç if RWPSI - sidx_PTS = 2 { ;ÆäË2¤Î¾ì¹ç //¤³¤³¤Ç¥½¡¼¥È¤·¤Æ¤·¤Þ¤¦ if TGT(sidx_PTS) < TGT(sidx_PTS+1) { ;Í׸ò´¹ sidx_PTSplus = sidx_PTS+1 tmpnum = TGT(sidx_PTS) : TGT(sidx_PTS) = TGT(sidx_PTSplus) : TGT(sidx_PTSplus) = tmpnum tmpnum2 = ATTENDANT(sidx_PTS) : ATTENDANT(sidx_PTS) = ATTENDANT(sidx_PTSplus) : ATTENDANT(sidx_PTSplus) = tmpnum2 } } } ;< ±¦Â¦¿·µ¬¶è´Ö¸õÊä¤Î¶ãÌ£ > if eidx_PTS - RWPSI >= 2 { ;ÅÐÏ¿²ÁÃÍÍ­¤ê STACK(2*StackCnt) = RWPSI, eidx_PTS StackCnt ++ } else { ;±¦Â¦¿·µ¬¶è´Ö¸õÊä¤ÎŤµ¤¬1,2¤Î¾ì¹ç if eidx_PTS - RWPSI = 1 { ;ÆäË2¤Î¾ì¹ç //¤³¤³¤Ç¥½¡¼¥È¤·¤Æ¤·¤Þ¤¦ if TGT(RWPSI) < TGT(eidx_PTS) { ;Í׸ò´¹ tmpnum = TGT(RWPSI) : TGT(RWPSI) = TGT(eidx_PTS) : TGT(eidx_PTS) = tmpnum tmpnum2 = ATTENDANT(RWPSI) : ATTENDANT(RWPSI) = ATTENDANT(eidx_PTS) : ATTENDANT(eidx_PTS) = tmpnum2 } } } ;< finish check > if StackCnt = 0 : break loop } else { ;¾º½ç repeat ;< pop > sidx_PTS = STACK(2*StackCnt-2) : eidx_PTS = STACK(2*StackCnt-1) if TGT(sidx_PTS) < TGT(sidx_PTS+1) : p = TGT(sidx_PTS+1) : else : p = TGT(sidx_PTS) ;p¤Ï¶è´Ö¤Îº¸Ã¼2ÃͤΤ¦¤ÁÂ礭¤¤Êý¤È¤¹¤ë ;< thresholding > RWPSI = sidx_PTS : LWPSI = eidx_PTS repeat ;< rightward scan > repeat if TGT(RWPSI) >= p : break RWPSI ++ loop ;< leftward scan > repeat if TGT(LWPSI) <= p : break LWPSI -- loop if RWPSI < LWPSI { ;Í׸ò´¹ tmpnum = TGT(RWPSI) : TGT(RWPSI) = TGT(LWPSI) : TGT(LWPSI) = tmpnum tmpnum2 = ATTENDANT(RWPSI) : ATTENDANT(RWPSI) = ATTENDANT(LWPSI) : ATTENDANT(LWPSI) = tmpnum2 RWPSI ++ : LWPSI -- } else : break loop ;< division > ;RWPSI¤Îº¸ÎÙ¤ò¶­³¦¤È¤·¤ÆPTS¤òʬ³ä¤¹¤ë StackCnt -- ;< º¸Â¦¿·µ¬¶è´Ö¸õÊä¤Î¶ãÌ£ > if RWPSI - sidx_PTS >= 3 { ;ÅÐÏ¿²ÁÃÍÍ­¤ê STACK(2*StackCnt) = sidx_PTS, RWPSI-1 StackCnt ++ } else { ;º¸Â¦¿·µ¬¶è´Ö¸õÊä¤ÎŤµ¤¬0¡Á2¤Î¾ì¹ç if RWPSI - sidx_PTS = 2 { ;ÆäË2¤Î¾ì¹ç //¤³¤³¤Ç¥½¡¼¥È¤·¤Æ¤·¤Þ¤¦ if TGT(sidx_PTS) > TGT(sidx_PTS+1) { ;Í׸ò´¹ sidx_PTSplus = sidx_PTS+1 tmpnum = TGT(sidx_PTS) : TGT(sidx_PTS) = TGT(sidx_PTSplus) : RWPSI(sidx_PTSplus) = tmpnum tmpnum2 = ATTENDANT(sidx_PTS) : ATTENDANT(sidx_PTS) = ATTENDANT(sidx_PTSplus) : ATTENDANT(sidx_PTSplus) = tmpnum2 } } } ;< ±¦Â¦¿·µ¬¶è´Ö¸õÊä¤Î¶ãÌ£ > if eidx_PTS - RWPSI >= 2 { ;ÅÐÏ¿²ÁÃÍÍ­¤ê STACK(2*StackCnt) = RWPSI,eidx_PTS StackCnt ++ } else { ;±¦Â¦¿·µ¬¶è´Ö¸õÊä¤ÎŤµ¤¬1,2¤Î¾ì¹ç if eidx_PTS - RWPSI = 1 { ;ÆäË2¤Î¾ì¹ç //¤³¤³¤Ç¥½¡¼¥È¤·¤Æ¤·¤Þ¤¦ if TGT(RWPSI) > TGT(eidx_PTS) { ;Í׸ò´¹ tmpnum = TGT(RWPSI) : TGT(RWPSI) = TGT(eidx_PTS) : TGT(eidx_PTS) = tmpnum tmpnum2 = ATTENDANT(RWPSI) : ATTENDANT(RWPSI) = ATTENDANT(eidx_PTS) : ATTENDANT(eidx_PTS) = tmpnum2 } } } ;< finish check > if StackCnt = 0 : break loop } return #global ;------------------------------------------------------------------------- #include "d3m.hsp" #include "hspda.as" screen 0,350,480 numdim = 2000 dim TGT,numdim dim TGTCPY,numdim dim ATTENDANT,numdim repeat numdim TGT(cnt) = rnd(numdim) TGTCPY(cnt) = TGT(cnt) ATTENDANT(cnt) = cnt loop s = 0 : e = 1999 len_range = e-s+1 mes ""+numdim+"¸ÄÃæ "+s+"¡Á"+e+" ´Ö¤Î¥Ç¡¼¥¿¤ò¥½¡¼¥ÈÃæ..." t1 = d3timer() MS2_Quick3 TGT,ATTENDANT, 0, s,e t2 = d3timer() mes "´°Î»¡£½êÍ×»þ´Ö "+str(t2-t1)+" ms" sdim buf_TGTCPY,8*numdim sdim buf_TGT,8*numdim repeat numdim-1 buf_TGTCPY += ""+TGTCPY(cnt)+"\n" buf_TGT += ""+TGT(cnt)+"\n" loop buf_TGTCPY += TGTCPY(numdim-1) buf_TGT += TGT(numdim-1) lisb = 0,0 pos 0,50 : mes "À°ÎóÁ°¥Ç¡¼¥¿" objmode 1,1 objsize 100,400 pos 0,70 : listbox lisb(0),0,buf_TGTCPY pos 150,50 : mes "À°Îó¸å¥Ç¡¼¥¿" pos 150,70 : listbox lisb(1),0,buf_TGT

¼¡´üHSP(ver3.5¤«¤Ê¡©)¤Ç¤Ï¥½¡¼¥ÈÌ¿Îá(sortval,sortget etc.)¤¬É¸½à¤ÇÅëºÜ¤µ¤ì¤ë¤é¤·¤¤¤Î¤Çº£¸å¤Ï¤³¤¦¤¤¤Ã¤¿¥â¥¸¥å¡¼¥ë¤Î¼ûÍפϰìÈ̤ˤÏ̵¤¯¤Ê¤ë´¶¤¸¤¬¤·¤Þ¤¹¤¬¡¢
¥½¡¼¥È¶è´Ö¤ò¸ÂÄê¤Ç¤­¤ë¤È¤³¤í¤Ï¤³¤Î¥â¥¸¥å¡¼¥ë¤Î¤¤¤¤¤È¤³¤í¤«¤Ê¡©¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£
ɸ½àÌ¿Îá²½¤µ¤ì¤ëͽÄê¤Î sortval ¤Ç¤Ï¶¯À©Åª¤ËÇÛÎóÁ´ÂΤ¬¥½¡¼¥ÈÂоݤˤʤë¤Î¤Ç¡¢Ã»¤¤´Ö¤Ë¥½¡¼¥È¤ò²¿²ó¤â·«¤êÊÖ¤¹¤È¤­É¬ÍפÊÉôʬ¤ÎÀÚ¤ê½Ð¤·¤È¤«¡¢
ÉÔÍ×Éô¤òµ¹¤·¤¤Äê¿ô¤Ç¥¯¥ê¥¢¤·¤¿¤ê¤È¤«¤Ç¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬Íî¤Á¤Æ¤·¤Þ¤Ã¤Æ¡¢·ë¶É¥ë¡¼¥Á¥ó¤ò¼«ºî¤¹¤ë¤Î¤ÈÊѤï¤é¤Ê¤«¤Ã¤¿¤ê...¡£
sortval ¤Ç¶è´Ö»ØÄê & ÊÌÇÛÎó¤Î´¬¤­Åº¤¨¥½¡¼¥È¤¬¤Ç¤­¤ì¤Ð¤â¤¦ºÇ¹â¤Ê¤ó¤Ç¤¹¤±¤É¡£



¤³¤Îµ­»ö¤ËÊÖ¿®¤¹¤ë


FunnyMaker

¥ê¥ó¥¯

2015/2/20(Fri) 16:30:51|NO.67461

µ¡Ç½¤Ë¤ÏľÀÜ´Ø·¸¤Ê¤¤¤Ç¤¹¤±¤É¡¢ËÁƬ¤Î¡ÖATTENDANT¡×¡¢¤³¤ì¤Ï¡ÖFOLLOWER¡×¤ÎÊý¤¬¤¤¤¤¤Ç¤¹¤Í...¡£¼ºÇÔ¡£



ONION software Copyright 1997-2023(c) All rights reserved.