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