task-04.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. //Задание на черный пояс
  2. // -------------УСЛОВИЕ-------------
  3. // Сделать предыдущее задание на черный пояс в упрощенном виде: не использовать четырехмерный массив для хранения истории,
  4. // а использовать ассоциативный массив: Например, если пользователь ввел 1212 за последние четыре хода, то мы ищем то, что было введено последний раз после такой последовательности:
  5. // var history = "1212"
  6. // var predictValue = predictArray[history] // в predictValue то, что ввел последний раз пользователь после нажатий 1212
  7. // var newValue = prompt("введите 1 или 2","");
  8. // predictArray[history] = newValue //сохраняем новый ввод
  9. //сдвигаем историю
  10. // -------------РЕШЕНИЕ-------------
  11. const task20block = document.createElement('div');
  12. task20block.style = "border: 2px solid green; border-radius:5px; margin-bottom:10px; padding:10px";
  13. const task20title = document.createElement('h2');
  14. task20title.innerText = 'Task-20 Задание на черный пояс: гадалка';
  15. const task20comment = document.createElement('p');
  16. task20comment.innerText = 'Возможно сохранение истории в строку длиной n-символов';
  17. const playVangaBtn = document.createElement('button');
  18. playVangaBtn.innerText = 'Play';
  19. playVangaBtn.style = 'margin-bottom:20px';
  20. root.appendChild(task20block);
  21. task20block.appendChild(task20title);
  22. task20block.appendChild(task20comment);
  23. task20block.appendChild(playVangaBtn);
  24. playVangaBtn.onclick = () => {
  25. let history = '';
  26. let predictArray = {};
  27. let VangaNumber = null;
  28. let step = null;
  29. let userNumber = null;
  30. const historyDeep=+prompt('Введите кол-во элементов, записываемых в историю')
  31. // Формирование 1-го элемента history
  32. for (step = 0; step < historyDeep; step++) {
  33. VangaNumber = (Math.random() > 0.5) ? 1 : 2;
  34. console.log(`Гадалка задумала: ${VangaNumber}`);
  35. userNumber = prompt('Введите одно из чисел: 1 или 2','');
  36. if (!(userNumber === null)) {
  37. if (!(userNumber === "")) {
  38. if (userNumber == 1 || userNumber == 2) {
  39. history += userNumber;
  40. VangaNumber == userNumber ? alert(`Гадалка угадала, что ты загадал ${userNumber} `) : alert('Гадалка не угадала твое число')
  41. }
  42. else {
  43. alert("Ошибка ввода. Нужно ввести число 1 или 2");
  44. step--;
  45. }
  46. }
  47. else {
  48. alert("Ошибка ввода. Нужно ввести число 1 или 2");
  49. step--;
  50. }
  51. }
  52. else break;
  53. }
  54. console.log(`history=${ history }`);
  55. // Формирование 2-ой и более строк history и внесение статистики в predictArray
  56. while (!(userNumber === null)) {
  57. //Проверка наличия записи в predictArray
  58. if (!(history in predictArray)) { VangaNumber = (Math.random() > 0.5) ? 1 : 2;
  59. console.log(`Гадалка задумала: ${VangaNumber}`); }
  60. else { VangaNumber = predictArray[history];
  61. console.log(`Гадалка задумала: ${VangaNumber}`);}
  62. userNumber = prompt('Введите одно из чисел: 1 или 2','')
  63. if (!(userNumber === null)) {
  64. if (!(userNumber === "")) {
  65. if (userNumber == 1 || userNumber == 2) {
  66. VangaNumber == userNumber ? alert(`Гадалка угадала, что ты загадал ${userNumber} `) : alert('Гадалка не угадала твое число');
  67. //Перезапись нужного элемента массива predictArray
  68. predictArray[history] = userNumber;
  69. history+=userNumber;
  70. history=history.slice(1);
  71. console.log(`history=${history}`);
  72. console.log(predictArray);
  73. }
  74. else {
  75. alert("Ошибка ввода. Нужно ввести число 1 или 2");
  76. step--;
  77. }
  78. }
  79. else {
  80. alert("Ошибка ввода. Нужно ввести число 1 или 2");
  81. step--;
  82. }
  83. }
  84. else break;
  85. }
  86. console.log(`predictArray=`);
  87. console.log(predictArray);
  88. const task20predictArray = document.createElement('p');
  89. task20predictArray.innerText = `predictArray=${JSON.stringify(predictArray)}`;
  90. task20block.appendChild(task20predictArray);
  91. }