Показать сообщение отдельно
  #20 (permalink)  
Старый 20.12.2015, 13:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,134

судоку sudoku
Stroy,
Судоку, простая генерация в лоб ... если вы видите число 300000 значит вам не повезло.
<!DOCTYPE HTML>

<html>

<head>
  <title>sudoku</title>
  <meta charset="utf-8">
</head>

<body>
<script>
Array.prototype.shuffle = function() {
    for (var a = this.length - 1; 0 < a; a--) {
        var b = Math.floor(Math.random() * (a + 1)),
            c = this[b];
        this[b] = this[a];
        this[a] = c
    }
    return this
};

for (var arr = [], b = [], obj = {}, column = {}, d = 0, i = 0; 9 > i; i++)
b.push(i + 1), obj[i] = {}, column[i] = {};
for (var k = 0; 9 > k;) {
     b = b.slice().shuffle();
     var   a = b.every(function(c, e, f) {
            f = (e / 3 | 0) + 3 * (k / 3 | 0);
            return !obj[f][c] && !column[e][c]
        });
    d++;
    if (300000 <= d) break;
    a && (arr.push(b), b.forEach(function(c, e, f) {
        obj[(e / 3 | 0) + 3 * (k / 3 | 0)][c] = column[e][c] = !0
    }), k++)
};

document.write(arr.join('<br>')+ '<br>'+d)
</script>
</body>

</html>

Последний раз редактировалось рони, 20.12.2015 в 13:43.
Ответить с цитированием