|
@@ -0,0 +1,170 @@
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+const task17block = document.createElement('div');
|
|
|
+task17block.style = "border: 2px solid green; border-radius:5px; margin-bottom:10px; padding:10px";
|
|
|
+const task17title = document.createElement('h2');
|
|
|
+task17title.innerText = 'Task-17 Digital Vanga';
|
|
|
+const task17comment = document.createElement('p');
|
|
|
+task17comment.innerText = 'Возможно сохранение истории в n-мерный массив';
|
|
|
+const playVangaBtn = document.createElement('button');
|
|
|
+playVangaBtn.innerText = 'Play';
|
|
|
+playVangaBtn.style = 'margin-bottom:17px';
|
|
|
+root.appendChild(task17block);
|
|
|
+task17block.appendChild(task17title);
|
|
|
+task17block.appendChild(task17comment);
|
|
|
+task17block.appendChild(playVangaBtn);
|
|
|
+playVangaBtn.onclick = () => {
|
|
|
+ let history = [];
|
|
|
+ let predictArray = [-1, -1];
|
|
|
+ let VangaNumber = null;
|
|
|
+ let step = null;
|
|
|
+ let userNumber = null;
|
|
|
+ const historyDeep=+prompt('Введите кол-во элементов, записываемых в историю')
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ function predictArrayFirstFilling(predictArray, historyDeep) {
|
|
|
+ let prePredictArray = [];
|
|
|
+ if (historyDeep ===0) {
|
|
|
+ return predictArray;
|
|
|
+ } else {
|
|
|
+
|
|
|
+ prePredictArray = JSON.parse(JSON.stringify(predictArray));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for (let j = 0; j < 2; j++) {
|
|
|
+
|
|
|
+
|
|
|
+ predictArray[j] = JSON.parse(JSON.stringify(prePredictArray));
|
|
|
+ }
|
|
|
+ return predictArrayFirstFilling (predictArray, historyDeep - 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ predictArrayFirstFilling(predictArray, historyDeep-1);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for (step = 0; step < historyDeep; step++) {
|
|
|
+ VangaNumber = (Math.random() > 0.5) ? 1 : 0;
|
|
|
+ console.log(`Гадалка задумала: ${VangaNumber}`);
|
|
|
+ userNumber = prompt('Введите одно из чисел: 0 или 1');
|
|
|
+
|
|
|
+ if (!(userNumber === null)) {
|
|
|
+ if (!(userNumber === "")) {
|
|
|
+ if (userNumber == 1 || userNumber == 0) {
|
|
|
+ history[step] = userNumber;
|
|
|
+ VangaNumber == userNumber ? alert(`Гадалка угадала, что ты загадал ${userNumber} `) : alert('Гадалка не угадала твое число')
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ alert("Ошибка ввода. Нужно ввести число 0 или 1");
|
|
|
+ step--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ alert("Ошибка ввода. Нужно ввести число 0 или 1");
|
|
|
+ step--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else break;
|
|
|
+ }
|
|
|
+ console.log(`history=[${ history }]`);
|
|
|
+
|
|
|
+ while (!(userNumber === null)) {
|
|
|
+
|
|
|
+ let predictArrayElement = predictArray;
|
|
|
+ let prePredictArrayElement = [];
|
|
|
+ for (let i = 0; i < historyDeep; i++) {
|
|
|
+ prePredictArrayElement = predictArrayElement;
|
|
|
+ if (i < historyDeep - 1) {
|
|
|
+ predictArrayElement = [...prePredictArrayElement[history[i]]];
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ predictArrayElement = predictArrayElement[history[i]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (predictArrayElement == 0 || predictArrayElement == 1) {
|
|
|
+ VangaNumber = predictArrayElement;
|
|
|
+ console.log(`Гадалка задумала: ${VangaNumber}`);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ VangaNumber = (Math.random() > 0.5) ? 1 : 0;
|
|
|
+ console.log(`Гадалка задумала: ${VangaNumber}`);
|
|
|
+ };
|
|
|
+
|
|
|
+ userNumber = prompt('Введите одно из чисел: 0 или 1')
|
|
|
+ if (!(userNumber === null)) {
|
|
|
+ if (!(userNumber === "")) {
|
|
|
+ if (userNumber == 1 || userNumber == 0) {
|
|
|
+ VangaNumber == userNumber ? alert(`Гадалка угадала, что ты загадал ${userNumber} `) : alert('Гадалка не угадала твое число');
|
|
|
+
|
|
|
+
|
|
|
+ let predictArrayElement = 'predictArray';
|
|
|
+ for (let i = 0; i < historyDeep; i++) {
|
|
|
+ predictArrayElement +=`[${[history[i]]}]`;
|
|
|
+ }
|
|
|
+ predictArrayElement += `=${userNumber}`;
|
|
|
+ eval(predictArrayElement);
|
|
|
+
|
|
|
+ history.push(userNumber);
|
|
|
+ history.splice(0, 1);
|
|
|
+ console.log(`history=[${history}]`);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ alert("Ошибка ввода. Нужно ввести число 0 или 1");
|
|
|
+ step--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ alert("Ошибка ввода. Нужно ввести число 0 или 1");
|
|
|
+ step--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else break;
|
|
|
+ }
|
|
|
+ console.log(`predictArray=`);
|
|
|
+ console.log(predictArray);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|