用python编写猴子吃桃问题_人工智能猴子摘香蕉

用python编写猴子吃桃问题_人工智能猴子摘香蕉一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,香蕉位置在B,箱子位置为C),如何行动可摘取到香蕉。此问题的前提是猴子只有站在箱子上才能拿到香蕉,因此,需要首先让猴子找到箱子,再找到香蕉,并将箱子搬到香蕉下面。2.1使用语义网络实现猴子摘香蕉的知识表示2.2用java实现猴子摘香蕉Monkey类:12345678910111213141516171

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

  • 背景简介/问题描述

一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,香蕉位置在B,箱子位置为C),如何行动可摘取到香蕉。

    此问题的前提是猴子只有站在箱子上才能拿到香蕉,因此,需要首先让猴子找到箱子,再找到香蕉,并将箱子搬到香蕉下面。

  • 算法介绍

2.1 使用语义网络实现猴子摘香蕉的知识表示

用python编写猴子吃桃问题_人工智能猴子摘香蕉

2.2用java实现猴子摘香蕉

Monkey类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

package rgznlab1;

public class monkey{

    private final String position;

    private boolean status;

    public monkey(String position){

        this.position = position;

        this.status = false;

    }

    public String getPosition() {

        return this.position;

    }

    public box move(box b,String newPosition) {

        if(this.position.equals(b.getPosition())&&!this.status) {

            System.out.println(“猴子在”+this.position+”处把箱子推到了”+newPosition);

            return new box(newPosition);

             

        }return b;

    }public void climb(box b) {

        if(this.position.equals(b.getPosition())&&!this.status) {

            this.status = true;

            System.out.println(“猴子在”+this.position+”处爬上了箱子”);

        }

    }public void pick(banana b) {

        if(this.status&&this.position.equals(b.getPosition())) {

            System.out.println(“猴子在”+this.position+”处摘到了香蕉”);

        }

    }

Box类:

1

2

3

4

5

6

7

8

9

10

package rgznlab1;

public class box{

    private final String position;

    public box(String position){

        this.position = position;

    }public String getPosition() {

        return this.position;

    }

}

Banana类:

1

2

3

4

5

6

7

8

9

10

package rgznlab1;

public class banana{

    private final String position;

    public banana(String position){

        this.position = position;

    }public String getPosition() {

        return this.position;

    }

}

Main方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

package rgznlab1;

import java.util.Scanner;

public class main {

    public static void main(String[] args) {

        Scanner input=new Scanner(System.in);

        System.out.println(“请输入猴子位置”);

        String p1=input.next();

        System.out.println(“请输入箱子位置”);

        String p2=input.next();

        System.out.println(“请输入香蕉位置”);

        String p3=input.next();

monkey m = new monkey(p1);

box b = new box(p2);

banana bn = new banana(p3);

System.out.println(“第一步:猴子移动到box处从”+m.getPosition()+”到”+b.getPosition());

m = new monkey(b.getPosition());

System.out.println(“第二步:猴子推动box从”+b.getPosition()+”到banana处”+bn.getPosition());

b = m.move(b, bn.getPosition());

System.out.println(“第三步:猴子爬上”+b.getPosition()+”处的box”);

m.climb(b);

System.out.println(“第四步:猴子摘到香蕉”);

m.pick(bn);

    }

}

  • 算法实现

3.1 实验结果

运行结果如图所示:

用python编写猴子吃桃问题_人工智能猴子摘香蕉

  • 讨论及结论

本次实验,我同小组成员较好地完成了猴子摘香蕉的几种不同的知识表示的实现,并且通过代码层面的实现使我对知识有了更深的了解,也更加体会到猴子摘香蕉这一典型问题的价值与意义。

参考文献

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189413.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 加密门禁卡复制

    加密门禁卡复制本文主要是针对一下加密门禁卡解密复制问题。最近发现补一张要50,成本的话白卡2块钱一张,读卡器可以白嫖也可以24多买一个不带壳pn532模块。一.卡类型IC卡是智能卡的总称。普通IC卡,0扇区不可以修改,其他扇区可反复擦写,我们使用的电梯卡、门禁卡等智能卡发卡商所使用的都是M1卡,可以理解为物业发的原卡。UID卡普通复制卡,可以重复擦写所有扇区,主要应用在IC卡复制上,遇到带有防火墙的读卡器就会失效。CUID卡可擦写防屏蔽卡,可以重复擦写所有扇区,UID卡复制无效的情况

  • threadpoolmanager_threadlocal是线程安全的吗

    threadpoolmanager_threadlocal是线程安全的吗在WEB开发中,为了减少页面等待时间提高用户体验,我们往往会把一些浪费时间的操作放到新线程中在后台运行。简单的实现代码就是://代码一newThread(()=>{//dosomething}).Start();但是对于一个请求量大的网址这样做是很不现实的——每一个操作都要开启一个新线程,最终会因CPU不堪重负而使网站挂掉。更好的做法是使用线程队列。对于线程队列 ThreadPoo…

  • 挖矿程序处理[通俗易懂]

    挖矿程序处理[通俗易懂]记一次工作中遇到得挖矿程序处理首先需要减少中毒得几率,就是不要把ssh密码设得太简单,然后ssl端口号改改,改加的访问次数限制加上,常用的sql,代码管理工具等等port也都改掉,管理员权限账户不要多建挖矿程序特点,cpu占用率贼高300,kill不尽,会出现一些自己不曾安装过的程序,库等挖矿程序一般是杀死不净的,需要找到程序路径,以及自启动的脚本ls/proc/进程号/exe-la删掉相关程序but你会发现,它在其他地方又新建了脚本…

  • 基于SpringBoot使用AOP技术实现操作日志管理[通俗易懂]

    基于SpringBoot使用AOP技术实现操作日志管理[通俗易懂]操作日志对于程序员或管理员而言,可以快速定位到系统中相关的操作,而对于操作日志的管理的实现不能对正常业务实现进行影响,否则即不满足单一原则,也会导致后续代码维护困难,因此我们考虑使用AOP切面技术来实现对日志管理的实现。文章大致内容:1、基本概念2、基本应用3、日志管理实战对这几部分理解了,会对AOP的应用应该很轻松。一、基本概念项目描述Aspect(切面)…

  • 【idea】推荐一个idea翻译插件:Translation「建议收藏」

    【idea】推荐一个idea翻译插件:Translation「建议收藏」打开settings-plugins,打开Browserepositories(如图):搜索”Translation”,往下找,找到图中插件install即可(我是已经安装了的)我的插件版本现在是支持谷歌、有道、百度三种翻译,其中有道和百度的需要填写应用id及secret等才能用,这个需要到有道智云(百度的没有试过)申请。使用很简单:选中单词或者段落ctrl+shift+…

  • vmware15激活码【永久激活】「建议收藏」

    (vmware15激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlbnNlSWQiOi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号