JavaScriptっぽい。

『JavaScriptっぽい。』の更新情報やJavaScriptに関する日記。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告|
  3. トラックバック(-)|
  4. コメント(-)

トランプ3枚当てスクリプト(その4)

11月9日正解発表分。 ロジックを組んでいくと、かなり場合の数が少ないことに気づく。 これでは答えの出力回数を増やすと、ダブりも多くなる。


<script type="text/javascript">
/*
*1.赤のマークが多い			
*2.1枚目 × 2枚目 < 3枚目
*3.1枚目 × 1枚目 = 2枚目		//1枚目は3以下
*4.2種類とも69回と同じマーク		//マークは2種類でクラブとハート
*5.3枚目の数字は11

//4.と1.からハートが2枚でクラブが1枚と分かる
//2.と5.より1枚目と2枚目をかけて11より小さい数で3.の式を満たす場合を考えればよい
//とりあえず2.と5.だけ満たす場合を考えると
//1枚目が1なら2枚目は10以下
//1枚目が2なら2枚目は5以下
//1枚目が3なら2枚目は3以下
//これで3.を満たすのは
//1枚目が1なら2枚目は1
//1枚目が2なら2枚目は4
//したがって、[1,1,11]か[2,4,11]のどちらかしかない

	1.数字は最初に2種類の数字列を選ぶランダムにする
	2.1枚目の記号はクラブかハートのランダム
	3.2枚目の記号は1枚目がクラブのときはハートで3枚目の記号もハート
	4.2枚目の記号は1枚目がハートで1のときはクラブで3枚目の記号はハート
	5.2枚目の記号は1枚目目がハートで2のときはランダム
	6.3枚目の記号は5.で1枚目と2枚目が同じときはクラブで、異なるときはハート
*/

Array.prototype.shuffle = function(){
	return this [ Math.floor ( Math.random() * this.length ) ];
}

function choice_card(){
	var Mark = ["heart","club"];	
	var num_str = ["1,1,11","2,4,11"];
	var card = [];
	var return_str = num_str.shuffle();
	var return_num = return_str.split(",");

	var first_mark = Mark.shuffle();
	var second_mark , third_mark;

	if(first_mark == "club") second_mark = third_mark = "heart";
	else if(first_mark == "heart" && return_num[0] == "1"){
		second_mark = "club";
		third_mark = "heart";
	}
	else {
		second_mark = Mark.shuffle();
		third_mark = (first_mark == second_mark) ? "club" : "heart";
	}
	
	card[0] = first_mark + return_num[0];
	card[1] = second_mark + return_num[1];
	card[2] = third_mark + return_num[2];
	return card.join(",");	
}

var choiced_card = [];

for(i=0;i<10;i++){
	choiced_card[i] = choice_card();
}

var joint_array = choiced_card.join("<br>");
document.write ( joint_array );

</script>

ダブりがないかどうかチェックするのなら、ループの回数も場合の数以下にするとか、ダブっていた場合はbreakするとか考えないといけないが、 そんなに場合の数が少ないのなら、手作業ですべて書き出した方が手っ取り早い。 でも、いちいち手書きするのも癪なので、JavaScriptで書き出してみることにする。


<script type="text/javascript">
var card = {
	"1,1,11" : "heart,club,heart|club,heart,heart" ,
	"2,4,11" : "heart,heart,club|heart,club,heart|club,heart,heart"
};
var split_value , i , j , i_max , j_max , split_array , mark_array , num_array ;
var temp_array = [];
var result_array = [];
for(i in card){
	split_value = card[i].split("|");
	for(j = 0 , j_max = split_value.length ; j < j_max ; j++){
		temp_array.push( split_value[j] + "|" + i )
	}
}
for(i = 0 , i_max = temp_array.length ; i < i_max ; i++){
	split_array = temp_array[i].split("|");
	mark_array = split_array[0].split(",");
	num_array = split_array[1].split(",");
	result_array[i] = [];
	for(j=0 , j_max = mark_array.length ; j < j_max ; j++){
		result_array[i].push( mark_array[j] + num_array[j] );
	}
}
var result = result_array.join("<br>");
document.write(result);
</script>

なんと5通りしかない答えのためにこんな大変なことに!

まったくもって、意味なし芳一ですな。

スポンサーサイト
  1. 2005/11/14(月) 21:02:10|
  2. トランプ3枚当て|
  3. トラックバック:0|
  4. コメント:0

PUREST

10 | 2005/11 | 12
Sun Mon Tue Wed Thu Fri Sat
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 - - -

Recent Entries

Recent Comments

Recent Trackbacks

Archives

Category

Links

Search

Recommend

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。