Re: [請益] 寫出自己想要的程式

作者: ideaup (ideaupsoho)   2014-05-11 09:02:46
為了 8番,
程式如何決定是否吃上家打出的牌, cando= 能得到的 番數,
//電腦的能力 其實很差的,主要靠設計者的功力.
c1=del&15; //del=上家打出的牌, z0[]=本身所具有的牌
if (c1 >= 2 && z0[del - 2] >= 1 && z0[del - 1] >= 1) { trydo |=
1; yes = 1; c9 = del - 2; }
if (c1 >= 1 && c1 != 8 && z0[del - 1] >= 1 && z0[del + 1] >= 1) {
trydo |= 2; yes = 2; c9 = del - 1; }
if (c1 <= 6 && z0[del + 1] >= 1 && z0[del + 2] >= 1) { trydo |=
4; yes = 3; c9 = del; }
if (yes == 0) return -1;
if (TreatDragonHasDel(k,trydo, c1,1) == 0)
if (TreatDragonHasDel(k,trydo, c1,2) == 0)
TreatDragonHasDel(k,trydo, c1,3);
int TreatDragonHasDel(int k,int trydo, int c1, int fg)
{
int DelK=k;
if ((trydo & 1) != 0)
if (TreatDragon00(k, c1 - 2, 1) != 0) return 1;
if ((trydo & 2) != 0)
if (TreatDragon00(k, c1 - 1, 2) != 0) return 1;
if ((trydo & 4) != 0)
if (TreatDragon00(k, c1 - 0, 3) != 0) return 1;
return 0;
}
int TreatDragon00(int kk,int j0, int fg)
{//2008.8
int MinCT0 = MinCT;
stack.Clear(); MinCT = fg;
int jj, k1,k, k2, CanDo = 0, need17 = 1, j1, j2,ret=0,specj=0;
k = del >> 4; k1 = (k + 1) % 3; k2 = (k + 2) % 3; //cc=del&15;
DelIsNeed = 0;
while (CanDo == 0)
{
if (Has3_A(k, j0, 1) >= 3) { CanDo = 24; need17 = 0; break;
}//=13;
if (j0 <= 2 &&(ret=Has333(k, j0 + 0, 1)) >= 1) { CanDo = 16;
need17 = 0; specj = j0 + 2; break; }
if (j0 >= 2 &&(ret=Has333(k, j0 - 2, 1)) >= 1) { CanDo = 16;
need17 = 0; specj = j0; break; }
if (j0 >= 4 &&(ret=Has333(k, j0 - 4, 1)) >= 1) { CanDo = 16;
need17 = 0; specj = j0 - 2; break; }
if ((j0 % 3) == 0)
{
if (Has3(k, 0, k, 3, k, 6, 1) >= 1) { CanDo = 18; need17
= 0; break; }
else
{
j1 = (j0 + 3) % 9; j2 = (j0 + 6) % 9; //2008.9
if (Has3(k, j0, k1, j1, k2, j2, 1) >= 1) { CanDo = 8;
break; }
else if (Has3(k, j0, k1, j2, k2, j1, 1) >= 1) { CanDo
= 8; break; }
}
}
if (Has3(k, j0, k1, j0, k2, j0, 1) >= 1) { CanDo = 10; need17
= 0; break; }
else
{
if (j0 <= 4)
if (Has3(k, j0, k1, j0 + 1, k2, j0 + 2, 1) >= 1) {
CanDo = 6; break; } //2008.9
else if (Has3(k, j0, k1, j0 + 2, k2, j0 + 1, 1) >= 1)
{ CanDo = 6; break; }
if (j0 >= 1 && j0 <= 5)
if (Has3(k, j0, k1, j0 - 1, k2, j0 + 1, 0) >= 1) {
CanDo = 6; break; }
else if (Has3(k, j0, k1, j0 + 1, k2, j0 - 1, 1) >= 1)
{ CanDo = 6; break; }
if (j0 >= 2 && j0 <= 6)
if (Has3(k, j0, k1, j0 - 1, k2, j0 - 2, 0) >= 1) {
CanDo = 6; break; }
else if (Has3(k, j0, k1, j0 - 2, k2, j0 - 1, 1) >= 1)
{ CanDo = 6; break; }
break;
}
int need = 0;
if (ret == 11)
{
if (del == specj || del == specj + 2) need = 1;
}
else if (ret == 12)
{
if (del == specj - 1 || del == specj || del == specj + 1)
need = 1;
}
else if (z0[del] == 0) need = 1;
MinCT = MinCT0; DoEatJob1 = 0;//stack.Clear();
if (CanDo != 0)
{
if (DelIsNeed > 0&& need>0)
if (EatJob1(kk, fg, 100) > 0) { DoEatJob1 = 100+CanDo;
return kk + 10; }//2008.6 fg,0->fg,100
DoEatJob1 = CanDo;
return kk + 1;
}
return 0;
}
作者: diabloevagto (wi)   2014-05-11 10:39:00
這篇用意是什麼?
作者: koller (別迷戀哥 哥只是一個傳說)   2014-05-11 10:57:00
原來20年以上程式設計經驗寫出來的code長這樣喔 佩服佩服
作者: bobju (枯藤老樹昏鴉)   2014-05-11 11:28:00
很有碼工的fu...
作者: ProGuy (PG)   2014-05-11 11:41:00
20年的code長這樣.. 無怪乎需時三年
作者: ACMANIAC (請肥宅救救肥宅)   2014-05-11 11:44:00
好弱
作者: yfr   2014-05-11 12:04:00
恕我直言,我真的看不懂PO出這麼能說明什麼你讓我看看你寫的單元測試或是整合測試的結果還有意義的多還是說您寫了三年都在寫主程式
作者: momoCry (momo哭了)   2014-05-11 12:40:00
這就是典型只有自己能維護的code
作者: plover (喜歡你 ( ̄▽ ̄#)﹏﹏)   2014-05-11 13:06:00
可以貼在 github or bitbucket? 這樣比較好看一些
作者: WenliYang (羊蹄嘟)   2014-05-11 14:05:00
.............
作者: x000032001 (版廢了該走了)   2014-05-11 14:28:00
想知道程式強度嗎 歡迎報名TCGA2014
作者: blackwindy (黑色的風)   2014-05-11 14:35:00
很標準的只有自己能維護的CODE...
作者: testPtt (測試)   2014-05-11 14:50:00
20年前的code長這樣有麼奇怪的?
作者: keieykdx (YOz桑)   2014-05-11 15:32:00
推abc變數
作者: ideaup (ideaupsoho)   2014-05-11 15:54:00
google 的機器人,需要的智能.
作者: SmallDruid (小d)   2014-05-11 16:53:00
原po是怕程式碼被盜copy。所以變數都轉換成abc做保護XD
作者: lairrol (小黑)   2014-05-11 17:03:00
天啊~這排版我有點ooxx...貼個CodePad吧...眼睛受不了你Po Pseudocode 大家來討論一下也好=.="
作者: kinanson (kinanson)   2014-05-11 18:43:00
你知道程式碼能像篇文章才高竿嗎,但你這code就像用注意符號寫作文,念在你有心幫忙,60分低空飛過
作者: yipi1357   2014-05-11 19:13:00
可能是有意義的變數名稱轉abc 不然自己要code review很難
作者: f1234518456 (...........)   2014-05-11 19:16:00
要離職的時候這樣寫就對了
作者: giantwinter   2014-05-11 19:49:00
......20年
作者: pcyu16 (._.?)   2014-05-11 20:26:00
這篇是想表達目標很困難?程式很複雜?20年?? 好歹寫一下?
作者: Obama19 (^_^)   2014-05-11 21:02:00
怎麼看起來像大學生作業文
作者: leafwind (莉芙溫)   2014-05-12 01:45:00
abcijk012........[abcijkxyz][0-9]|[abcijkxyz]{2} 誤我漏看了變數fg..這應該不是20年前的code吧 原po意思聽起來像用20年經驗寫出這些東西 然後再花了三年 我的理解是這樣
作者: whackup (伍陸鈽儜莣)   2014-05-12 10:48:00
.......
作者: ideaup (ideaupsoho)   2014-05-12 11:06:00
TreatDragonHasDel內3個TreatDragon00(,k,-,)最後參數為fg
作者: bndan (seed)   2014-05-12 15:32:00
不像吧=_= 感覺原本就是A1B2C3這種變數名.因為有些參數不太像是機械命名...
作者: bachelorwhc (單身老王)   2014-05-12 16:50:00
二十年。
作者: StubbornLin (Victor)   2014-05-13 13:56:00
挺酷炫的 XDD我還蠻好奇你現在自己是否還能看懂自己當時寫的

Links booklink

Contact Us: admin [ a t ] ucptt.com