123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- //ДЗ: Вложенные декларативные структуры и код в них. Отображение циклических и
- //древовидных структур.Циклы.
- //html tree
- // <body>
- // <div>
- // <span>Enter a data please:</span><br/>
- // <input type='text' id='name'>
- // <input type='text' id='surname'>
- // </div>
- // <div>
- // <button id='ok'>OK</button>
- // <button id='cancel'>Cancel</button>
- // </div>
- // </body>
- const body = {
- tagName: 'body',
- subTags: [
- {
- tagName: 'div',
- subTags: [
- {
- tagName: 'span',
- text: 'Enter a data please:',
- },
- {
- tagName: 'br',
- },
- {
- tagName: 'input',
- attrs: {
- type: 'text',
- id: 'name',
- },
- },
- {
- tagName: 'input',
- attrs: {
- type: 'text',
- id: 'surname',
- },
- },
- ],
- },
- {
- tagName: 'div',
- subTags: [
- {
- tagName: 'button',
- text: 'OK',
- attrs: {
- id: 'ok',
- },
- },
- {
- tagName: 'button',
- text: 'Cancel',
- attrs: {
- id: 'cancel',
- },
- },
- ],
- },
- ],
- };
- // console.log(
- // body.subTags[1].subTags[0].text,
- // 'and',
- // body.subTags[1].subTags[1].text
- // ); //Выведите значения текста во второй кнопке, используя . и [].
- // console.log(body.subTags[0].subTags[3].attrs.id);
- //Выведите значение атрибута id во втором input, используя . и [].
- //declarative fields
- //Как известно, элемент массива и объекта может быть любого типа данных JS,
- //т.е.в коде может быть любое выражение, которое вычисляется в то или иное
- //значение типа данных.А значит, мы можем применять функции для ввода данных
- //типа confirm или prompt:
- // const laptop = {
- // brand: prompt('Enter a brand') || 'HP',
- // type: prompt('Enter a type') || '440 G4',
- // model: prompt('Enter a model') || 'Y7Z75EA',
- // ram: +prompt('Enter a ram') || 4,
- // size: +prompt('Enter a size') || 14,
- // weight: +prompt('Enter a weight') || 1.8,
- // resolution: {
- // width: +prompt('Enter a width') || 1920,
- // height: +prompt('Enter a height') || 1080,
- // },
- // };
- // const {
- // brand,
- // type,
- // model,
- // ram,
- // size,
- // weight,
- // resolution: { width, height },
- // } = laptop;
- // console.log(brand, type, model, ram, size, weight, width, height);
- // const phone = {
- // brand: prompt('Enter a brand') || 'meizu',
- // model: prompt('Enter a model') || 'm2',
- // ram: +prompt('Enter a ram') || 2,
- // color: prompt('Enter a color') || 'black',
- // };
- // const { brand: phoneBrand, model: phoneModel, ram: phoneRam, color } = phone;
- // console.log(phoneBrand, phoneModel, phoneRam, color);
- // const person = {
- // name: prompt('Enter a name') || 'Donald',
- // surname: prompt('Enter a surname') || 'Trump',
- // married: confirm('Married?'),
- // };
- // const { name, surname, married } = person;
- // console.log(name, surname, married);
- //object links
- //Добавьте персоне гаджеты, используя новые поля smartphone и laptop в объекте персоны
- // person.smartphone = phone;
- // person.laptop = laptop;
- //Добавьте владельца в гаджеты, используя новое поле owner в объектах телефона и ноутбука.
- // laptop.owner = person;
- // phone.owner = person;
- //обратите внимание на цикличность ссылок в объектах, если вы все сделали правильно, то
- // console.log(
- // person.smartphone.owner.laptop.owner.smartphone == person.smartphone
- // );
- //imperative array fill 3
- //Создайте пустой массив и добавьте в него три элемента, введенные пользователем
- //(prompt), используя императивный подход(несколько операторов подряд)
- // const emptyArray = [];
- // const firstPrompt = prompt('Write something');
- // const secondPrompt = prompt('Write something else');
- // const thirdPrompt = prompt('Write something again');
- // emptyArray.push(firstPrompt, secondPrompt, thirdPrompt);
- // console.log(emptyArray);
- //while confirm
- //Сделайте цикл с confirm, который продолжается по Отмена и заканчивается по ОК.
- // let ageConfirm;
- // do {
- // ageConfirm = confirm('Do you have more that 18 years old?');
- // } while (!ageConfirm);
- //array fill
- //Создайте пустой массив и добавляйте в него элементы, пока пользователь
- //не нажмет Отмена в очередном prompt.Используйте push для удобства: push
- // const emptyArray = [];
- // let userConfirm;
- // do {
- // userConfirm = prompt('Please select filed!');
- // userConfirm && emptyArray.push(userConfirm);
- // } while (userConfirm);
- // console.log(emptyArray);
- //array fill nopush
- //Сделайте предыдущее задание, не используя push, а обращаясь к элементам по индексу.
- // const emptyArray = [];
- // let userConfirm;
- // do {
- // userConfirm = prompt('Please select filed!');
- // if (userConfirm)
- // emptyArray[emptyArray.length === 0 ? 0 : emptyArray.length] = userConfirm;
- // } while (userConfirm);
- // console.log(emptyArray);
- //infinite probability
- //Создайте бесконечный цикл, который прерывается с помощью конструкции break,
- //когда Math.random() > 0.9.Код должен подсчитывать количество итераций
- //и вывести это число с помощью alert.
- // for (var i = 1; i < Infinity; i++) {
- // if (Math.random() > 0.9) {
- // alert(
- // `Loop made ${i} iterations before Math.random() > 0.9 was equel to true`
- // );
- // break;
- // }
- // console.log(i);
- // }
- //empty loop
- //Сделайте цикл с prompt, который прерывается по нажатию OK и продолжается
- //по нажатию "Отмена" c пустым телом цикла.
- // const promptValue = prompt('How are you');
- // while (is === null) {
- // console.log('executin with empty body of loop');
- // }
- //progression sum
- //Подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7,10,13,16,19,22,25,28)
- //используя цикл for.
- // const progressionSum = (N = 2, startValue = 1, step = 3) => {
- // let sum = startValue;
- // let sumResult = startValue;
- // for (let i = 1; i < N; i++) {
- // sum += step;
- // sumResult += sum;
- // }
- // return sumResult;
- // };
- // console.log(progressionSum(10, 1, 3));
- //chess one line
- //Сформировать строку " # # # # # " с помощью цикла for.
- //Длина строки может быть четной и нечетной, и указывается в одном месте в коде.
- // const chessOneLine = (value = '#', lenght = 5) => {
- // let str = '';
- // for (let i = 0; i < lenght; i++) {
- // str += value;
- // }
- // return str;
- // };
- // console.log(chessOneLine());
- //numbers
- //Сформировать строку c помощью вложенных циклов. Для перевода строки используйте \n.
- // const isertedLoop = (n) => {
- // let table = '';
- // for (let i = 0; i < n; i++) {
- // let row = '';
- // for (let j = 0; j < n; j++) {
- // row += j;
- // }
- // table = `${table}\n${row}`;
- // }
- // return table;
- // };
- // console.log(isertedLoop(10));
- //chess
- //Сформируйте строку с шахматной доской из вложенных циклов.
- //Для перевода строки используйте \n.Код должен поддерживать легкое изменение размеров доски.
- // const chessLoop = (n, firstSighn, secondSighn) => {
- // let table = '';
- // for (let i = 0; i < n; i++) {
- // let row = '';
- // for (let j = 0; j < n; j++) {
- // if (j % 2 === 0) {
- // row += firstSighn;
- // } else {
- // row += secondSighn;
- // }
- // }
- // table = `${table}\n${row}`;
- // }
- // return table;
- // };
- // console.log(chessLoop(10, '.', '#'));
- //cubes
- //Сформируйте массив из N элементов, содержащий в себе кубы индексов, т. е:
- // const cubes = (N = 1, pow = 3) => {
- // const indexesArrayInPow = [];
- // for (let i = 0; i < N; i++) {
- // indexesArrayInPow.push(Math.pow(i, pow));
- // }
- // return indexesArrayInPow;
- // };
- // console.log(cubes(5, 3));
- //multiply table
- //C помощью вложенного цикла сформируйте массив массивов "таблица умножения".
- //Для инициализации вложенных массивов используйте
- //arr[i] = [] //в i-тый элемент массива заносится новый пустой массив
- //arr[5][6] должен быть равен, соответственно, 30, arr[7][2] == 14 и так далее.
- // const multiplyTable = () => {
- // let table = [];
- // for (let i = 0; i < 10; i++) {
- // table[i] = [];
- // for (let j = 0; j < 10; j++) {
- // table[i][j] = i * j;
- // }
- // table;
- // }
- // return table;
- // };
- // const result = multiplyTable();
- // console.log(result[5][6], result[7][2]);
- //matrix to html table
- //Сделайте вложенный цикл, который формирует HTML-таблицу в переменной
- //строкового типа из любого двумерного массива.Т.е.если в нём использовать
- //результат работы предыдущего задания, то получится таблица умножения в HTML
- // const matrixToHtmltable = (twoDimensionalArray) => {
- // const table = document.createElement('table');
- // for (let i = 1; i < twoDimensionalArray.length; i++) {
- // const tr = document.createElement('tr');
- // for (let j = 1; j < twoDimensionalArray[i].length; j++) {
- // const th = document.createElement('th');
- // th.textContent = `${j}*${i}=${twoDimensionalArray[j][i]}`;
- // tr.appendChild(th);
- // }
- // table.appendChild(tr);
- // }
- // return table;
- // };
- // const tableMatrix = matrixToHtmltable(result);
- // const matrixDiv = document.getElementById('matrix');
- // matrixDiv.append(tableMatrix);
- // console.log(matrixDiv);
- //Задание на синий пояс: Треугольник
- //Сформировать следующую строку - треугольник:
- // const trangl = (firstSign = '.', secondSign = '#') => {
- // let firTree = '';
- // const middle = [5];
- // for (let i = 0; i < 6; i++) {
- // let row = '';
- // if (i !== 0) {
- // middle.unshift(middle[0] - 1);
- // middle.push(middle[middle.length - 1] + 1);
- // }
- // for (let j = 0; j < 11; j++) {
- // if (middle.includes(j)) {
- // row += secondSign;
- // } else {
- // row += firstSign;
- // }
- // }
- // firTree = `${firTree}\n${row}`;
- // }
- // return firTree;
- // };
- // console.log(trangl());
- //Задание на черный пояс: Электронная гадалка
- //Пользователь вводит 0 или 1. Гадалка пытается угадать, что введет пользователь
- //(естественно перед его вводом), но не показывает пользователю,
- //что бы пользователь не выбрал противоположный вариант, а выводит
- //предполагаемый вариант в консоль, скрытую от пользователя.
- // function makeDimensional(dim, lvl, arr) {
- // if (lvl === 1) return [];
- // if (!lvl) lvl = dim;
- // if (!arr) arr = [];
- // for (let i = 0, l = dim; i < l; i += 1) {
- // arr[i] = makeDimensional(dim, lvl - 1, arr[i]);
- // }
- // return arr;
- // }
- // const predictArray = makeDimensional(4);
- // const hystory = [1, 1, 1, 1];
- // const internalGame = () => {
- // const answer = confirm(
- // 'Choose OK or Cancel to play in this game and will see if you guess answer of PC '
- // )
- // ? 0
- // : 1;
- // predictArray[hystory[0]][hystory[1]][hystory[2]][hystory[3]] = answer;
- // console.log(hystory, 'hystory before changes');
- // hystory.shift();
- // hystory.push(answer);
- // console.log(hystory, 'hystory after changes');
- // console.log(predictArray);
- // internalGame();
- // };
- // internalGame();
|