24遊戲 js 暴力破解

最近地鐵上沒啥事,玩了玩 24 遊戲。遊戲定義很簡單,四個100以內整數,通過三次四則運算,結果等於24。

忙中偷閒用 js 開發寫了一個暴力破解的方法。代碼貼一下。

<html>
	<body>
		<script>
function calculation(a, b, c, d){
	//符號整理
	var charsAll = [];
	var chars = ['+', '-', '*', '/'];
	for(var i1 = 0 ; i1 < 4 ; i1 ++){
		for(var i2 = 0 ; i2 < 4 ; i2 ++){
			for(var i3 = 0 ; i3 < 4 ; i3 ++){
				charsAll.push(chars[i1] + ' ' + chars[i2] + ' ' + chars[i3]);
			}
		}
	}
	var numAll = [];
	var num = [];
	num.push(a);
	num.push(b);
	num.push(c);
	num.push(d);
	//數字整理
	for(var i1 = 0 ; i1 < 4 ; i1 ++){
		for(var i2 = 0 ; i2 < 4 ; i2 ++){
			if(i1 == i2){
				continue;
			}
			for(var i3 = 0 ; i3 < 4 ; i3 ++){
				if(i1 == i3 || i2 == i3){
					continue;
				}
				for(var i4 = 0 ; i4 < 4 ; i4 ++){
					if(i1 == i4 || i2 == i4 || i3 == i4){
						continue;
					}
					numAll.push(num[i1] + ' ' + num[i2] + ' ' + num[i3] + ' ' + num[i4]);
				}
			}
		}
	}
	var resultsAll = [];
	//整理數字和符號,形成計算式
	for(var i = 0 ; i < numAll.length ; i ++){
		for(var j = 0 ; j < charsAll.length ; j ++){
			var numArr = numAll[i].split(' ');
			var charArr = charsAll[j].split(' ');
			var cal = '(' + numArr[0] + charArr[0] + numArr[1] + ')';
			var res = eval(cal);
			if(res < 0 || res % 1 != 0){
				continue;
			}
			var str = cal;
			cal = '(' + res + charArr[1] + numArr[2] + ')';
			var res = eval(cal);
			if(res < 0 || res % 1 != 0){
				continue;
			}
			str = '(' + str + charArr[1] + numArr[2] + ')';
			cal = res + charArr[2] + numArr[3];
			res = eval(cal);
			if(res == 24){
				str = str + charArr[2] + numArr[3];;
				resultsAll.push(str);
			}
		}
	}
	var size = resultsAll.length;
	var allStr = size + '\n';
	for(var i = 0 ; i < size ; i ++){
		allStr += resultsAll[i] + '\n';
	}
	alert(allStr);
}
function begin(){
	calculation(
		document.getElementById("a").value,
		document.getElementById("b").value,
		document.getElementById("c").value,
		document.getElementById("d").value
	);
}
		</script>
		<input id="a" /><br />
		<input id="b" /><br />
		<input id="c" /><br />
		<input id="d" /><br />
		<input type="button" onclick="begin()" value="BEGIN" />
	</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章