Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.04.2017, 16:53
Интересующийся
Отправить личное сообщение для Evelate Посмотреть профиль Найти все сообщения от Evelate
 
Регистрация: 10.03.2017
Сообщений: 12

Работа с условием и циклом
Придумал себе цель, программка авто генерирования цифр без повторов, но с особыми условиями, т.е. судоку собственными руками))

В дальнейшем, хочу сделать рандомные начальные значения у переменных.

А сейчас я, видимо, как-то не так начал проверку условия, уже во втором квадрате из цифр идёт неправильная проверка.

судоку — копия.jpg

Думаю, надо как-то сделать проверку блоками: сначала по горизонтали (2), потом по вертикали (3), далее блок (1) и если всё это в совокупности не имеет повторов присвоить значение переменной, если хотя бы в одном месте повтор, то переменную увеличить на одну позицию и опять повторить проверку. Но не понимаю, как именно код организовать...

Ещё нужно вставить код с проверкой, чтобы переменная была "<=9", но что-то пока идей не возникло, кроме бессмысленной проверки в самом цикле, т.к. переменная изначально с 0:

if (a1 < 9) {
   ++a1;
} else {a1 = 0; ++a1;}


Эта идея, думаю, пройдёт, когда числа на рандоме будут.

Проверка идёт последовательно и это не очень хорошая идея судя по всему, но предполагаю есть более лучшие способы проверки(может частично, как-то параллельно), но я не далеко ушёл в изучении языка так, что пока что получился такой код)


"use strict"
var a1 = 0, a2 = 0, a3 = 0,   a4 = 0, a5 = 0, a6 = 0,   a7 = 0, a8 = 0, a9 = 0,
    b1 = 0, b2 = 0, b3 = 0,   b4 = 0, b5 = 0, b6 = 0,   b7 = 0, b8 = 0, b9 = 0,
    c1 = 0, c2 = 0, c3 = 0,   c4 = 0, c5 = 0, c6 = 0,   c7 = 0, c8 = 0, c9 = 0,
 
    d1 = 0, d2 = 0, d3 = 0,   d4 = 0, d5 = 0, d6 = 0,   d7 = 0, d8 = 0, d9 = 0,
    e1 = 0, e2 = 0, e3 = 0,   e4 = 0, e5 = 0, e6 = 0,   e7 = 0, e8 = 0, e9 = 0,
    f1 = 0, f2 = 0, f3 = 0,   f4 = 0, f5 = 0, f6 = 0,   f7 = 0, f8 = 0, f9 = 0,
 
    g1 = 0, g2 = 0, g3 = 0,   g4 = 0, g5 = 0, g6 = 0,   g7 = 0, g8 = 0, g9 = 0,
    h1 = 0, h2 = 0, h3 = 0,   h4 = 0, h5 = 0, h6 = 0,   h7 = 0, h8 = 0, h9 = 0,
    i1 = 0, i2 = 0, i3 = 0,   i4 = 0, i5 = 0, i6 = 0,   i7 = 0, i8 = 0, i9 = 0;
 
 
//1 строка: проверка по горизонтали
//2 строка: проверка по вертикали
//3 строка: проверка по текущему квадрату
 
