もう8時か、

【開催】囚人のジレンマ大会(361)

1 デフォルトの名無しさん 02/04/17 17:48
「囚人のジレンマ」大会をやろうではありませんか。

C言語で「囚人」は関数として作ってください。
1000回取引をし、その合計点数が高い囚人が勝ちとなります。

点数表は以下の通りです。

協調同士 3点
裏切り同士 1 点
協調裏切り 5/0点。

最低得点は1000点。最高得点は5000点になります。

関数は戻り値で 0:協調 か 1:裏切り を返します。
以前の取引は result 配列で参照できます。

メイン関数と囚人関数の例を示します。

#include <stdio.h>


int round;
char result_a[1000], result_b[1000];


int prisoner_a(void) /* 最強しっぺ返し君 */
{
if ( round == 1 ) return 0;
if ( result_b[ round - 1 ] == 0 ) return 1; else return 0;
}

int prisoner_b(void) /* 人間不信裏切り君 */
{
return 1;
}

int main(int argc, char *argv[])
{
int a=0,b=0,pa=0,pb=0;

for ( round = 1; round <= 1000; round ++ ) {
a = prisoner_a();
b = prisoner_b();

if ( ( a == 0 ) && ( b ==0 ) ) { pa+=3;pb+=3; } /* 協調:協調 */
if ( ( a == 1 ) && ( b ==0 ) ) { pa+=5;pb+=0; } /* 裏切り:協調 */
if ( ( a == 0 ) && ( b ==1 ) ) { pa+=0;pb+=5; } /* 協調:裏切り */
if ( ( a == 1 ) && ( b ==1 ) ) { pa+=1;pb+=1; } /* 裏切り:裏切り */

result_a[round] = a;
result_b[round] = b;

printf( "Round %d A:%d / B:%d\n",round,a,b);
}

printf("A:%d / B:%d\n\n",pa,pb);
}
総レス数 361

■ このスレッドは過去ログ倉庫に格納されています

IE等普通のブラウザで見る場合 http://tubo.80.kg/tubo_and_maru.html
専用のブラウザで見る場合 http://www.monazilla.org/

2ちゃんねる Viewerを使うと、すぐに読めます。 http://2ch.tora3.net/
この Viewer(通称●) の売上で、2ちゃんねるは設備を増強しています。
●が売れたら、新しいサーバを投入できるという事です。


よくわからない場合はソフトウェア板へGo http://hibari.2ch.net/software/

モリタポを持っていれば、50モリタポで表示できます。




read.cgi@hanako ver 2011/01/22
FOX ★ DSO(Dynamic Shared Object)