前端面试:精选经典面试题(二十五)
2016-01-06 00:00
555 查看
需求
前端面试:精选经典面试题(二十四)模拟文曲星上的猜字游戏,实现猜数算法,游戏开始后,系统会随机给出四个不重复的数字,由用户输入自己猜测的四个数字。
1. 如果数字猜对而且位置也对,就是1个A
2. 如果数字猜对但位置不对,就是1个B
3. 返回结果是如“2A1B”这样的字符
4. 猜错6次,游戏提示结束,重来
如:
随机数为2222,用户输入2223,结果为3A0B
随机数为5324,用户输入7352,结果为1A2B
假设:
获取系统随机数的方法叫getRendomNum():int
获取用户输入数字的方法叫做getUserNum():int
请实现猜数算法guess(int num):string?
代码实现
<script> var count = 0; var ttyOutput = []; var arr1 = [0,1,2,3,4,5,6,7,8,9]; var score = {a:0,b:0};//用于记录分数 function getRandomNum(){ var num = 0; for(var i=0;i<4;i++){ num = parseInt(Math.random()*10); if(arr1[num]){ ttyOutput.push(arr1[num]); arr1.splice(num,1); } } } function getUserNum(){ var userInput = prompt("请输入四个数字"); //验证合法性 checkInput(userInput); } function checkInput(userInput){ var index = -1; for(var i=0;i<userInput.length;i++){ index = userInput[i].indexOf(ttyOutput); if(index != -1){ if(userInput[i] == ttyOutput[i]){ score.a++; }else{ score.b++; } } } if(score.a!=4){ alert("你的结果是"+"A"+score.a+"B"+score.b); init(); } } function init(){ count++; if(count>6){ if(confirm("游戏结束,再来!!")){ count = 0; arr1 = [0,1,2,3,4,5,6,7,8,9]; init(); } return false; } getRandomNum(); getUserNum(); } </script>
这道题的变种
写一个函数来判断传入的两个数组是否相似。具体需求:当以下全部满足,则返回true,否则返回false
数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。
数组的长度一致。
类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.
变种二
写一个函数判断两个对象结构相同。具体需求:设参数分别为left, right, 当以下全部满足,则返回true,否则返回false
left, right必须是都是对象,否则返回false
left, right中得属性必须类型相同,否则返回false.
属性不存在时,算作类型相同。如left.a = 1, right.a不存在,则依然算通过。(实际数据返回有些属性可以不存在)
对于数组类型,只取第一个元素判断即可。若数组为空,不判断数组中的元素。
以上满足, 返回true
相关文章推荐
- CSS经典面试题
- 前端面试:精选经典面试题(二十四)
- 前端面试:精选经典面试题(二十六)
- 前端面试:精选经典面试题(六十)
- 前端面试:精选经典面试题(三十四)
- 前端面试:精选经典面试题(二十七)
- 前端面试:精选经典面试题(四十四)
- 前端面试:精选经典面试题(四十六)
- 前端面试:精选经典面试题(十二)
- 程序员遇到BUG后,最好的方法是?
- 括号匹配问题与经典笔试面试题目解析
- 学习笔记 - 面试题Checklist
- 我的程序员之路(10)——北京第三家公司工作第三年总结
- 我的程序员之路(10)——北京第三家公司工作第三年总结
- 面试中的Singleton
- 第一次面试经历
- 七个对我最好的职业建议 Nicholas C. Zakas
- 程序员如何谋划出月薪三万
- 面试题
- 发帖得现金!程序员联盟 微赞论坛[微信上最好的论坛]