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