PHP数3退1面向对象的写法(猴子选大王)

本文通过PHP面向对象的方式实现了经典的猴子选大王游戏。具体来说,文章定义了两个类:Monkey 和 Circle,用于模拟猴子及其围成的圈,并通过循环实现了数三退一的过程,直至剩下最后一个猴子。

<?php
        //用面向对象的方法写 将猴子选大王实现 同样数3退1
        class Monkey {
                /**
                 * 定义猴子类
                 * 属性  编号 $id   
                 *       左手 $left  表示的当前猴子左边的猴子
                 *       右手 $right 表示的当前猴子右边的猴子
                */
                        public $id;
                        public $left;
                        public $right;
        }
        class Circle{
                /**
                 * 定义圈类
                 * 属性  猴子的总数 $ct   
                 *       开始的猴子 $first
                 *       结束的猴子 $last 
                 */
                public $ct = 0;
                public $first;
                public $last;
                //构造方法创建圈
                //参数是猴子的个数
                function __construct($c){
                        for($i=0;$i<$c;$i++){
                                $this->add();
                        }
                }

                //猴子的添加方法
                function add(){
                        $m = new Monkey();
                        $m->id = $this->ct;
                        if($this->ct==0){
                                $this->first = $m;
                                $this->last = $m;
                                $m->left = $m;
                                $m->right = $m;
                        }else{
                                $this->last->right = $m;
                                $m->left = $this->last;
                                $m->right = $this->first;
                                $this->first->left = $m;
                                $this->last = $m;
                        }
                        $this->ct++;
                }

                //猴子的删除方法
                function del($m){
                        if($this->ct <=0){
                                return;
                        }else if($this->ct == 1){
                       
                                $this->first = $this->last = null;
                        }else{
                                $m->left->right = $m->right;
                                $m->right->left = $m->left;

                                if($m == $this->first){
                                        $this->first = $m->right;
                                }else if($m == $this->last){
                                        $this->last = $m->left;
                                }
                        }
                        $this->ct--;
                }
       
        }
        /*
                这里的代码就是实现让500只猴子围城一圈然后
                数三个退一个就这样直到还剩一个把那猴子的编号打印出来
        */

        $circle = new Circle(500);

        $number = 0;
        $mk = $circle->first;
        while($circle->ct > 1){
                $number++;
                if($number == 3){
                        $number = 0;
                        $circle->del($mk);
                }
                $mk = $mk->right;
        }
        echo $circle->first->id;
?>


内容概要:本文围绕EKF SLAM(扩展卡尔曼滤波同步定位与地图构建)的性能展开多项对比实验研究,重点分析在稀疏与稠密landmark环境下、预测与更新步骤同时进行与非同时进行的情况下的系统性能差异,并进一步探讨EKF SLAM在有色噪声干扰下的鲁棒性表现。实验考虑了不确定性因素的影响,旨在评估不同条件下算法的定位精度与地图构建质量,为实际应用中EKF SLAM的优化提供依据。文档还提及多智能体系统在遭受DoS攻击下的弹性控制研究,但核心内容聚焦于SLAM算法的性能测试与分析。; 适合人群:具备一定机器人学、状态估计或自动驾驶基础知识的科研人员及工程技术人员,尤其是从事SLAM算法研究或应用开发的硕士、博士研究生和相关领域研发人员。; 使用场景及目标:①用于比较EKF SLAM在不同landmark密度下的性能表现;②分析预测与更新机制同步与否对滤波器稳定性与精度的影响;③评估系统在有色噪声等非理想观测条件下的适应能力,提升实际部署中的可靠性。; 阅读建议:建议结合MATLAB仿真代码进行实验复现,重点关注状态协方差传播、观测更新频率与噪声模型设置等关键环节,深入理解EKF SLAM在复杂环境下的行为特性。稀疏 landmark 与稠密 landmark 下 EKF SLAM 性能对比实验,预测更新同时进行与非同时进行对比 EKF SLAM 性能对比实验,EKF SLAM 在有色噪声下性能实验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值