Advertisement
dddilian

SUDOMU

Oct 8th, 2020 (edited)
739
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     let rowPassed = true;
  3.     let collumPassed = true;
  4.     let buttons = document.getElementsByTagName("button");
  5.     let checkBtn = buttons[0];
  6.     let clearBtn = buttons[1];
  7.  
  8.     checkBtn.addEventListener("click", check);
  9.     clearBtn.addEventListener("click", clear);
  10.  
  11.     let neededNums = [1, 2, 3];
  12.     let pEl = document.getElementsByTagName('p')[0]; //единственият p елемент в целия HTML
  13.  
  14.     function check() {
  15.  
  16.         let matrix = []; //матрица, в която ще вкарваме въведените стойности, и която после ще си обхождаме
  17.         let tBodyRows = Array.from(document.getElementsByTagName("tbody")[0].children); //взимаме редовете
  18.  
  19.         for (const row of tBodyRows) {
  20.             let valuesRows = row.getElementsByTagName('input'); // от всеки ред взимаме инпутите
  21.             let arrValues = Array.from(valuesRows).map(el => Number(el.value)); //правим си масив от стойностите им
  22.             matrix.push(arrValues); //вкарваме в матрицата масива с инпутите от текущия ред на таблицата
  23.         }
  24.  
  25.         for (let i = 0; i < matrix.length; i++) {
  26.  
  27.             if (neededNums.every(el => matrix[i].includes(el))) { //ако текущия ред съдържа всяко едно число от масива с [1,2,3] - влизаме за да проверим текущата колона да ли също ги съдържа
  28.  
  29.                 let currentColArr = []; //правим си масив, който ще ни играе ролята на колоната - чистим го преди всяко пълнене
  30.                 collumPassed = true;
  31.  
  32.                 for (let j = 0; j < matrix[i].length; j++) { //попълваме масива, който резпезентира текущата колона
  33.                     currentColArr.push(matrix[j][i]);
  34.                 }
  35.  
  36.                 if (neededNums.every(el => currentColArr.includes(el))) { //проверяме колоната дали съдържа всяко едно число от масива [1,2,3];
  37.                     continue;
  38.                 } else {
  39.                     collumPassed = false;
  40.                     rowPassed = false;
  41.                     break;
  42.                 }
  43.  
  44.             } else { //значи някоя колона или ред НЕ съдържа всички числа от масива [1,2,3];
  45.                 rowPassed = false;
  46.                 break;
  47.             }
  48.  
  49.         }
  50.  
  51.         if (rowPassed) {
  52.             document.getElementsByTagName('table')[0].style.border = "2px solid green";
  53.             pEl.parentElement.style.color = "green";
  54.             pEl.textContent = "You solve it! Congratulations!";
  55.         } else {
  56.             document.getElementsByTagName('table')[0].style.border = "2px solid red";
  57.             pEl.parentElement.style.color = "red";
  58.             pEl.textContent = "NOP! You are not done yet...";
  59.         }
  60.     }
  61.  
  62.     function clear() {
  63.         document.getElementsByTagName('table')[0].style.border = "none";
  64.         pEl.textContent = "";
  65.         pEl.parentElement.style.color = "";
  66.  
  67.         Array.from(document.getElementsByTagName("input")).forEach(el => {
  68.             el.value = "";
  69.         });
  70.     }
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement