13个球称3次得坏球的程序解法. 也许对你有用.

DotQuery 2005-09-11 05:14:40
用JAVASCRIPT写的.
学C,JAVA,C#的看应该没问题.

原理是分为4,4,5
第一次是4vs4,剩下的怎样做,看程序就知道了.

<html>
<script>
function window.onerror(a,b,c)
{
alert([a,b,c])
}
</script>
<script>

var balls=[];


for(var i=0;i<13;i++)
{
balls[i]=10;
}
var theTruthIndex=Math.floor(Math.random()*13);
var theTruthWeight=9+(Math.random()<0.5?2:0);
balls[theTruthIndex]=theTruthWeight;

document.write(theTruthIndex+":"+theTruthWeight);
document.write("<hr>");

var checkedIndex=CheckBalls();

if(isNaN(checkedIndex))
{
alert("No Result??");
}
else
{
document.write(checkedIndex+":"+balls[checkedIndex]);
if(checkedIndex != theTruthIndex)
{
alert("Wrong");
}
}

for(var k=0;k<13;k++)
{
for(var i=0;i<13;i++)
{
balls[i]=10;
}
balls[k]=9;
if(k!=CheckBalls())
{
alert("Wrong"+k+":"+CheckBalls());
}
balls[k]=11;
if(k!=CheckBalls())
{
alert("Wrong"+k+":"+CheckBalls());
}
}

function CheckBalls()
{
var b0=balls[0];
var b1=balls[1];
var b2=balls[2];
var b3=balls[3];
var b4=balls[4];
var b5=balls[5];
var b6=balls[6];
var b7=balls[7];
var b8=balls[8];
var b9=balls[9];
var bA=balls[10];
var bB=balls[11];
var bC=balls[12];

var result1;
var result2;
var result3;
result1 = (b0+b1+b2+b3) - (b4+b5+b6+b7);
if(result1==0)
{
result2= (b0+b1+b2) - (bA+bB+bC);
if(result2==0)
{
var result3=b0-b8;
if(result3==0)
{
return 9;
}
return 8;
}
result3=bA-bB;
if(result3==0)
{
return 12;//bC
}
if(result3>0)//bA>bB
{
if(result2<0)
{
return 10;//bA
}
return 11;//bB
}
if(result2<0)
{
return 11;//bB
}
return 10;//bA
}
else
{
var exchanged=false;
//对称的算法相同
//另0123>4567
if(result1<0)
{
var b0=balls[4];
var b1=balls[5];
var b2=balls[6];
var b3=balls[7];

var b4=balls[0];
var b5=balls[1];
var b6=balls[2];
var b7=balls[3];

exchanged=true;//对称
result1=1;
}
//现在result1>0 , 在0,1,2,3, ,4,5,6,7中
result2=(b0+b1 + b4+b5+b6) - (b9+bA+bB+bC+b7);
if(result2==0)
{
result3=b2-b3;
if(result3==0)throw(new Error("imporssible"));
if(result3>0)
{
return GetExchanged(2,exchanged)
}
return GetExchanged(3,exchanged)
}
if(result2>0)
{
result3=b0-b1;
if(result3==0)
{
return GetExchanged(7,exchanged)
}
if(result3>0)
{
return GetExchanged(0,exchanged)
}
return GetExchanged(1,exchanged)
}
//b4,or b5, or b6
result3=b4-b5;
if(result3==0)
{
return GetExchanged(6,exchanged)
}
if(result3>0)
{
return GetExchanged(5,exchanged)
}
return GetExchanged(4,exchanged)
}
}
function GetExchanged(val,exchanged)
{
if(!exchanged)return val;
if(val<4)return val+4;
return val-4;
}

</script>
</html>

...全文
213 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gwly 2005-09-12
  • 打赏
  • 举报
回复
厉害
Gdlian 2005-09-11
  • 打赏
  • 举报
回复
接分而已 不懂JAVA
rcky 2005-09-11
  • 打赏
  • 举报
回复
dearlee_01 2005-09-11
  • 打赏
  • 举报
回复
接分
dearlee_01 2005-09-11
  • 打赏
  • 举报
回复
接分
dearlee_01 2005-09-11
  • 打赏
  • 举报
回复
接分
afeu007 2005-09-11
  • 打赏
  • 举报
回复
弓虽
接分
xdk 2005-09-11
  • 打赏
  • 举报
回复
oyljerry 2005-09-11
  • 打赏
  • 举报
回复
弓虽
DotQuery 2005-09-11
  • 打赏
  • 举报
回复
ooo

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