zoukankan      html  css  js  c++  java
  • 一个有趣的算老鼠程序

             昨天一个同事在玩一个GameBoy小智力游戏时间碰到一数学题,于是拿出来大家讨论。
    题目是这样的:说老鼠的生育能力惊人,一只老鼠假定它不需要交配的话一次能生20只小老鼠。隔2个月又能再生一窝。问现有一只老鼠刚生完一窝,十个月后这个老鼠窝里会有几只老鼠?当然,这只是一道IQ题。真要算也有不下几十种算法。用中学的方程式也很好解。然而我们是做程序的,能不能就写一个程序来计算一下呢?当然没有问题,以下就我写的全部代码:
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Test
    {
       public class 老鼠
        {
           public 老鼠()
           {          
           }

           public 老鼠(鼠窝 出生地)
           {
               _我的鼠窝 = 出生地;
           }

            private int _月龄;
            private int _生育能力;
            private 鼠窝 _我的鼠窝;

            public int 月龄
            {
                get
                {
                    return _月龄;
                }

                set
                {
                    _月龄 = value;
                }
            }

            public int 生育能力
            {
                get
                {
                    return _生育能力;
                }

                set
                {
                    _生育能力 = value;
                }
            }

           public 鼠窝 我的鼠窝
           {
               get
               {
                   return _我的鼠窝;
               }

               set
               {
                   _我的鼠窝 = value;
               }
           }


            public void 生小老鼠()
            {
                for (int i = 0; i < _生育能力; i++)
                {
                    老鼠 新生鼠 = new 老鼠(_我的鼠窝);
                    新生鼠.月龄 = 0;
                    新生鼠.生育能力 = _生育能力;

                    _我的鼠窝.添加新成员(新生鼠);
                }
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Test
    {
        public class 鼠窝
        {
            public 鼠窝()
            {
                _老鼠大家庭 = new List<老鼠>();
            }

            private List<老鼠>  _老鼠大家庭;
            public List<老鼠> 老鼠大家庭
            {
                get
                {
                    return _老鼠大家庭;
                }  
            }

            public int 老鼠数量
            {
                get 
                {
                    return _老鼠大家庭.Count;
                }            
            }

            public void 添加新成员(老鼠 小鼠宝宝)
            {
                _老鼠大家庭.Add(小鼠宝宝);
            }

            public void 告别成员(老鼠 鼠列士)
            {
                _老鼠大家庭.Remove(鼠列士);
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Test
    {
        class Program
        {
            private static int 月份 = 3;
            private static int 每次可生数量 = 1;

            static void Main(string[] args)
            {
                鼠窝 鼠的乐园 = new 鼠窝();
                老鼠 创始鼠 = new 老鼠(鼠的乐园);
                创始鼠.月龄 = 2;
                创始鼠.生育能力 = 每次可生数量;
                鼠的乐园.添加新成员(创始鼠);

                for (int i = 1; i <= 月份; i++)
                {
                    for (int k = 0; k < 鼠的乐园.老鼠数量; k++)
                    {
                        鼠的乐园.老鼠大家庭[k].月龄++;
                    }

                    for (int j = 0; j < 鼠的乐园.老鼠数量;j++ )
                    {
                        老鼠 阿鼠 = 鼠的乐园.老鼠大家庭[j];
                        if (阿鼠.月龄 >= 2)
                        {
                            阿鼠.生小老鼠();
                        }
                    }                
                }

                System.Console.WriteLine(鼠的乐园.老鼠数量.ToString());

                System.Console.ReadLine();
            }
        }
    }

    程序写完,其实这样的程序很普通,不就是个简单的C#程序吗?但我回想起我们现在的工作,写了很多企业级应用一直在鼓吹面向对象却连这样的小程序都不如。后台封装好的数据访问组件供我们调用,前台代码依旧那样的老套,开发模式依然没有创新。为此我们应该反省......
  • 相关阅读:
    使用.Net Core+IView+Vue集成上传图片功能
    Vue基于vue-quill-editor富文本编辑器使用心得
    Fiddler原理~知多少?
    ASP.NET Core WebApi中简单像素转换跟踪实现
    利用SQL Profiler 追踪数据库操作
    ASP.NET Core Web API 版本控制
    处理SQL Server中的重复行
    【3分钟就会系列】使用Ocelot+Consul搭建微服务吧!
    ASP.NET Core WebAPI控制器返回类型的最佳选项
    花10分钟搞懂开源框架吧
  • 原文地址:https://www.cnblogs.com/Nelson/p/786675.html
Copyright © 2011-2022 走看看