// while confirm // Сделайте цикл с confirm, который продолжается по Отмена и заканчивается по ОК. while_confirm: { while (!confirm('Do you want to continue?')) { continue; } } // array fill // Создайте пустой массив и добавляйте в него элементы, пока пользователь не нажмет Отмена в очередном prompt. // Используйте push для удобства: push array_fill: { let arr = []; let answer; while (answer = prompt('Enter something')) { arr.push(answer); } console.log(arr); } // array fill nopush // Сделайте предыдущее задание, не используя push, а обращаясь к элементам по индексу. array_fill_nopush: { let arr = []; let answer; for (let i = 0; i >= 0; i++) { answer = prompt('Enter something'); if (!answer) { break; } arr[i] = answer; } console.log(arr); } // infinite probability // Создайте бесконечный цикл, который прерывается с помощью конструкции break, когда Math.random() > 0.9. // Код должен подсчитывать количество итераций и вывести это число с помощью alert. infinite_probability: { let i = 0; while (true) { i++; if (Math.random() > 0.9) { break; } } alert(i); } // empty loop // Сделайте цикл с prompt, который прерывается по нажатию OK и продолжается по нажатию "Отмена" c пустым телом цикла. empty_loop: { while (prompt('Enter something') == undefined) { }; } // progression sum // Подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7....) используя цикл for. // Метод Гаусса не применять, наоборот, сделать максимально наивное решение. progression_sum: { function sum(firstNumber, difference, count) { let sum = 0; let value = firstNumber; for (let i = 1; i <= count; i = i + 1) { sum = sum + value; value = value + difference; } alert(sum); } sum(1, 3, 15); } // chess one line // Сформировать строку " # # # # # " с помощью цикла for. Длина строки может быть четной и нечетной, и // указывается в одном месте в коде. chess_one_line: { function createChessBoardLine(lenght) { let str = ''; for (let i = 0; i < lenght; i++) { if (i % 2 == 0) { str += ' '; } else { str += '#'; } } console.log(str); } createChessBoardLine(3); createChessBoardLine(6); createChessBoardLine(10); } // numbers // Сформировать строку c помощью вложенных циклов. Для перевода строки используйте \n. numbers: { let str = ''; for (let i = 0; i < 10; i++) { for (let j = 0; j < 10; j++) { str += j; } str += '\n'; } console.log(str); } // chess // Сформируйте строку с шахматной доской из вложенных циклов. Для перевода строки используйте \n. Код должен // поддерживать легкое изменение размеров доски. chess: { function createChessBoard(rowCount, columnCount) { let str = ''; for (let i = 0; i < rowCount; i++) { for (let j = 0; j < columnCount; j++) { if (i % 2 == 0) { j % 2 == 0 ? str += '.' : str += '#'; } else { j % 2 == 0 ? str += '#' : str += '.'; } } str += '\n'; } console.log(str); } createChessBoard(10, 10); } // cubes // Сформируйте массив из N элементов, содержащий в себе кубы индексов, т. е: // [0,1,8,27,64...] cubes: { function createCubeNumbers(n) { let arr = []; for (let i = 0; i < n; i++) { arr.push(i ** 3); } return arr; } console.log(createCubeNumbers(4)); } // multiply table // C помощью вложенного цикла сформируйте массив массивов "таблица умножения". Для инициализации вложенных // массивов используйте arr[i] = [] //в i-тый элемент массива заносится новый пустой массив // arr[5][6] должен быть равен, соответственно, 30, arr[7][2] == 14 и так далее. multiply_table: { let arr = []; for (let i = 0; i < 10; i++) { arr[i] = []; for (let j = 0; j < 10; j++) { if (i == 0) { arr[0][j] = j; } else if (j == 0) { arr[i][0] = i; } else { arr[i][j] = i * j; } } } console.log(arr); } // read array of objects // Напишите функцию readArrayOfObjects, которая циклически добавляет в массив объекты, которые ввел пользователь. // Пользователь вводит ключи и значения (их в каждом объекте может быть любое количество), используя prompt. // Когда пользователь нажимает "Отмена" в окне prompt, ввод объекта заканчивается и объект добавляется в массив. // Перед вводом следующего объекта пользователю задается вопрос (используя confirm), хочет ли он продолжить это // мучение ввод объектов. При утвердительном ответе, опять работает ввод любюго количества ключей для создания // нового объекта. Функция должна возвращать созданный массив с объектами. read_array_of_objects: { function readArrayOfObjects() { let arr = []; while (true) { arr.push(createObj()); if (!confirm('Do you want to continue?')) { break; } } return arr; } function createObj() { let obj = {}; while (true) { let key = prompt('Enter a key'); if (key == undefined) { break; } let value = prompt('Enter a value'); obj[key] = value; } return obj; } console.log(readArrayOfObjects()); } // ромбик // Сформировать следующую строку - ромбик: generate_rhombus: { function generateRow(rhombusLength, rowLength) { let row = ''; const emptyCellsLength = (rowLength - rhombusLength) / 2; for (let i = 0; i < rowLength; i++) { row += i < emptyCellsLength || i >= emptyCellsLength + rhombusLength ? '.' : '#'; } return row; } function generateRhombus(size) { let rhombus = ''; for (let i = 0; i < size; i++) { let center = Math.floor(size / 2); const halfWidth = i <= center ? i : size - i - 1; const width = halfWidth * 2 + 1; rhombus += generateRow(width, size) + '\n'; } return rhombus; } console.log(generateRhombus(11)); }