while (     a1 === a4 || a1 === a5 || a1 === a6 || a1 === a7 || a1 === a8 || a1 === a9 ||
            a1 === d1 || a1 === e1 || a1 === f1 || a1 === g1 || a1 === h1 || a1 === i1 ||
            a1 === a2 || a1 === a3 || a1 === b1 || a1 === b2 || a1 === b3 || a1 === c1 || a1 === c2 || a1 === c3
           ) {
        ++a1;
    };
    while (a2 === a4 || a2 === a5 || a2 === a6 || a2 === a7 || a2 === a8 || a2 === a9 ||
           a2 === d2 || a2 === e2 || a2 === f2 || a2 === g2 || a2 === h2 || a2 === i2 ||
           a2 === a1 || a2 === a3 || a2 === b1 || a2 === b2 || a2 === b3 || a2 === c1 || a2 === c2 || a2 === c3
        ) {
 
        ++a2;
    };
    while ( 
           a3 === a4 || a3 === a5 || a3 === a6 || a3 === a7 || a3 === a8 || a3 === a9 ||
           a3 === d3 || a3 === e3 || a3 === f3 || a3 === g3 || a3 === h3 || a3 === i3 ||
           a3 === a1 || a3 === a2 || a3 === b1 || a3 === b2 || a3 === b3 || a3 === c1 || a3 === c2 || a3 === c3
        ) {
        ++a3;
    
    };
    while ( 
           b1 === b4 || b1 === b5 || b1 === b6 || b1 === b7 || b1 === b8 || b1 === b9 ||
           b1 === d1 || b1 === e1 || b1 === f1 || b1 === g1 || b1 === h1 || b1 === i1 ||
    b1 === a1 || b1 === a2 || b1 === a3 || b1 === b2 || b1 === b3 || b1 === c1 || b1 === c2 || b1 === c3) {
        ++b1;
    
    };
    while (
           b2 === b4 || b2 === b5 || b2 === b6 || b2 === b7 || b2 === b8 || b2 === b9 ||
           b2 === d2 || b2 === e2 || b2 === f2 || b2 === g2 || b2 === h2 || b2 === i2 ||
    b2 === a1 || b2 === a2 || b2 === a3 || b2 === b1 || b2 === b3 || b2 === c1 || b2 === c2 || b2 === c3) {
        ++b2;
    
    };
 
    while (
           b3 === b4 || b3 === b5 || b3 === b6 || b3 === b7 || b3 === b8 || b3 === b9 ||
           b3 === d3 || b3 === e3 || b3 === f3 || b3 === g3 || b3 === h3 || b3 === i3 ||
        b3 === a1 || b3 === a2 || b3 === a3 || b3 === b1 || b3 === b2 || b3 === c1 || b3 === c2 || b3 === c3) {
 
        ++b3;
    };
 
    while (
           c1 === c4 || c1 === c5 || c1 === c6 || c1 === c7 || c1 === c8 || c1 === c9 ||
           c1 === d1 || c1 === e1 || c1 === f1 || c1 === g1 || c1 === h1 || c1 === i1 ||
        c1 === a1 || c1 === a2 || c1 === a3 || c1 === b1 || c1 === b2 || c1 === b3 || c1 === c2 || c1 === c3) {
        ++c1;
    
    };
 
    while (
           c2 === c4 || c2 === c5 || c2 === c6 || c2 === c7 || c2 === c8 || c2 === c9 ||
           c2 === d2 || c2 === e2 || c2 === f2 || c2 === g2 || c2 === h2 || c2 === i2 ||
        c2 === a1 || c2 === a2 || c2 === a3 || c2 === b1 || c2 === b2 || c2 === b3 || c2 === c1 || c2 === c3) {
 
        ++c2;
    };
 
    while (
           c3 === c4 || c3 === c5 || c3 === c6 || c3 === c7 || c3 === c8 || c3 === c9 ||
           c3 === d3 || c3 === e3 || c3 === f3 || c3 === g3 || c3 === h3 || c3 === i3 ||
        c3 === a1 || c3 === a2 || c3 === a3 || c3 === b1 || c3 === b2 || c3 === b3 || c3 === c1 || c3 === c2) {
        ++c3;
    
    };
 
 
 
 
 
 
    while (
           a4 === a1 || a4 === a2 || a4 === a3 || a4 === a7 || a4 === a8 || a4 === a9 ||
           a4 === d4 || a4 === e4 || a4 === f4 || a4 === g4 || a4 === h4 || a4 === i4 ||
        a4 === a5 || a4 === a6 || a4 === b4 || a4 === b5 || a4 === b6 || a4 === c4 || a4 === c5 || a4 === c6) {
        ++a4;
 
    };
 
    while (
           a5 === a1 || a5 === a2 || a5 === a3 || a5 === a7 || a5 === a8 || a5 === a9 ||
           a5 === d5 || a5 === e5 || a5 === f5 || a5 === g5 || a5 === h5 || a5 === i5 ||
        a5 === a4 || a5 === a6 || a5 === b4 || a5 === b5 || a5 === b6 || a5 === c4 || a5 === c5 || a5 === c6) {
        ++a5;
 
    };
 
    while (
           a6 === a1 || a6 === a2 || a6 === a3 || a6 === a7 || a6 === a8 || a6 === a9 ||
           a6 === d6 || a6 === e6 || a6 === f6 || a6 === g6 || a6 === h6 || a6 === i6 ||
        a6 === a4 || a6 === a5 || a6 === b4 || a6 === b5 || a6 === b6 || a6 === c4 || a6 === c5 || a6 === c6) {
        ++a6;
 
    };
 
    while (
           b4 === b1 || b4 === b2 || b4 === b3 || b4 === b7 || b4 === b8 || b4 === b9 ||
           b4 === d4 || b4 === e4 || b4 === f4 || b4 === g4 || b4 === h4 || b4 === i4 ||
        b4 === a4 || b4 === a5 || b4 === a6 || b4 === b5 || b4 === b6 || b4 === c4 || b4 === c5 || b4 === c6) {
        ++b4;
 
    };
 
    while (
           b5 === b1 || b5 === b2 || b5 === b3 || b5 === b7 || b5 === b8 || b5 === b9 ||
           b5 === d5 || b5 === e5 || b5 === f5 || b5 === g5 || b5 === h5 || b5 === i5 ||
        b5 === a4 || b5 === a5 || b5 === a6 || b5 === b4 || b5 === b6 || b5 === c4 || b5 === c5 || b5 === c6) {
        ++b5;
 
    };
 
    while (
           b6 === b1 || b6 === b2 || b6 === b3 || b6 === b7 || b6 === b8 || b6 === b9 ||
           b6 === d6 || b6 === e6 || b6 === f6 || b6 === g6 || b6 === h6 || b6 === i6 ||
        b6 === a4 || b6 === a5 || b6 === a6 || b6 === b4 || b6 === b5 || b6 === c4 || b6 === c5 || b6 === c6) {
        ++b6;
 
    };
 
    while ( 
           c4 === c1 || c4 === c2 || c4 === c3 || c4 === c7 || c4 === c8 || c4 === c9 ||
           c4 === d4 || c4 === e4 || c4 === f4 || c4 === g4 || c4 === h4 || c4 === i4 ||
        c4 === a4 || c4 === a5 || c4 === a6 || c4 === b4 || c4 === b5 || c4 === b6 || c4 === c5 || c4 === c6) {
        ++c4;
 
    };
 
    while (
           c5 === c1 || c5 === c2 || c5 === c3 || c5 === c7 || c5 === c8 || c5 === c9 ||
           c5 === d5 || c5 === e5 || c5 === f5 || c5 === g5 || c5 === h5 || c5 === i5 ||
        c5 === a4 || c5 === a5 || c5 === a6 || c5 === b4 || c5 === b5 || c5 === b6 || c5 === c4 || c5 === c6) {
        ++c5;
 
    };
 
    while (
           c6 === c1 || c6 === c2 || c6 === c3 || c6 === c7 || c6 === c8 || c6 === c9 ||
           c6 === d6 || c6 === e6 || c6 === f6 || c6 === g6 || c6 === h6 || c6 === i6 ||
        c6 === a4 || c6 === a5 || c6 === a6 || c6 === b4 || c6 === b5 || c6 === b6 || c6 === c4 || c6 === c5) {
        ++c6;
 
    };
 
 
 
 
 
 
