美文网首页
鸡兔同笼问题

鸡兔同笼问题

作者: 木木口丁 | 来源:发表于2017-06-02 22:34 被阅读0次

Code

<!DOCTYPE html>
<html>
<head>
    <title>Chicken And Rabbit</title>
    
</head>
<body>
<div class="wrap">
    <div>
        <input type="text" name="" id="head" placeholder="Please insert head quantity">
        <input type="text" name="" id="leg" placeholder="Please insert leg quantity">
        <input type="button" name="" id="btn" value="Calculate">
    </div>
    <div id="tip"></div>
    <div id="answer">
        <p>Chicken :<strong></strong></p>
        <p>Rabbit :<strong></strong></p>
    </div>
</div>
</body>
<script type="text/javascript">
        var headInput = document.getElementById('head');
        var legInput = document.getElementById('leg');
        var btn = document.getElementById('btn');
        var tip = document.getElementById('tip');
        var results = document.getElementById('answer').getElementsByTagName('strong');

        btn.onclick = function() {
            results[0].innerHTML = "";
            results[1].innerHTML = "";
            var headVal = Number(headInput.value);
            var legVal = Number(legInput.value);
            var sum = headVal + legVal;

            if (sum != sum) {
                tip.innerHTML = "Please insert number";
            } else if (parseInt(sum) != sum) {
                tip.innerHTML = "Please insert INT number";
            } else {
                var resultObj = calculate(headVal, legVal);
                if (JSON.stringify(resultObj) == '{}') {
                    tip.innerHTML = "The number provided can't get results";
                } else {
                    tip.innerHTML = "";
                    results[0].innerHTML = resultObj.chicken;
                    results[1].innerHTML = resultObj.rabbit;
                }
            }
        }

        function calculate(head, leg) {
            var result = {};
            var rabbit = leg / 2 - head;
            var chicken = head - rabbit;
            if (rabbit * chicken > 0 && parseInt(rabbit) == rabbit) {
                result = {
                    'rabbit' : rabbit,
                    'chicken' : chicken
                }
            };
            return result;
        }
    </script>
</html>

细节

1. 数学计算

鸡数x,兔数y,总头a,总腿b
x + y = a
2x + 4y = b
-------> y = b / 2 - a

2.Number()方法
用于将字符串转化为数字
如果输入的不是合法数字,Number()将返回NaN

3.判断输入的是否为数字
isNaN()方法
如果非数字,返回true

4.整数检测
输入值不能是小数
用parseInt()方法取整后再做判断

5.没有内容的对象的检测
{} == {}; ?
不可行,因为这是两个对象
处理方法:
1)枚举

var obj = {};
function checkObj(obj) {
    for(var i in obj) {
        if(obj.hasOwnProperty(i)){
            return false; // 不为空对象
        }
    }
    return true; // 空对象,返回true
}
checkObj(obj);

对于没有内容的空对象({}),i并不会被赋值,for-in中的内容也不会执行

2)Object.keys(obj)

var obj = {};
var checkResult = Object.keys(obj);
console.log(checkResult.length);

该方法类似于枚举,但是,是直接调用Object的keys方法,方法的返回值为所有可枚举属性的字符串数组。如果当前对象为空({}),则返回一个空数组

3)JSON.stringify()

var obj = {};
console.log(JSON.stringify(obj) == '{}')

JSON.stringify()方法,用于将JSON对象解析为字符串,即可和{}比较

4)Object.getOwnPropertyNames(obj)

var obj = {};
var checkResult = Object.getOwnPropertyNames(obj);
console.log(checkResult.length);

返回对象自己的属性的名称,返回值为一个数组,因此可以通过length属性,进行判断,如果length长度为0,则代表该对象为空

属性的可枚举性和所有权

可枚举属性是指那些内部 “可枚举” 标志设置为 true 的属性,对于通过直接的赋值和属性初始化的属性,该标识值默认为即为 true,对于通过 Object.defineProperty 等定义的属性,该标识值默认为 false。可枚举的属性可以通过 for...in 循环进行遍历(除非该属性名是一个 Symbol)。属性的所有权是通过判断该属性是否直接属于某个对象决定的,而不是通过原型链继承的。一个对象的所有的属性可以一次性的获取到。

相关文章

  • 学虎八上数学期末复习打卡第21天

    鸡兔同笼问题

  • 2021-07-06,较复杂的“鸡兔同笼”问题

    较复杂的“鸡兔同笼”问题 鸡兔同笼的标准模式是——鸡兔同笼,共8头,26脚,问,鸡兔各多少? 标准解法: 假设全部...

  • 鸡兔同笼问题

    “鸡兔同笼问题”是我国古算书《孙子算经》中著名的数学问题,其运用“算术法”来解答鸡兔同笼问题,而现在,鸡兔...

  • 适合二年级孩子的奥数/鸡兔同笼

    鸡兔同笼问题 基本概念:鸡兔同笼问题又称为置换问题、假设问题,就是把假设错的那部分置换出来; 基本思路: ①假设,...

  • 2021-07-07,较复杂“鸡兔同笼”的另一种解法

    较复杂“鸡兔同笼”的另一种解法 昨天谈到用鸡兔同笼同样的方法来解答较复杂鸡兔同笼问题。其实,这种类...

  • 《鸡兔同笼》教学思考

    “鸡兔同笼” 在我国古代渊远流长,从问题的叙述到算法经历了多种不同形式的变化。教学中,要关注学生对“鸡兔同笼”问题...

  • 从一次亲子讨论开始

    除了“春节里的图形美”,四年级同学的数学寒假作业还有另外一项——亲子讨论:鸡兔同笼问题。 鸡兔同笼问题是一个比较经...

  • 内化于心

    今早出门时,我问他:“路上读什么?”他说:“说说数学吧。我对鸡兔同笼的问题有点模糊了。“ “鸡兔同笼你讲过的,忘记...

  • 鸡兔同笼问题

    晚上听了裴淼老师讲授的课程,真是受益颇丰。虽然我不是数学老师,但是我听懂了要怎样去启蒙学生。问题是这样的,鸡和兔关...

  • 鸡兔同笼问题

    鸡兔同笼 一、考情分析 鸡兔同笼问题在最近几年的国家公务员考试中已经不多见了,但是偶尔还会出现。在各省的公务员考试...

网友评论

      本文标题:鸡兔同笼问题

      本文链接:https://www.haomeiwen.com/subject/asudfxtx.html