Показать сообщение отдельно
  #8 (permalink)  
Старый 17.12.2014, 23:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

добавил маску ... вариант угадали 4 числа из них 2 быка, затем 4 числа 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);  //выбрали любое число из массива
        document.write(num + " количество вариантов " + arr.length + "<br>");
        var filter = test(num, 4, 2); //условно угадали 4 числа  -- 2 быка
        filterAnswers(arr, filter)
         var num = getNum(arr);  //выбрали любое число из массива
       document.write("осталось вариантов " + arr.length + "<br>" + arr.join("<br>"));
        var filter = test(num, 4, 0); //условно угадали 4 числа  -- 0 быков
        filterAnswers(arr, filter)

    document.write("<br>осталось вариантов " + arr.length + "<br>" + arr.join("<br>"));   // осталось вариантов



</script>
</body>

</html>

Последний раз редактировалось рони, 18.12.2014 в 11:26.
Ответить с цитированием