iT邦幫忙

DAY 29
4

哇咧~夠了(Oracle SQL)系列 第 26

廿九、用SQL Plus 設計個小遊戲之9-小小驗證(Oracle SQL 2013/10/14)

除了主程式以外的程序大致完成,先驗證看看有沒有正常囉,
看來還是要等到明天才能承認是不是腦袋不靈光了失神
同樣測試法

SQL> select YAFUU168.main('&reply') "Guess my number.." from dual;
SQL> /
輸入 reply 的值:  new

Guess my number..
-----------------------------------------------------
第1次我猜: 1234  請告訴我結果是?A?B,ex, 01 = 0A1B.




  1  SELECT SEQ_ID, GS01, GS02, GS03, GS04, GS0A, GS0B
  2    FROM YAFUU_GUESS_HISTORY A
  3*  ORDER BY SEQ_ID

SQL> /

    SEQ_ID       GS01       GS02       GS03       GS04       GS0A       GS0B
---------- ---------- ---------- ---------- ---------- ---------- ----------
         1          1          2          3          4

這裡把不符合者先淘汰,剩下60組

SQL> select gs_flag, count(rowid) records
  2  FROM  YAFUU_GUESS_ARRAY
  3  group by gs_flag;

   GS_FLAG    RECORDS
---------- ----------
         1         60
         0         66

汰換邏輯就是這樣, 2346, 1236都有3位數字,所以淘汰

    SEQ_ID       GS01       GS02       GS03       GS04   REMARK
---------- ---------- ---------- ---------- ----------   ----------------------
         1          2          3          4          6   @1234--2346 == 3vs0A2B
         2          2          3          6          7
         3          1          2          3          6   @1234--1236 == 3vs0A2B

這次要回覆第一次1234的結果0A2B=>02

  1* select YAFUU168.main('&reply') "Guess my number.." from dual

SQL> /
輸入 reply 的值:  02

Guess my number..
------------------------------------------------------------------
第2次我猜: 5678  請告訴我結果是?A?B,ex, 01 = 0A1B.

  1  SELECT SEQ_ID, GS01, GS02, GS03, GS04, GS0A, GS0B
  2    FROM YAFUU_GUESS_HISTORY A
  3*  ORDER BY SEQ_ID

SQL> /

    SEQ_ID       GS01       GS02       GS03       GS04       GS0A       GS0B
---------- ---------- ---------- ---------- ---------- ---------- ----------
         1          1          2          3          4          0          2
         2          5          6          7          8

這次要回覆第2次5678的結果0A2B=>02
而應該還會再淘汰幾組數字才對錯誤的下場,資料全部回復,這在流程上有定義過。

SQL> /

   GS_FLAG    RECORDS
---------- ----------
         0        126

來抓蟲吧!而主流程+陣列還是腦袋空空中,明天是30天了,希望腦袋清醒點。加油!

抓蟲方法為紀錄下比對過程,所以加個欄位囉。

UPDATE YAFUU_GUESS_ARRAY
   SET GS_FLAG = 0,
       remark = remark || '@'||HIST.GS01||HIST.GS02 ||HIST.GS03 ||HIST.GS04  ||'--'||
            SAM.GS01 ||  SAM.GS02 ||  SAM.GS03 || SAM.GS04 ||' == '||V_ALL || 'vs'|| HIST.GS0A ||'A'||HIST.GS0B ||'B'
 WHERE SEQ_ID = SAM.SEQ_ID;

--抓到蟲了,變數啊......

    SEQ_ID       GS01       GS02       GS03       GS04
---------- ---------- ---------- ---------- ----------
         1          2          3          4          6  @1234--2346 == 3vs0A2B
         2          2          3          6          7  @5678--2367 == 4vs0A2B
         3          1          2          3          6  @1234--1236 == 3vs0A2B

--再來一次,果然是對了。

  1  SELECT SEQ_ID, GS01, GS02, GS03, GS04, GS0A, GS0B
  2    FROM YAFUU_GUESS_HISTORY A
  3*  ORDER BY SEQ_ID
SQL> /

    SEQ_ID       GS01       GS02       GS03       GS04       GS0A       GS0B
---------- ---------- ---------- ---------- ---------- ---------- ----------
         1          1          2          3          4          0          2
         2          5          6          7          8          0          2

剩下36組

   GS_FLAG    RECORDS
---------- ----------
         1         36
         0         90

上一篇
廿八、用SQL Plus 設計個小遊戲之8-保存Player回覆(Oracle SQL 2013/10/13)
下一篇
卅、猜一猜,用SQL Plus 設計個小遊戲之10(Oracle SQL 2013/10/15)
系列文
哇咧~夠了(Oracle SQL)28

尚未有邦友留言

立即登入留言