ページ 11

心のしくみ

Posted: 2010年7月02日(金) 14:46
by こうめいいのち
全てのものは、相性体力作因縁果報の流れで動いている。人は、認識と対処で行動する。[心を作る]森羅万象の相から報(今から報の未来を感じ観る)を観た瞬間に認識度合いによって度合いそれぞれの生命状態が心に顕われる。同時にそれに対処しようとするところに、その対処予測が瞬間同時に心に現れる。(例)蛇ににらまれた蛙~蛙はその瞬間に認識する。「食べられる姿を一瞬に見る」この認識が心(この場合、地獄と表現すればいいのか?)に顕われる。瞬間同時に対処しようとする(変革)しかし「術がない。この状態を変える自分(蛙)の姿が浮かばない。自分の相から報までが浮かばない。」また心として顕われる。この2つが、瞬間同時で蛙は動けない。知能ロボットは、認識と対処がその度合いと予測がそれぞれ心に現れるようにすればいい。

Re:心のしくみ

Posted: 2010年7月02日(金) 17:20
by dic
http://www.google.co.jp/search?source=i ... =&gs_rfai=
仏にも宗派があるんですね
こわばわこわばわ

Re:心のしくみ

Posted: 2010年7月02日(金) 20:41
by パコネコ
これってAIについての雑談スレみたいなものなのでしょうか?
質問ではないし…AIなら興味深い話だと思うけど…将来のための勉強になるし

Re:心のしくみ

Posted: 2010年7月02日(金) 21:15
by KEYONN_
AIに興味があったので、人工無能を作ってみたんですが、
バグが多いソースになってしまいました。

会話が成立しません。基本的なアルゴリズムは、
もし、その言葉を覚えているなら、返事をする。
もし、知らなければ、「何それ?」と返し、
覚えさせるというものです。

例えば、コンソール画面での作業なので、
日本語が直接入力できず、使えないので、
まず、ローマ字を全角のひらがなに変えてしまおうとしました。
しかし、関数char *henkan()は、全角をうまく返してくれません。

それが1番目のバグで、2番目のバグは、会話が成立しないという事です。

例えば、画面上で、こう入出力したいとします。
メッセージ?>Mr.Person ohayou
おはよう
Mr.COM「何それ?」>aisatu
あいさつ
Mr.COM「覚えた」
メッセージ?>Mr.Person ohayou
おはよう
Mr.COM「あいさつだなw」

こんな感じです。

でも実際のソースをコンパイルして実行すると、
メッセージ?>Mr.Person ohayou
おはよう
Mr.COM「何それ?」>aisatu
あいさつ
Mr.COM「覚えた」
メッセージ?>Mr.Person ohayou
おはよう
Mr.COM「何それ?」
になってしまいます。

ソースは今から貼ります。

これです。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define INFINITY (1000)
#define MAX_SERIF 100

char Tbl[17]={'k','s','t','n','h','m','y','r','w','g','z','d','b','p'};
char Tbl02[17][5][5]={
"か","き","く","け","こ",
"さ","し","す","せ","そ",
"た","ち","つ","て","と",
"な","に","ぬ","ね","の",
"は","ひ","ふ","へ","ほ",
"ま","み","む","め","も",
"や"," ","ゆ"," ","よ",
"ら","り","る","れ","ろ",
"わ"," ","を"," ","ん",
"が","ぎ","ぐ","げ","ご",
"ざ","じ","ず","ぜ","ぞ",
"だ","ぢ","づ","で","ど",
"ば","び","ぶ","べ","ぼ"
"ぱ","ぴ","ぷ","ぺ","ぽ"
};
char Tbl03[5]={'a','i','u','e','o'};

char *henkan(char Input[/url])
{
int i=0;
int j=0;
int k=0;
static char OutPut[1000];
while(Input)
{
switch(Input)
{
case 'a':printf("あ");break;
case 'i':printf("い");break;
case 'u':printf("う");break;
case 'e':printf("え");break;
case 'o':printf("お");break;
}
for(j=0;j<13;j++)
{
if(Tbl[j]==Input)
{
i++;
for(k=0;k<5;k++)
{
if(Input==Tbl03[k])
{
printf("%s",Tbl02[j][k]);
strcat(OutPut,Tbl02[j][k]);
}
}
}
}
i++;
}
return OutPut;
}
void File_Save()
{

}

