猴子摘香蕉_猴子香蕉游戏下载

猴子摘香蕉_猴子香蕉游戏下载注意:不是严格按照一阶谓词逻辑写法,仅供参考题目:房内有一个猴子,一个箱子,天花板挂了一串香蕉,其位置如图所示。猴子为了拿到香蕉,它必须把箱子搬到香蕉下面,然后再爬到箱子上。请定义必要的谓词,列出问题的初始化状态(即下图所示状态),目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)步骤:1、定义描述环境状态的谓词AT(x,y)x在y处x={monke…

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

Jetbrains全系列IDE稳定放心使用

注意:不是严格按照一阶谓词逻辑写法,仅供参考

题目:

房内有一个猴子,一个箱子,天花板挂了一串香蕉,其位置如图所示。猴子为了拿到香蕉,它必须把箱子搬到香蕉下面,然后再爬到箱子上。请定义必要的谓词,列出问题的初始化状态(即下图所示状态),目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)
在这里插入图片描述

步骤:

1、定义描述环境状态的谓词

AT(x,y)         x在y处       x={monkey,box,banana}  y={a,b,c}
HOLD(s)         猴子拿着s     s={banana,empty}
ON(z)           z在箱子上     z={monkey,empty}

2、使用谓词、连接词、量词来表示环境状态

初始状态S:
AT(monkey,a)∧AT(banana,b)∧AT(box,c)∧HOLD(empty)∧ON(empty)
目标状态T:
AT(monkey,b)∧AT(banana.b)∧AT(box,b)∧HOLD(banana)∧ON(monkey)

3、从初始状态到目标状态的转化,猴子需要完成一系列的操作,定义操作谓词表示其动作

GO(m,n)    猴子从m处移动到n处        m,n={a,b,c}
MOVE(m,n)  猴子把箱子从m处移到n处    m,n={a,b,c}
CLIME(m)   猴子在m处爬上箱子          m={a,b,c}
PICK(m)    猴子在m处摘到香蕉          m={a,b,c}

这四个操作也可以用条件和动作来表示。条件直接用谓词公式表示,是为完成相应操作所必须具备的条件:当条件中的事实均成立时,则可执行该操作。动作通过前后状态的变化表示,即通过删除或增加谓词公式来描述动作前后的状态。

GO(m,n)    猴子从m处移动到n处        m,n={a,b,c}
条件:AT(monkey,m)
动作_删除:AT(monkey,m)
动作_增加:AT(monkey,n)

MOVE(m,n)  猴子把箱子从m处移到n处    m,n={a,b,c}
条件:AT(monkey,m)∧AT(box,m)
动作_删除:AT(monkey,m)∧AT(box,m)
动作_增加:AT(monkey,n)∧AT(box,n)

CLIME(m)   猴子在m处爬上箱子          m={a,b,c}
条件:AT(monkey,m)∧AT(box,m)∧AT(banana,m)∧ON(empty)
动作_删除:ON(empty)
动作_增加:ON(monkey)

PICK(m)    猴子在m处摘到香蕉          m={a,b,c}
条件:AT(monkey,m)∧AT(box,m)∧AT(banana,m)∧ON(monkey)∧HOLD(empty)
动作_删除:HOLD(empty)
动作_增加:HOLD(banana)

4、按照行动计划,一步步使用操作进行状态变化,直至达到目标状态

AT(monkey,a)∧AT(banana,b)∧AT(box,c)∧HOLD(empty)∧ON(empty)
GO(a,c)
AT(monkey,c)∧AT(banana,b)∧AT(box,c)∧HOLD(empty)∧ON(empty)
MOVE(c,b)
AT(monkey,b)∧AT(banana,b)∧AT(box,b)∧HOLD(empty)∧ON(empty)
CLIME(b)
AT(monkey,b)∧AT(banana,b)∧AT(box,b)∧HOLD(empty)∧ON(monkey)
PICK(b)
AT(monkey,b)∧AT(banana.b)∧AT(box,b)∧HOLD(banana)∧ON(monkey)

5、最终行动操作序列为:

GO(a,c)  MOVE(c,b)  CLIME(b)  PICK(b)

运行结果:

在这里插入图片描述

代码:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int step = 1;

struct state
{
	string AT_monkey;
	string AT_banana;
	string AT_box;
	string HOLD;
	string ON;
};

void print(struct state s)
{
	cout << "AT(monkey," << s.AT_monkey << "),  ";
	cout << "AT(banana," << s.AT_banana << "),  ";
	cout << "AT(box," << s.AT_box << "),  ";
	cout << "HOLD(" << s.HOLD << "),  ";
	cout << "ON(" << s.ON << ")" << endl;
}

