Badming AI

王朝百科·作者佚名  2010-07-26  
宽屏版  字体: |||超大  

【Badming代码】下面是Badming写的一些关于AI的c++代码,badming认为当代码复杂到一定程度,程序给人类的反应,人类已经分不清是不是死的代码或是真的有意识产生了。下面的代码实际是简单脚本的处理代码。Badming认为,现代的脚本语言实际上是未来Ai的前身。

#include<iostream>

#include<fstream>

#include<string>

#include<map>

#include<vector>

using namespace std;

/**********************信息结构*************************************************/

typedef vector<string> Msg;

Msg MsgEmpty; // 空的

Msg MsgFalse; // 假

Msg MsgUnknown; //不知道

Msg MsgTrue; //真

Msg MsgAny; //任何值

typedef map<int ,Msg> Knowledge; //解决方案

struct FunTool //辅助工具

{

typedef Msg (*Way)(Msg );

int id;

Way pFun;

string explain;

FunTool(){}

FunTool(int _id,Way _pFun,string _explain)

{

id=_id;

pFun=_pFun;

explain=_explain;

}

};

typedef vector<FunTool> FunTools;

/**********************信息结构定义完毕*****************************************/

//可能需要的方法,人为提供的

Msg say(Msg msg)

{

for(int i=0;i<msg.size();i++)

{

cout<<msg[i]<<"";

}

cout<<endl;

return MsgEmpty;

}

Msg makeMsg(string str)

{

Msg a;

a.push_back(str);

return a;

}

Msg nextNumber(Msg msg)

{

string str=msg[0];

if(str.empty())makeMsg("");

int n=0;

for(int i=0;i<str.size();i++)

{

if(str[i]<='9'&&str[i]>='0')

n=n*10+str[i]-'0';

else makeMsg("");

}

n++;

char t[100];

itoa(n,t,10);

return makeMsg(t);

}

class PlusGirl

{

public :

PlusGirl()

{

initMap();

MsgEmpty.push_back("empty");MsgEmpty.push_back("msgState");

MsgFalse.push_back("false");MsgFalse.push_back("msgState");

MsgUnknown.push_back("unknow");MsgUnknown.push_back("msgState");

MsgTrue.push_back("true");MsgTrue.push_back("msgState");

MsgAny.push_back("any");MsgAny.push_back("msgState");

}

int strToInt(string str)

{

int n=0;

int i=0;

while(i<str.size()&&str[i]<='9'&&str[i]>='0')

{

n*=10;

n+=str[i]-'0';

i++;

}

return n;

}

/*******************************************************************************/

FunTools iFunTools;//定义函数工具集

void initMap()

{

iFunTools.push_back(FunTool(iFunTools.size(),nextNumber,"让一个数+1"));

iFunTools.push_back(FunTool(iFunTools.size(),say,"说出msg中内容"));

}

Msg showHelp( Msg msg)

{

cout<<"PlusGirl可用的方法如下 :"<<endl;

cout<<"编号方法的使用说明"<<endl;

for(int i=0;i<iFunTools.size();i++)

{

cout<<iFunTools[i].id<<""<<iFunTools[i].explain<<endl;

}

return MsgEmpty;

}

/******************************************************************************/

//知识结构 ,校验格式与执行解决方案

vector<Knowledge> iKnows; //解决方案集合

Msg analyse(const Msg &words) //通过各种情况分析,而解决问题

{

for(int i=0;i<iKnows.size();i++)

{

Msg msg=solveProblem(iKnows[i],words);

if(msg.empty()||msg==MsgUnknown)continue ;

return msg;

}

return MsgEmpty;

}

Msg solveProblem(Knowledge &know,const Msg problem) //使用一种解决方案,解决一个问题

{

Knowledge::iterator loop=know.begin();

map<int ,Msg> data;//数据区域

data[0]=problem;

map<int ,string> itemData;

while(loop!=know.end())

{

Msg & script=loop->second;

if(0>=script.size())return MsgUnknown;

//define a msg

if(script[0]=="define")

{

if(6>script.size())return MsgUnknown;

if(script[3]!="=")return MsgUnknown;

if(script[1]=="msg")

{

if(script[4]=="msg")

{

data[strToInt(script[2])]= data[strToInt(script[5])];

}else

if(script[4]=="item")

{

data[strToInt(script[2])].clear();

for(int i=5;i<script.size();i++)

{

data[strToInt(script[2])].push_back(itemData[strToInt(script[i])]);

}

}else

if(script[4]=="string")

{

data[strToInt(script[2])].clear();

for(int i=5;i<script.size();i++)

{

data[strToInt(script[2])].push_back(script[i]);

}

}else

return MsgUnknown;

}

if(script[1]=="item")

{

if(script[4]=="msg")

{

itemData[strToInt(script[2])]= data[strToInt(script[5])][strToInt(script[6])];

}else

if(script[4]=="item")

{

itemData[strToInt(script[2])]=itemData[strToInt(script[5])];

}else

if(script[4]=="string")

{

itemData[strToInt(script[2])]=script[5];

}else

return MsgUnknown;

}

}

//if ..

if(script[0]=="if")

{

if(9>script.size())return MsgUnknown;

Msg temp;

if(script[1]=="solve")

{

temp=solveProblem(iKnows[strToInt(script[2])],data[strToInt(script[3])]);

}else

if(script[1]=="fun")

{

temp=iFunTools[strToInt(script[2])].pFun(data[strToInt(script[3])]);

}else

if(script[1]=="msg")

{

temp=data[strToInt(script[2])];

}else return MsgUnknown;

if(temp.empty())return MsgUnknown;

if(temp==MsgUnknown)return temp;

if(script[5]=="msgState")

if((script[4]=="=="&&script[6]!=temp[0])||(script[4]=="!="&&script[6]!=temp[0]))

{

loop++;

continue;

}

if(script[5]=="msg")

if((script[4]=="=="&&data[strToInt(script[6])]!=temp)||(script[4]=="!=" &&data[strToInt(script[6])]!=temp))

{

loop++;

continue;

}

if(script[7]=="end")return data[strToInt(script[8])];

if(script[7]=="goto"){loop=know.find(strToInt(script[8]));continue;}

}

if(script[0]=="use")

{

if(6>=script.size())return MsgUnknown;

if(script[4]=="solve")

{

data[strToInt(script[2])]=solveProblem(iKnows[strToInt(script[5])],data[strToInt(script[7])]);

}

if(script[4]=="fun")

{

data[strToInt(script[2])]=iFunTools[strToInt(script[5])].pFun(data[strToInt(script[7])]);

}

loop++;

continue ;

}

if(script[0]=="end")

{

return data[strToInt(script[1])];

}

if(script[0]=="goto")

{

loop=know.find(strToInt(script[1]));continue;

}

loop ++;

}

return MsgEmpty;

}

/******************************************************************************/

};