int CheckMemory(char tbl[/url][MAX_SERIF],char checkstring[/url],int max)
{
int i;

for(i=0;i<max;i++)
{
if(strcmp(tbl,checkstring)==0)
{
return i;
}
}
return 0;
}

int main(void)
{

char MemoryOfHeart[INFINITY][MAX_SERIF];
char MemoryOfWhen[INFINITY][MAX_SERIF];
char InputString[MAX_SERIF];
char InputString2[MAX_SERIF];
int i=0,j,k,max=0;
while(1)
{
printf("メッセージ?>Mr.Person\t"); gets(InputString);
strcpy(InputString2,henkan(InputString));
printf("\n");
//あれば、答える、なければ「何それ?」と答える
max=i;
//printf("Debug(max=%d)(inputstring2=%s)\n",max,InputString2);
if(CheckMemory(MemoryOfHeart,InputString2,max)>0)
{
//printf("Debug(%s)\n",InputString2);
//あれば、いつのものかを考える
for(j=0;j<max;j++)
{
for(k=0;k<max;k++)
{
if(strcmp(MemoryOfWhen[j],InputString2)==0)//
{
printf("「%sだな。w」\n",MemoryOfHeart[k]);
}
}
}
}
else
{
printf("Mr.COM「何それ?」>");
strcpy(MemoryOfWhen,InputString2);//いつの文字列かを記憶する
sprintf(InputString,"%s"," ");
sprintf(InputString2,"%s"," ");
gets(InputString);
strcpy(InputString2,henkan(InputString));
strcpy(MemoryOfHeart,InputString2);//これだよと答える
//printf("%s\n",InputString2);
printf("Mr.COM「覚えた。」\n");
}

i++;
}
return 0;
}

Re:心のしくみ

Posted: 2010年7月02日(金) 21:52
by KEYONN_
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct COM{
char Memory[1000][100];
char Answer[1000][100];
}COM;

int main()
{
COM ai={0};
char InputString[MAX_SERIF];
int i=0,j,k,max=0;
while(1)
{
printf("メッセージ?>"); gets(InputString);
//henkan(InputString);
//あれば、答える、なければ「何それ?」と答える
max=i;
for(j=0;j<max;j++)
{
if(strcmp(ai.Memory[j],InputString)==0)//これは記憶したものかどうか検索する
{
printf("%sだな。w\n",ai.Answer[j]);
}else{
printf("何それ?>");
strcpy(ai.Memory[j],InputString);//いつの文字列かを記憶する
gets(InputString);
strcpy(ai.Answer[j],InputString);//これだよと答える
}
}

i++;
}

}

//とりあえず、半角で改良してみました。
//一応、動きますが、まだバグが残っています。

Re:心のしくみ

Posted: 2010年7月02日(金) 23:24
by ookami
とりあえず全角の方、見てました。
「おはよう」と入力すると、returnが「はよ」だったので、
あれっと思ったら、

switch(Input)
{
case 'a':printf("あ");break;
case 'i':printf("い");break;
case 'u':printf("う");break;
case 'e':printf("え");break;
case 'o':printf("お");break;
}

では printf してるだけで strcat してないっていう。
でも覚えてくれないのはまた別の問題のようですね。

もうちょっと見てみます。

あっ、こうめいいのちさんが0ポイントのままだ ('□';
これが相性体力作因縁果報の力なのかッッ

# 紅の豚最高ォー

Re:心のしくみ

Posted: 2010年7月02日(金) 23:35
by ookami
覚えて紅のは、
static char OutPut[1000];
の後に
strcpy(OutPut,"");
を追加。
if(CheckMemory(MemoryOfHeart,InputString2,max)>0)

if(CheckMemory(MemoryOfWhen,InputString2,max)>-1)
に変更。(HeartをWhenに変更、0を-1に変更)
CheckMemoryの
return 0;
を、
return -1;
に変更。と。

この場合は、やっぱりステップ実行が最強ですねw 画像

Re:心のしくみ

Posted: 2010年7月03日(土) 00:53
by たかぎ
よく知らないですが、「相性体力作因縁果報」というのは(創価学会や立正佼成会などを含む)日蓮宗系の宗派でしか出てこない言葉では?
宗派が違うと意味がわからないので、(蛙の例だけでなく)誰にでも分かるように噛み砕いて説明してください。

Re:心のしくみ

Posted: 2010年7月04日(日) 19:54
by KEYONN_
>>ookamiさん
ありがとうございました。
おかげで完成しました。