bool go(struct state& s, string pos1, string pos2)
{
	if (s.AT_monkey == pos1)
	{
		s.AT_monkey = pos2;
		cout << "      ==>step" << step++ << ": " << "go(" << pos1 << "," << pos2 << ")" << endl;
		print(s);
		return true;
	}
	else
		return false;
	return true;
}

bool move(struct state& s, string pos1, string pos2)
{
	if (s.AT_monkey == pos1 && s.AT_box == pos1)
	{
		s.AT_monkey = pos2;
		s.AT_box = pos2;
		cout << "      ==>step" << step++ << ": " << "move(" << pos1 << "," << pos2 << ")" << endl;
		print(s);
		return true;
	}
	else
		return false;
	return true;
}

bool clime(struct state& s, string pos)
{
	if (s.AT_monkey == pos && s.AT_box == pos && s.AT_banana == pos && s.ON == "empty")
	{
		s.ON = "monkey";
		cout << "      ==>step" << step++ << ": " << "clime(" << pos << ")" << endl;
		print(s);
		return true;
	}
	else
		return false;
	return true;
}

bool pick(struct state& s, string pos)
{
	if (s.AT_monkey == pos && s.AT_box == pos && s.AT_banana == pos && s.HOLD == "empty" && s.ON == "monkey")
	{
		s.HOLD = "banana";
		cout << "      ==>step" << step++ << ": " << "pick(" << pos << ")" << endl;
		print(s);
		return true;
	}
	else
		return false;
	return true;
}



int main()
{
	string monkey, banana, box;
	struct state s;

	cout << "Please input the position of monkey,banana,box using a,b,c" << endl;
	cin >> monkey >> banana >> box;
	cout << endl << "The position of monkey,banana,box is showed as follow:" << endl;
	cout << "monkey:  " << monkey << endl;
	cout << "banana:  " << banana << endl;
	cout << "box:     " << box << endl;

	s.AT_monkey = monkey;
	s.AT_banana = banana;
	s.AT_box = box;
	s.HOLD = "empty";
	s.ON = "empty";

	cout << endl << "The operation steps is showed as follow:" << endl;
	print(s);
	go(s, s.AT_monkey, s.AT_box);
	move(s, s.AT_monkey, s.AT_banana);
	clime(s, s.AT_banana);
	pick(s, s.AT_banana);

	cout << endl << endl;

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189198.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于yolov4的目标检测_yolov5预训练模型

    基于yolov4的目标检测_yolov5预训练模型1项目的克隆和必要的环境依赖1.1项目的克隆YOLOv5的代码是开源的,因此我们可以从github上克隆其源码。不得不说GitHub的确是全球最大的男性交友网站,里面的人个个都是人才,yolov5发布才一年左右的时间,YOLOv5就已经更新了5个分支了,分别是yolov5.1-yolov5.5分支。该项目就是利用的yolov5.5分支来作为讲解。首先打开yolov5的github的https://github.com/ultralytics/yolov5/tree…

    2022年8月29日
    5
  • java的句柄_java获取窗口句柄

    java的句柄_java获取窗口句柄Java代码书写过程,文件资源的释放需要特别谨慎的对待.通常文件资源使用后必须close,然后再删除。如果先删除但没有close掉,会造成文件句柄未被释放.这会造成实际使用磁盘空间较大,成为瓶颈importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;publicclassFileTest{p…

    2022年10月18日
    1
  • pycharm换python版本需要重新下载第三方类吗_pycharm自带python吗

    pycharm换python版本需要重新下载第三方类吗_pycharm自带python吗今天刚配置完python和opencv的环境,发现在PowerShell上能成功使用OpenCV,并且输入importcv2后无错误出现,如下图:但在PyCharm上编写完程序后,会出现“ModuleNotFoundError:Nomodulenamed‘cv2’”的错误。在观看众多的博客后,从这篇博客中受益良多(https://blog.csdn.net/qq_25603827/article/details/84556416),最终发现了问题解决方法。根本问题在于你没有把python环境变

    2022年8月25日
    8
  • 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法…

    测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法…

    2021年6月18日
    148
  • tabnine 激活码【2021免费激活】

    (tabnine 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~DB847YMYYZ-eyJsaWNlb…

    2022年3月26日
    44
  • 【最苦逼的不是你,有人比你更苦逼】

    【最苦逼的不是你,有人比你更苦逼】你又在论坛上开了一个长贴,标题写着:“我的婆婆哟,真是个极品!”   你婆婆过春节又来你家住着了,不仅他们老两口,还带着七大姑八大姨,一住就是一个月,简直占领了你的小家。他们的生活习惯完全和你不一样,你感到没有隐私……但你不能抱怨,你得表现得想个得体的主妇,你不能让你的老公感到不愉快,那是他最亲的家人。   于是,和他们生活的日子里,天天跟自己生气,躲在角落里发脾气。有一天,你实在

    2022年5月4日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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