//ДЗ: Вложенные декларативные структуры и код в них. Отображение циклических и древовидных структур. Циклы. //html tree let body = { tagName: 'body', children: [{ tagName: 'div', children: [{ tagNAme: 'span', children: 'Enter a data please:' }, { tagNAme: 'br' }, { tagNAme: 'input', attributs: { type: 'text', id: 'text' } }, { tagNAme: 'input', attributs: { type: 'text', id: 'surname' } } ] }, { tagName: 'div', children: [{ tagNAme: 'button', children: 'OK', attributs: { id: 'ok' } }, { tagNAme: 'button', children: 'Cancel', attributs: { id: 'cancel' } } ] } ] } //declarative fields /* let notebook = { brand: prompt("Enter a brand"), type: prompt("Enter a type"), model: prompt("Enter a model"), ram: +prompt("Enter ram value"), size: prompt("Enter display size"), weight:+prompt("Enter weight"), resolution: { width: +prompt("Enter resolution weight"), height: +prompt("Enter resolution height"), }, }; let phone = { brand: prompt("Enter a brand"), model: prompt("Enter a model"), ram: +prompt("Enter ram value"), color: prompt("Enter color"), }; let person = { name: prompt("Enter name"), surname: prompt("Enter surname"), married: confirm('Are you merried?') } //object links person.smartphone = phone; person.laptop = notebook; notebook.owner = person; phone.owner = person; */ //console.log(person.smartphone.owner.laptop.owner.smartphone == person.smartphone);//true //imperative array fill 3 //let arr1 = [prompt('Enter element'), prompt('Enter element'), prompt('Enter element')]; //console.log(arr1); //while confirm /* while (!confirm()) { console.log('not') } //array fill let array = []; let elem; do { elem = prompt('Enter element'); if (elem) { array.push(elem); } else { console.log('enter element'); } } while(elem); console.log(array); */ //array fill nopush /* let array1 = []; let elem1 = prompt('Enter element'); for (let i = 0; elem1; i++){ let elem1 = prompt('Enter element'); if (elem1) { array1[i] = elem1; } else { console.log('enter element'); } } console.log(array1); */ //infinite probability /* Создайте бесконечный цикл, который прерывается с помощью конструкции break, когда Math.random() > 0.9. Код должен подсчитывать количество итераций и вывести это число с помощью alert. */ /* for (let i = 0; i >= 0; i ++ ){ if (Math.random() > 0.9 ){ alert(`${i}`); break; } else { console.log(i); } } */ //empty loop //Сделайте цикл с prompt, который прерывается по нажатию OK и продолжается по нажатию "Отмена" c пустым телом цикла. /* let answ; do { answ = prompt('','1'); console.log(!answ); } while(!answ); */ //progression sum Подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7....) используя цикл for. n = 25; let sum = 0; for (let i = 0; i < n; i++ ){ sum += i; } console.log(sum); //chess one line //Сформировать строку " # # # # # " с помощью цикла for. Длина строки может быть четной и нечетной, и указывается в одном месте в коде. /* function string(length) { let str = ''; for(let i = 0; i < length; i++) str +=' #' document.write(str) } string(30); */ //Сформировать строку c помощью вложенных циклов. Для перевода строки используйте \n. /* let strNum = ''; for (let i =0; i < 10; i++){ strNum +='\n
'; for (let k =0; k < 10; k++){ strNum += `${k}`; } } document.write(strNum); console.log(strNum); */ //chess /* function chessDesc(width, height) { let desk = ''; for (let i = 0; i < width; i++){ desk +='
'; for (let k = 0; k < height; k++){ if(i%2){ desk += `. #`; } else { desk += `# .`; } } } document.write(desk); } chessDesc(15, 30); */ //cubes Сформируйте массив из N элементов, содержащий в себе кубы индексов, т. е: function cubes(arr){ let arrCube = []; for (let i in arr){ arrCube.push(i**3); } return arrCube; } console.log(cubes([1,5,5,5,5,5,,5,])); //multiply table /* C помощью вложенного цикла сформируйте массив массивов "таблица умножения". Для инициализации вложенных массивов используйте arr[i] = [] //в i-тый элемент массива заносится новый пустой массив arr[5][6] должен быть равен, соответственно, 30, arr[7][2] == 14 и так далее. */ let arr = []; for (let i = 0; i < 10; i++){ arr[i] = [i]; //console.log(arr[5]); for (let k = 0; k < 10; k++){ arr[i][k] = k; arr[i][k] = k *i; } } console.log(arr[5][6]); /* matrix to html table Сделайте вложенный цикл, который формирует HTML-таблицу в переменной строкового типа из любого двумерного массива. Т. е. если в нём использовать результат работы предыдущего задания, то получится таблица умножения в HTML (Таблица Пифагора) */ function tableFromArray(arr){ let str = ''; for (let i = 1; i < arr.length; i++) { str +=''; for (let j = 1; j < arr.length; j++){ str +=``; } str +=''; } str +='
${arr[j][i]}
'; document.write(str); } tableFromArray(arr); /* Задание на синий пояс: Треугольник Сформировать следующую строку - треугольник: */ /* .....#..... ....###.... ...#####... ..#######.. .#########. ########### */ function triangle(height){ for (let i = 0; i < height; i++) { for (let k = height; k > i + 1; k--) { //rendering from center to left document.write('.') } for (let j = 0; j < i + 1; j++) { // render center document.write('#') } for (let k = height; k > i + 1 ; k--) { //rendering from center to rigth document.write('.') } document.write("
") } } triangle(6); //Задание на черный пояс: Электронная гадалка let predictArray = []; let history = [1,1,1,0]; console.log(history[3]); let userAnswer = +prompt('enter your number'); history.shift(); history.push(userAnswer); console.log(history); for(let i = 0; i < 4; i++){ predictArray[i] = history; //console.log(predictArray); for(let k = 0; k < 4; k++){ history[k] = []; /* for(let n = 0; n < 4; n++){ predictArray[i][k][n] = []; for(let j = 0; j < 4; j++){ predictArray[i][k][n][j] = -1; } } */ } } console.log(predictArray);