用python编写猴子吃桃问题_人工智能猴子摘香蕉
- 背景简介/问题描述
一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,香蕉位置在B,箱子位置为C),如何行动可摘取到香蕉。
此问题的前提是猴子只有站在箱子上才能拿到香蕉,因此,需要首先让猴子找到箱子,再找到香蕉,并将箱子搬到香蕉下面。
- 算法介绍
2.1 使用语义网络实现猴子摘香蕉的知识表示
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 实验结果
运行结果如图所示:
- 讨论及结论
本次实验,我同小组成员较好地完成了猴子摘香蕉的几种不同的知识表示的实现,并且通过代码层面的实现使我对知识有了更深的了解,也更加体会到猴子摘香蕉这一典型问题的价值与意义。
参考文献
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/189413.html原文链接:https://javaforall.cn
相关文章
- 快速入门Python机器学习(11)
- 二级Python选择题_二级python选择题题库
- mt4 python_一个使用Python自动化交易外汇MT4脚本实现「建议收藏」
- python多线程详解
- python中的sys模块函数
- unboundlocalerror python_Python问题:UnboundLocalError: local variable ‘xxx’ referenced before assignme
- python常见运维脚本_Python运维常用脚本[通俗易懂]
- python最好的开发工具_Python编译器
- python生成器详解_Python 生成器
- python setattr函数_Python内置函数(53)——setattr
- python判断文件名是否包含某字段_python获取文件名不含后缀名
- Python的正则表达式_python正则表达式例子
- Python学习02-列表(List)
- 【学习笔记】Python基础
- python中抛出异常_python mkdir
- 搭建python开发环境-c++教程 如何搭建Python开发环境?
- Python多进程代码调试工具
- Python基础语法-基本数据类型-布尔值
- python-Python与MySQL数据库-使用Python执行MySQL查询
- Python基础(一): 基本介绍详解编程语言
- Python assert调试程序
- Python驱动Oracle数据库(python操作oracle)
- Linux下Python编程:从入门到精通(linux下python编程)
- Python与MySQL实现数据分析的完美组合(mysql中python)
- python基础教程之数字处理(math)模块详解