int main()

{

PlusGirl girl;

girl.showHelp(MsgEmpty);

cout<<"------------------------------------------"<<endl<<endl;

/*加法指南

输入形如 1 4 可以得到答案

下面是加法代码

0 define msg 0 = msg 0

1 define item 1 = msg 0 0

2 define item 2 = msg 0 1

3 define msg 1 = item 1

4 define msg 2 = item 2

5 define msg 3 = string 0

6 if msg 3 bad == msg 2 goto 10

7 use msg 3 = fun 0 msg 3

8 use msg 1 = fun 0 msg 1

9 goto 6

10 use msg 1 = fun 1 msg 1

11 end msg 1

*/

Knowledge k;

Msg t;

t.push_back("define");t.push_back("item");t.push_back("1");t.push_back("=");t.push_back("msg");t.push_back("0");t.push_back("0");

k[1]=t;t.clear();

t.push_back("define");t.push_back("item");t.push_back("2");t.push_back("=");t.push_back("msg");t.push_back("0");t.push_back("1");

k[2]=t;t.clear();

t.push_back("define");t.push_back("msg");t.push_back("1");t.push_back("=");t.push_back("item");t.push_back("1");

k[3]=t;t.clear();

t.push_back("define");t.push_back("msg");t.push_back("2");t.push_back("=");t.push_back("item");t.push_back("2");

k[4]=t;t.clear();

t.push_back("define");t.push_back("msg");t.push_back("3");t.push_back("=");t.push_back("string");t.push_back("0");

k[5]=t;t.clear();

t.push_back("if");t.push_back("msg");t.push_back("3");t.push_back("bad");t.push_back("==");t.push_back("msg");t.push_back("2");t.push_back("goto");t.push_back("10");

k[6]=t;t.clear();

t.push_back("use");t.push_back("msg");t.push_back("3");t.push_back("=");t.push_back("fun");t.push_back("0");t.push_back("msg");t.push_back("3");

k[7]=t;t.clear();

t.push_back("use");t.push_back("msg");t.push_back("1");t.push_back("=");t.push_back("fun");t.push_back("0");t.push_back("msg");t.push_back("1");

k[8]=t;t.clear();

t.push_back("goto");t.push_back("6");

k[9]=t;t.clear();

t.push_back("use");t.push_back("msg");t.push_back("1");t.push_back("=");t.push_back("fun");t.push_back("1");t.push_back("msg");t.push_back("1");

k[10]=t;t.clear();

t.push_back("end");t.push_back("msg");t.push_back("1");

k[11]=t;t.clear();

girl.iKnows.push_back(k);

string a,b;

while(cin>>a>>b)

{

Msg m;

m.push_back(a);

m.push_back(b);

girl.analyse(m);

}

system("pause");

return 0;

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有