| 
	| 
	
	| 
		
	| 
			
			 
			
				18.12.2014, 00:27
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 13.03.2013 
						Сообщений: 1,572
					 
		
 |  |  
	| 
	
 
	| Сообщение от рони |  
	| думаю что случайный выбор из оставшихся самый правильный |  
	
 К сожалению это не так. Есть решения с матрицами ходов при максимуме 7 ходов. Случайно так не всегда получается |  |  
	| 
		
	| 
			
			 
			
				18.12.2014, 01:17
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	|   
вариант поиграть с подсчётом шагов первая цифра всего угадано  пробел быков (на своём месте) пример 3 1 -- 3 угадано 1 на своём месте  2 0 две угадано на своём месте нет .
 
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<script>
    function buildAnswers() {
        var all_res = [];
        for (var i = 1; i < 10; ++i) {
            for (var j = 0; j < 10; ++j) {
                if (j == i) continue;
                for (var k = 0; k < 10; ++k) {
                    if (k == j || k == i) continue;
                    for (var l = 0; l < 10; ++l) {
                        if (l == k || l == j || l == i) continue;
                        all_res.push([i, j, k, l]);
                    }
                }
            }
        }
        return all_res;
    }
    var arr = buildAnswers();
    function getNum(arr) {
        return arr[Math.floor(Math.random() * arr.length)]
    }
    function test(arr, n, bull) {
        return function(a) {
            var k = 0, t = 0,
                s;
            for (var i = 0; i < 4; i++) {
                if(arr[i] == a[i] ) t++;
                s = (arr[0] - a[i]) * (arr[1] - a[i]) * (arr[2] - a[i]) * (arr[3] - a[i])
                if (!s) k++
            }
            if(t != bull) return false;
            return k >= n
        }
    }
    var filter = test(num, 1);
    function filterAnswers(arr, filter) {
        for (var i = arr.length - 1; i > -1; i--) {
            if (!filter(arr[i])) arr.splice(i, 1);
        }
    }
   var num = getNum(arr);
   for (var i=1; arr.length > 1; i++)  {
        var data = prompt("всего запятая быков в числе "+ num, "").split(/\D+/) ;
        var filter = test(num, data[0], data[1]);
        filterAnswers(arr, filter)
        document.write(num + " " + data +" осталось вариантов " + arr.length + " шаг "+i+"<br>");
        num = arr[Math.floor(.5 * arr.length)]
   }
    document.write("<br>осталось вариантов " + arr.length + "<br>" + arr.join("<br>"));
</script>
</body>
</html>
			 Последний раз редактировалось рони, 18.12.2014 в 11:28.
 |  |  
	| 
		
	| 
			
			 
			
				18.12.2014, 01:23
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Poznakomlus, 
 да пожалуй случайное не самое оптимальное -- но работает.
 
	
 
	| Цитата: |  
	| 1,7,9,8 1,1 осталось вариантов 1295 шаг 1 4,2,9,5 2,1 осталось вариантов 276 шаг 2
 4,7,5,9 1,0 осталось вариантов 199 шаг 3
 5,2,0,8 1,1 осталось вариантов 47 шаг 4
 5,3,9,1 2,0 осталось вариантов 4 шаг 5
 1,4,0,5 2,1 осталось вариантов 2 шаг 6
 1,2,4,3 4,2 осталось вариантов 1 шаг 7
 
 осталось вариантов 1
 1,2,3,4
 |  
	
 
	
 
	| Цитата: |  
	| 7,5,6,3 1,0 осталось вариантов 2677 шаг 1 5,1,2,6 2,0 осталось вариантов 751 шаг 2
 4,2,5,8 2,1 осталось вариантов 188 шаг 3
 4,6,3,2 3,1 осталось вариантов 9 шаг 4
 3,6,5,4 2,1 осталось вариантов 5 шаг 5
 6,2,3,4 3,3 осталось вариантов 1 шаг 6
 
 осталось вариантов 1
 1,2,3,4
 |  
	
 			 Последний раз редактировалось рони, 18.12.2014 в 02:26.
 |  |  
	| 
		
	| 
			
			 
			
				18.12.2014, 02:25
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 13.03.2013 
						Сообщений: 1,572
					 
		
 |  |  
	| Не могу плюсануть. Вижу игра понравилась   |  |  
	| 
		
	| 
			
			 
			
				18.12.2014, 11:30
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Poznakomlus, 
 очередная версия ))) проверьте будет ли у вас больше 7 ходов
 
	
 
	| Цитата: |  
	| вариант поиграть с подсчётом шагов первая цифра всего угадано пробел быков (на своём месте) пример 3 1 -- 3 угадано 1 на своём месте 2 0 две угадано на своём месте нет . |  
	
 
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<script>
function buildAnswers() {
    for (var a = [], d = 1; 10 > d; ++d)
        for (var b = 0; 10 > b; ++b)
            if (b != d)
                for (var c = 0; 10 > c; ++c)
                    if (c != b && c != d)
                        for (var e = 0; 10 > e; ++e) e != c && e != b && e != d && a.push([d, b, c, e]);
    return a
}
var arr = buildAnswers(),
    z = [1, 2, 3, 4, 5, 6, 7, 8, 9].sort(function() {
        return Math.random() - .5
    });
    z.push(z[Math.floor(Math.random()*4)],z[Math.floor(Math.random()*4)+4],0);
