五月天婷亚洲天久久综合网,婷婷丁香五月激情亚洲综合,久久男人精品女人,麻豆91在线播放

  • <center id="8gusu"></center><rt id="8gusu"></rt>
    <menu id="8gusu"><small id="8gusu"></small></menu>
  • <dd id="8gusu"><s id="8gusu"></s></dd>
    樓主: pobel
    6521 24

    [程序分享] WINDOW和DISPLAY語(yǔ)句實(shí)現(xiàn)漢諾塔 [推廣有獎(jiǎng)]

    • 0關(guān)注
    • 粉絲

    院士

    15%

    還不是VIP/貴賓

    -

    威望
    2 級(jí)
    論壇幣
    14685 個(gè)
    通用積分
    1867.0837
    學(xué)術(shù)水平
    932 點(diǎn)
    熱心指數(shù)
    930 點(diǎn)
    信用等級(jí)
    730 點(diǎn)
    經(jīng)驗(yàn)
    113854 點(diǎn)
    帖子
    1287
    精華
    4
    在線時(shí)間
    3651 小時(shí)
    注冊(cè)時(shí)間
    2008-12-10
    最后登錄
    2024-11-14

    初級(jí)熱心勛章 中級(jí)熱心勛章 初級(jí)信用勛章 初級(jí)學(xué)術(shù)勛章 中級(jí)信用勛章 中級(jí)學(xué)術(shù)勛章 高級(jí)熱心勛章 高級(jí)學(xué)術(shù)勛章

    樓主
    pobel 在職認(rèn)證  發(fā)表于 2013-1-9 19:32:34 |只看作者 |壇友微信交流群|倒序 |AI寫論文
    相似文件 換一批

    +2 論壇幣
    k人 參與回答

    經(jīng)管之家送您一份

    應(yīng)屆畢業(yè)生專屬福利!

    求職就業(yè)群
    趙安豆老師微信:zhaoandou666

    經(jīng)管之家聯(lián)合CDA

    送您一個(gè)全額獎(jiǎng)學(xué)金名額~ !

    感謝您參與論壇問(wèn)題回答

    經(jīng)管之家送您兩個(gè)論壇幣!

    +2 論壇幣
    寫了一個(gè)用來(lái)演示漢諾塔的宏,與各位分享:

    1.宏包含兩個(gè)參數(shù)
       n:用來(lái)指定盤子的個(gè)數(shù);
       s_per_step: 用來(lái)設(shè)定每移動(dòng)一步的時(shí)間,單位為秒;

    2.宏中省去了檢驗(yàn)參數(shù)的步驟,n的值應(yīng)該是正整數(shù),s_per_step應(yīng)該是一個(gè)正數(shù),如0.1,0.5等。


    3. 測(cè)試了n從1到15的執(zhí)行情況,n變大時(shí)所需要的時(shí)間會(huì)加速度變長(zhǎng)。一部分是宏構(gòu)造SAS代碼的時(shí)間,另一部分是移動(dòng)盤子的時(shí)間。

    4. 上傳圖片是順序上傳的,可顯示確實(shí)倒過(guò)來(lái)的,不知道如何調(diào)整順序了。

    代碼如下:

    1. %macro hanoi(
    2.      n=                /*specifies the number of disks*/
    3.     ,s_per_step=       /*specifies the time per step uses, unit: second*/
    4.     );

    5.     data _null_;
    6.        *** Set length for variables;
    7.            length %do i=1 %to &n;
    8.                      _1_&i _2_&i _3_&i  
    9.               %end; _temp _dash _null $%eval(2*&n+4)
    10.               _plate $%eval(6*&n+16)
    11.               message suminfo $100;

    12.            *** initialize variables;
    13.            array _tmp (%eval(3*&n)) _1_1--_3_&n;

    14.            do i=1 to %eval(3*&n);
    15.           _tmp(i)="|"||repeat(" ",(2*&n+1))||"|";
    16.            end;

    17.        ******************
    18.            Defines the Window
    19.            ******************;
    20.        window hanoi color=red rows=(23+&n) columns=(46+6*&n)
    21.                   #5   @(16+3*&n) "Tower of Hanoi" color=yellow protect=yes

    22.                   #8   @15 _dash color=yellow protect=yes
    23.                        @(21+2*&n) _dash color=yellow protect=yes
    24.                            @(27+4*&n) _dash color=yellow protect=yes

    25.                   #9   @15 _null color=yellow protect=yes
    26.                        @(21+2*&n) _null color=yellow protect=yes
    27.                            @(27+4*&n) _null color=yellow protect=yes

    28.               %do i=&n %to 1 %by -1;
    29.             #(9+&i) @15   _1_&i. color=yellow  protect=yes
    30.                                 @(21+2*&n) _2_&i color=yellow protect=yes
    31.                                 @(27+4*&n) _3_&i color=yellow protect=yes
    32.                               
    33.                   %end;

    34.                   #(10+&n)  @15 _dash color=yellow protect=yes
    35.                             @(21+2*&n) _dash color=yellow protect=yes
    36.                                     @(27+4*&n) _dash color=yellow protect=yes

    37.           #(11+&n)  @15 _plate color=cyan protect=yes

    38.           #(13+&n)  @15 suminfo color=cyan  protect=yes

    39.           #(14+&n)  @15 message color=cyan  protect=yes
    40.            ;

    41.            **********************************************
    42.            A macro for each of the steps to do the moving
    43.            **********************************************;
    44.            %macro step(N,From,Mid,To);
    45.                    %if &n=1 %then %do;
    46.                                 nth+1;
    47.                                         _temp= _&to._&&lastmiss&to;
    48.                                 _&to._&&lastmiss&to=_&from._%eval(&&lastmiss&from+1);
    49.                                         %let lastmiss&to=%eval(&&lastmiss&to-1);
    50.                                         _&from._%eval(&&lastmiss&from+1)=_temp;
    51.                                         %let lastmiss&from=%eval(&&lastmiss&from+1);

    52.                                 *** display the window to show the latest move;
    53.                                 display hanoi noinput;
    54.                                 link pause ;
    55.                    %end;
    56.                    %else %do;
    57.                       %step(%eval(&n-1),&from,&to,&mid);

    58.                                 nth+1;
    59.                                         _temp= _&to._&&lastmiss&to;
    60.                                 _&to._&&lastmiss&to=_&from._%eval(&&lastmiss&from+1);
    61.                                         %let lastmiss&to=%eval(&&lastmiss&to-1);
    62.                                         _&from._%eval(&&lastmiss&from+1)=_temp;
    63.                                         %let lastmiss&from=%eval(&&lastmiss&from+1);

    64.                                           *** display the window;
    65.                                 display hanoi noinput;
    66.                                 link pause ;

    67.                       %step(%eval(&n-1),&mid,&from,&to);
    68.                    %end;
    69.            %mend;      

    70.            ***************************
    71.            Prepare the initial figure.
    72.            ***************************;
    73.            _plate=repeat("_",%eval(6*&n)+16);
    74.            _dash=repeat("-",%eval(2*&n)+3);
    75.            _null="|"||repeat(" ",%eval(2*&n+1))||"|";

    76.            %do i=1 %to &n;
    77.                _1_&i.="|"||repeat(" ",%eval(&n-&i)) ||repeat("**",%eval(&i-1))||repeat(" ",%eval(&n-&i)) ||"|";
    78.            %end;

    79.            message="Press ENTER to start.";
    80.                    
    81.            *** Display the window and ask the user to press ENTER;
    82.            display hanoi blank;


    83.            *********************************
    84.            Display every step of the process
    85.            *********************************;
    86.            call missing(message,suminfo);
    87.            *** get the time when starts;
    88.            timest=time();
    89.            suminfo="Moving... Please wait...";

    90.            *** Initial value for some macro variables.
    91.                means the first rod is full and the other two are empty;
    92.            %let lastmiss1=0;
    93.            %let lastmiss2=&n;
    94.            %let lastmiss3=&n;

    95.            *** Move it;
    96.            %step(&n,1,2,3)

    97.            *** Get the time when it finishs;
    98.            timeen=time();

    99.            *** Prepare the summarize information;
    100.            totaltime=timeen-timest;

    101.            suminfo=cat("Done! Steps:"
    102.                        ,strip(put(nth,best.))
    103.                        ,"  Time:"
    104.                        ,strip(put(totaltime,8.1))
    105.                        ," seconds.");

    106.            message="Press ENTER to close.";

    107.            *** display the final status;
    108.            display hanoi blank;

    109.            *** Stop the execution;
    110.            stop;

    111.            *** Used to control how fast it moves;
    112.            pause:
    113.                  now=time() ;
    114.                  do while((now+&s_per_step)>time()) ;
    115.                  end ;

    116.     run;
    117. %mend;

    118. options nomprint;
    119. %hanoi(n=5,s_per_step=0.3)
    120. /*%hanoi(n=10,s_per_step=0.01)*/
    復(fù)制代碼




    二維碼

    掃碼加我 拉你入群

    請(qǐng)注明:姓名-公司-職位

    以便審核進(jìn)群資格,未注明則拒絕

    關(guān)鍵詞:Display Window wind disp play number 加速度 正整數(shù) 圖片 如何

    Capture3.JPG (34.85 KB)

    Capture3.JPG

    Capture2.JPG (33.18 KB)

    Capture2.JPG

    Capture1.JPG (30.88 KB)

    Capture1.JPG

    已有 7 人評(píng)分經(jīng)驗(yàn) 學(xué)術(shù)水平 熱心指數(shù) 信用等級(jí) 收起 理由
    denver + 100 + 5 + 5 + 5 仰慕啊
    davil2000 + 5 + 5 + 5 精彩帖子
    zhangzachary + 1 + 1 + 1 精彩帖子
    a6566792 + 1 + 1 + 1 精彩帖子
    冰雨狼 + 1 + 1 + 1 真的很牛X哎
    ziyenano + 1 + 1 + 1 webgu搶了我的臺(tái)詞~
    webgu + 1 + 1 + 1 灰常NB

    總評(píng)分: 經(jīng)驗(yàn) + 100  學(xué)術(shù)水平 + 15  熱心指數(shù) + 15  信用等級(jí) + 15   查看全部評(píng)分

    本帖被以下文庫(kù)推薦

    和諧拯救危機(jī)
    沙發(fā)
    playmore 發(fā)表于 2013-1-9 19:48:39 |只看作者 |壇友微信交流群
    牛b,沙發(fā)
    playmore邀請(qǐng)您訪問(wèn)ChinaTeX論壇。!進(jìn)入ChinaTeX論壇
    藤椅
    洛神賦 發(fā)表于 2013-1-9 23:41:03 |只看作者 |壇友微信交流群
    大N。。。
    崇拜~
    仿佛兮若輕云之蔽月,飄飄兮若流風(fēng)之回雪
    板凳
    zhentao 發(fā)表于 2013-1-10 09:24:58 |只看作者 |壇友微信交流群
    神。
    學(xué)習(xí)。
    報(bào)紙
    冰雨狼 發(fā)表于 2013-1-10 10:03:01 |只看作者 |壇友微信交流群
    膜拜大神!
    地板
    wghglory 發(fā)表于 2013-1-14 12:19:10 |只看作者 |壇友微信交流群
    學(xué)習(xí)!
    7
    邁向人大 發(fā)表于 2013-1-21 15:17:14 |只看作者 |壇友微信交流群
    樓主好厲害!頂一個(gè)
    8
    Imasasor 發(fā)表于 2013-1-21 17:57:35 |只看作者 |壇友微信交流群
    這種貼子,不早點(diǎn)給我說(shuō),絕對(duì)加精的啊
    歡迎加入亞太地區(qū)第一R&Python數(shù)據(jù)挖掘群: 251548215;
    9
    junjian556 發(fā)表于 2013-1-21 18:48:06 |只看作者 |壇友微信交流群
    這個(gè)著實(shí)強(qiáng)悍
    10
    henryyhl 發(fā)表于 2013-1-21 19:27:51 |只看作者 |壇友微信交流群
    贊啊。。。
    It's not going to be easy, but it is going to be worth it.

    本版微信群
    加好友,備注cda
    拉您進(jìn)交流群

    京ICP備16021002-2號(hào) 京B2-20170662號(hào) 京公網(wǎng)安備 11010802022788號(hào) 論壇法律顧問(wèn):王進(jìn)律師 知識(shí)產(chǎn)權(quán)保護(hù)聲明   免責(zé)及隱私聲明

    GMT+8, 2024-12-23 21:58