var total = " *************************************** \n" +
            " * " + a1 + " * " + a2 + " * " + a3 + " *    * " + a4 + " * " + a5 + " * " + a6 + " *    * " + a7 + " * " + a8 + " * " + a9 + " * \n" +
            " * " + b1 + " * " + b2 + " * " + b3 + " *    * " + b4 + " * " + b5 + " * " + b6 + " *    * " + b7 + " * " + b8 + " * " + b9 + " * \n" +
            " * " + c1 + " * " + c2 + " * " + c3 + " *    * " + c4 + " * " + c5 + " * " + c6 + " *    * " + c7 + " * " + c8 + " * " + c9 + " * \n" +
            " *************************************** \n" +
            " * " + d1 + " * " + d2 + " * " + d3 + " *    * " + d4 + " * " + d5 + " * " + d6 + " *    * " + d7 + " * " + d8 + " * " + d9 + " * \n" +
            " * " + e1 + " * " + e2 + " * " + e3 + " *    * " + e4 + " * " + e5 + " * " + e6 + " *    * " + e7 + " * " + e8 + " * " + e9 + " * \n" +
            " * " + f1 + " * " + f2 + " * " + f3 + " *    * " + f4 + " * " + f5 + " * " + f6 + " *    * " + f7 + " * " + f8 + " * " + f9 + " * \n" +
            " *************************************** \n" +
            " * " + g1 + " * " + g2 + " * " + g3 + " *    * " + g4 + " * " + g5 + " * " + g6 + " *    * " + g7 + " * " + g8 + " * " + g9 + " * \n" +
            " * " + h1 + " * " + h2 + " * " + h3 + " *    * " + h4 + " * " + h5 + " * " + h6 + " *    * " + h7 + " * " + h8 + " * " + h9 + " * \n" +
            " * " + i1 + " * " + i2 + " * " + i3 + " *    * " + i4 + " * " + i5 + " * " + i6 + " *    * " + i7 + " * " + i8 + " * " + i9 + " * \n" +
             " *************************************** \n";
 
alert(total);
Ответить с цитированием
  #2 (permalink)  
Старый 10.04.2017, 17:21
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Evelate,
Рекомендую ознакомиться с массивами
https://learn.javascript.ru/array
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2017, 17:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Evelate,
Сделать все элементы массива уникальными
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вакансия: Программист IOS, работа в офисе,г.Ростов-на-Дону Анна NikitaOnline Работа 0 21.03.2016 18:45
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06
Работа с циклом for Armen Общие вопросы Javascript 18 29.07.2011 16:45