2007年07月21日

じゃんけんアルゴリズム、プログラミングコンテストとか開催しませんか?

こんな記事が有りました。じゃんけんに勝つための7つのテクニック

とりあえずまとめると、、、、
初心者はグーを出す
最初はチョキ
2回連続の罠
宣言する
考えるより先に手を出させる
出す順番を固定させる
どうしようもなくなったらパーを出せ
ということになります。結構心理戦ですね、、本来じゃんけんて33.33%ですが、実際にはチョキが最も低く、出される確率は29.6%。だそうです。

 話は変わりますが、プログラミングを初めて4年目ぐらいになりました。初心者の人には何が楽しくて、学べるかなぁ〜なんて考えてたら、ありました、、じゃんけんを作る。。これは自分も最初の頃課題でやりました。if,for,変数,コンソール入出力,非常に総合的かつ簡単、、結構いい課題だとおもいました。

 そこで、本題、じゃんけんて単純ですよね?でも結構戦略がありますよね?実装も簡単そうですよね?心理戦になると実際やるしかないんですが、アルゴリズムで勝負できそうなので、とりあえずの形で遊べる感じの物をjavaで実装してみました。  JankenProject.zip をダウンロード、解凍していただくと、ソースとクラス、ついでにjavadocも入れといたので使ってください。 ProtoTypeJankenクラスを継承して、クラスを作成してもらって、Jankenメソッドとコンストラクタ(引数はString name)を実装します。
それをapplicationContext.xmlに登録してもらって、JankenMain.javaを実行するだけです。で登録された、じゃんけんクラスと総当たり戦、コンソール出力で勝った回数の多い順に表示されます。 サンプルとして置いてあるのが、JankenA,B,Cクラスです、、実はjankenAのランダムのクラスが一番強いかも。。。 これに勝るじゃんけんプログラムをみんなで考えられたらいいなぁ〜という勝手な妄想です。。このブログを見てる人が30人、うち身内が数人。。。あまり期待はうすそうですが、誰かがリアクションをとってくれれば、GUIにしちゃったり、対戦中のグラフ付き表示とか、がんばっちゃうかもよ。。

一応interface Jankenを参照してください。使えるメソッドの説明書いてありますんで、springがよくわからないという方はJankenMainTest.javaをお使いください。

コメント0が予想されますが、期待しております。
一応サンプルコードと実行結果、
/**
 * this is sample Janken class
 * @author yamitake
 *
 */
public class JankenA extends ProtoTypeJanken {
	
	public JankenA(String name){
		super(name);
	}
	
	/**
	 * random janken
	 */
	public int janken(){
		double d=Math.random();
		if(0.33>d){
			return TYOKI;
		}else if(0.66>d){
			return PAA;
		}else{
			return GOO;
		}
	}
}

こんな感じで書いてapplicationContext.xmlに登録すると、勝手にじゃんけん対決を各相手と10000回(applicationContext.xmlで設定してます)対決します。 途中経過などは見えないので面白くないかもしれませんがアルゴリズム勝負っていうことで、自分を信じて!! で, 実行結果はこんな感じ
紗登子:	win:126	lose:142	drow:132
クルミ:	win:39	lose:26	drow:335
糸色望:	win:36	lose:33	drow:331
なんか200人ぐらいで対決したら差ができそうで、面白そうな気もしますが、単なる無駄な労力として終わりそう、、、パッケージングやらSVNにおくとかそこまでいってくれれば本望です。


ラベル:じゃんけん java
posted by ヤミタケ at 01:58| Comment(3) | TrackBack(0) | プログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コマンドラインからの実行の場合は
java -classpath .;lib
\spring.jar;lib\commons-logging.jar JankenMain
Posted by ヤミタケ at 2007年07月24日 17:18
VIPからきますた
どうやってもランダムには勝てないのでこの辺制限すると面白くなるのでは?
Posted by aoki at 2007年07月24日 20:32
初めまして。

ランダムにどれだけ近づけるか興味深いです。
Posted by 師子乃 at 2020年11月28日 14:40
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。