猜数字概率设置php,JS猜数字游戏如何判断一个数字是否被猜过?

这篇博客介绍了如何利用JavaScript中的对象哈希来记录并计算猜数字游戏中用户独特的猜测次数,避免重复计数。通过遍历用户输入的数字数组,将每个数字作为键存入哈希表,若键不存在则增加计数。最终得到的计数即为独特的猜测次数。此外,还讨论了两种存储和处理用户输入的方法:一种是数组去重计数,另一种是过滤连续重复数字后的数组长度。文章强调了在处理用户输入时去除重复的重要性,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

/**

*

* 用object当做hash来记录猜过的数字

* 假设把所有猜过的数字存在一个array中, 其中有重复的数字

* [1, 2, 5, 6, 3, 5, 1, 6, 2, 6]

*

*/

var guesses = [1, 2, 5, 6, 3, 5, 1, 6, 2, 6];

var guessesHash = {};

var guessesCount = 0; // total guess count exclude duplicated guesses

for (var i = 0; i < guesses.length; i++) {

if (!guessesHash[guesses[i]]) {

guessesHash[guesses[i]] = true;

guessesCount++;

}

}

console.log(guessesCount); // should be 5

/**

*

* 当for loop中的i = 4时,guessesHash为:

* {

* ‘1’: true,

* '2': true,

* '3': true,

* '5': true,

* '6': true,

* }

* 当for loop中的i = 5时,因为guessesHash[guesses[i]]是true,

* 所以guessesCount++不会执行。

* 换句话说,for loop中一旦遇到重复的数字guessesCount++就不会执行

*

*

*

*/

用数组或者object把输入过的数存起来即可。

(function() {

var history={},

secret=4; // https://www.xkcd.com/221/

do {

var input=parseInt(prompt('输入数字: '));

history[input]=true;

if(input>secret)

alert('比这个小');

else if(input

alert('比这个大');

} while(input!==secret);

var count=0;

for(var _ in history)

count++;

alert('你猜了 '+count+' 次');

})();

定义个全局变量,记录用户每次输入的值,一样的值不做重复记录,不一样的记录。最后看看这个变量的数。。。。

第一种方法:建个数组,用户输入时检查数组最后一个数是否和输入相等,不相等就push进去。最后输出数组的长度就好了。

第二种方法:不管用户输入是否有连续重复的数字,都push到一个数组里,最后把连续的数字剔除掉之后的长度就好了。这样问题就变成了:实现一个函数,用户输入:[1,2,2,2,3,3,4,4,4,5,5],要求输出为5(即[1,2,3,4,5]的长度)。

var arr = [1,2,2,2,3,3,4,4,4,5,5];

function getLength(arr) {

return arr.filter(function(v,i,arr){

return v!==arr[i-1];

}).length;

}

console.log(getLength(arr)); // 5

var n=0;

var lastAnswer=null;

//var 答案数组=[];//题主的问题里没有要求记录用户输入的答案,如果有需求的话,就加上这个。

function 用户输入之后的处理函数(int 用户输入的值){

if(lastAnswer!=用户输入的值){

n++;

lastAnswer=用户输入的值;

//答案数组.push(用户输入的值);//题主的问题里没有要求记录用户输入的答案,如果有需求的话,就加上这个。

//和正确答案比较。

}

else{

//连续猜测同一个数字;

}

}

不知道间隔猜测同样的数字算不算你说的连续输入相同的数字 ?不过原理是一样的 :

声明一个数组 ,里面放之前猜测过的数字,每次输入新数字时到数组中查找是否已存在,已经存在的,则跳过。

参考数组去重,很简单实现

把每次数字存入数组,对比数字和数组最后一个数是否相等。

hash虽说不太懂大概意思就是再弄一个数组 专门放这个数字猜没猜过?

这不是很简单么,两个变量的事,一个答案,一个是上次的值

相关标签:

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

相关文章

相关视频

网友评论

文明上网理性发言,请遵守 新闻评论服务协议我要评论

47d507a036d4dd65488c445c0974b649.png

立即提交

专题推荐064df72cb40df78e80e61b7041ee044f.png独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

7dafe36c040e31d783922649aefe0be1.png玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

04246fdfe8958426b043c89ded0857f1.png天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值