function getNum(a) {
      return z.length && a.length > 10 ? z.splice(0, 4) : a[Math.floor(Math.random() * a.length)] 
}
function test(a, d, b) {
    return function(c) {
        for (var e = 0, g = 0, h, f = 0; 4 > f; f++) a[f] == c[f] && g++, (h = (a[0] - c[f]) * (a[1] - c[f]) * (a[2] - c[f]) * (a[3] - c[f])) || e++;
        return g != b ? !1 : e >= d
    }
}
function filterAnswers(a, d) {
    for (var b = a.length - 1; - 1 < b; b--) d(a[b]) || a.splice(b, 1)
};
for (var i = 1; arr.length > 1; i++) {
    var num = getNum(arr),
    data = prompt("всего запятая быков в числе " + num, "").split(/\D+/)
    filter = test(num, data[0], data[1]);
    filterAnswers(arr, filter)
    document.write(num + " " + data + " осталось вариантов " + arr.length + " шаг " + i + "<br>");
}
document.write("<br>осталось вариантов " + arr.length + "<br>" + arr.join("<br>"));
</script>
</body>
</html>
 			 Последний раз редактировалось рони, 18.12.2014 в 11:34.
 |  |  
	| 
		
	| 
			
			 
			
				18.12.2014, 12:11
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 13.03.2013 
						Сообщений: 1,572
					 
		
 |  |  
	| 2,1,3,5 1,0 осталось вариантов 2677 шаг 1 
6,4,9,8 1,0 осталось вариантов 1602 шаг 2 
7,2,9,0 1,1 осталось вариантов 439 шаг 3 
7,0,5,6 0,3 осталось вариантов 7 шаг 4 
7,0,5,9 1,2 осталось вариантов 5 шаг 5 
7,0,1,6 0,2 осталось вариантов 3 шаг 6 
7,8,5,6 0,3 осталось вариантов 2 шаг 7 
7,9,5,6 0,4 осталось вариантов 1 шаг 8
 
осталось вариантов 1 
7,9,5,6 
    8 ходов |  |  
	| 
		
	| 
			
			 
			
				18.12.2014, 12:14
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| 
	
 
	| Сообщение от Poznakomlus |  
	| 7,9,5,6 0,4 осталось вариантов 1 шаг 8 |  
	
 то есть неугадали ни одного числа --  но быки откудато взялись   
защиты от дурака нет, поэтому просьба играть по правилам 
быков вторая цифра не может быть больше общего числа угаданных			 Последний раз редактировалось рони, 18.12.2014 в 12:17.
 |  |  
 
 
 |  |