123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- //Задание на черный пояс
- // -------------УСЛОВИЕ-------------
- // Сделать предыдущее задание на черный пояс в упрощенном виде: не использовать четырехмерный массив для хранения истории,
- // а использовать ассоциативный массив: Например, если пользователь ввел 1212 за последние четыре хода, то мы ищем то, что было введено последний раз после такой последовательности:
- // var history = "1212"
- // var predictValue = predictArray[history] // в predictValue то, что ввел последний раз пользователь после нажатий 1212
- // var newValue = prompt("введите 1 или 2","");
- // predictArray[history] = newValue //сохраняем новый ввод
- //сдвигаем историю
- // -------------РЕШЕНИЕ-------------
- const task20block = document.createElement('div');
- task20block.style = "border: 2px solid green; border-radius:5px; margin-bottom:10px; padding:10px";
- const task20title = document.createElement('h2');
- task20title.innerText = 'Task-20 Задание на черный пояс: гадалка';
- const task20comment = document.createElement('p');
- task20comment.innerText = 'Возможно сохранение истории в строку длиной n-символов';
- const playVangaBtn = document.createElement('button');
- playVangaBtn.innerText = 'Play';
- playVangaBtn.style = 'margin-bottom:20px';
- root.appendChild(task20block);
- task20block.appendChild(task20title);
- task20block.appendChild(task20comment);
- task20block.appendChild(playVangaBtn);
- playVangaBtn.onclick = () => {
- let history = '';
- let predictArray = {};
- let VangaNumber = null;
- let step = null;
- let userNumber = null;
- const historyDeep=+prompt('Введите кол-во элементов, записываемых в историю')
-
- // Формирование 1-го элемента history
- for (step = 0; step < historyDeep; step++) {
- VangaNumber = (Math.random() > 0.5) ? 1 : 2;
- console.log(`Гадалка задумала: ${VangaNumber}`);
- userNumber = prompt('Введите одно из чисел: 1 или 2','');
-
- if (!(userNumber === null)) {
- if (!(userNumber === "")) {
- if (userNumber == 1 || userNumber == 2) {
- history += userNumber;
- VangaNumber == userNumber ? alert(`Гадалка угадала, что ты загадал ${userNumber} `) : alert('Гадалка не угадала твое число')
- }
- else {
- alert("Ошибка ввода. Нужно ввести число 1 или 2");
- step--;
- }
- }
- else {
- alert("Ошибка ввода. Нужно ввести число 1 или 2");
- step--;
- }
- }
- else break;
- }
- console.log(`history=${ history }`);
- // Формирование 2-ой и более строк history и внесение статистики в predictArray
- while (!(userNumber === null)) {
- //Проверка наличия записи в predictArray
- if (!(history in predictArray)) { VangaNumber = (Math.random() > 0.5) ? 1 : 2;
- console.log(`Гадалка задумала: ${VangaNumber}`); }
- else { VangaNumber = predictArray[history];
- console.log(`Гадалка задумала: ${VangaNumber}`);}
-
- userNumber = prompt('Введите одно из чисел: 1 или 2','')
- if (!(userNumber === null)) {
- if (!(userNumber === "")) {
- if (userNumber == 1 || userNumber == 2) {
- VangaNumber == userNumber ? alert(`Гадалка угадала, что ты загадал ${userNumber} `) : alert('Гадалка не угадала твое число');
-
- //Перезапись нужного элемента массива predictArray
- predictArray[history] = userNumber;
- history+=userNumber;
- history=history.slice(1);
- console.log(`history=${history}`);
- console.log(predictArray);
- }
- else {
- alert("Ошибка ввода. Нужно ввести число 1 или 2");
- step--;
- }
- }
- else {
- alert("Ошибка ввода. Нужно ввести число 1 или 2");
- step--;
- }
- }
- else break;
- }
- console.log(`predictArray=`);
- console.log(predictArray);
- const task20predictArray = document.createElement('p');
- task20predictArray.innerText = `predictArray=${JSON.stringify(predictArray)}`;
- task20block.appendChild(task20predictArray);
- }
|