script.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. // while confirm
  2. // Сделайте цикл с confirm, который продолжается по Отмена и заканчивается по ОК.
  3. while_confirm: {
  4. while (!confirm('Do you want to continue?')) {
  5. continue;
  6. }
  7. }
  8. // array fill
  9. // Создайте пустой массив и добавляйте в него элементы, пока пользователь не нажмет Отмена в очередном prompt.
  10. // Используйте push для удобства: push
  11. array_fill: {
  12. let arr = [];
  13. let answer;
  14. while (answer = prompt('Enter something')) {
  15. arr.push(answer);
  16. }
  17. console.log(arr);
  18. }
  19. // array fill nopush
  20. // Сделайте предыдущее задание, не используя push, а обращаясь к элементам по индексу.
  21. array_fill_nopush: {
  22. let arr = [];
  23. let answer;
  24. for (let i = 0; i >= 0; i++) {
  25. answer = prompt('Enter something');
  26. if (!answer) {
  27. break;
  28. }
  29. arr[i] = answer;
  30. }
  31. console.log(arr);
  32. }
  33. // infinite probability
  34. // Создайте бесконечный цикл, который прерывается с помощью конструкции break, когда Math.random() > 0.9.
  35. // Код должен подсчитывать количество итераций и вывести это число с помощью alert.
  36. infinite_probability: {
  37. let i = 0;
  38. while (true) {
  39. i++;
  40. if (Math.random() > 0.9) {
  41. break;
  42. }
  43. }
  44. alert(i);
  45. }
  46. // empty loop
  47. // Сделайте цикл с prompt, который прерывается по нажатию OK и продолжается по нажатию "Отмена" c пустым телом цикла.
  48. empty_loop: {
  49. while (prompt('Enter something') == undefined) { };
  50. }
  51. // progression sum
  52. // Подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7....) используя цикл for.
  53. // Метод Гаусса не применять, наоборот, сделать максимально наивное решение.
  54. progression_sum: {
  55. function sum(firstNumber, difference, count) {
  56. let sum = 0;
  57. let value = firstNumber;
  58. for (let i = 1; i <= count; i = i + 1) {
  59. sum = sum + value;
  60. value = value + difference;
  61. }
  62. alert(sum);
  63. }
  64. sum(1, 3, 15);
  65. }
  66. // chess one line
  67. // Сформировать строку " # # # # # " с помощью цикла for. Длина строки может быть четной и нечетной, и
  68. // указывается в одном месте в коде.
  69. chess_one_line: {
  70. function createChessBoardLine(lenght) {
  71. let str = '';
  72. for (let i = 0; i < lenght; i++) {
  73. if (i % 2 == 0) {
  74. str += ' ';
  75. } else {
  76. str += '#';
  77. }
  78. }
  79. console.log(str);
  80. }
  81. createChessBoardLine(3);
  82. createChessBoardLine(6);
  83. createChessBoardLine(10);
  84. }
  85. // numbers
  86. // Сформировать строку c помощью вложенных циклов. Для перевода строки используйте \n.
  87. numbers: {
  88. let str = '';
  89. for (let i = 0; i < 10; i++) {
  90. for (let j = 0; j < 10; j++) {
  91. str += j;
  92. }
  93. str += '\n';
  94. }
  95. console.log(str);
  96. }
  97. // chess
  98. // Сформируйте строку с шахматной доской из вложенных циклов. Для перевода строки используйте \n. Код должен
  99. // поддерживать легкое изменение размеров доски.
  100. chess: {
  101. function createChessBoard(rowCount, columnCount) {
  102. let str = '';
  103. for (let i = 0; i < rowCount; i++) {
  104. for (let j = 0; j < columnCount; j++) {
  105. if (i % 2 == 0) {
  106. j % 2 == 0 ? str += '.' : str += '#';
  107. } else {
  108. j % 2 == 0 ? str += '#' : str += '.';
  109. }
  110. }
  111. str += '\n';
  112. }
  113. console.log(str);
  114. }
  115. createChessBoard(10, 10);
  116. }
  117. // cubes
  118. // Сформируйте массив из N элементов, содержащий в себе кубы индексов, т. е:
  119. // [0,1,8,27,64...]
  120. cubes: {
  121. function createCubeNumbers(n) {
  122. let arr = [];
  123. for (let i = 0; i < n; i++) {
  124. arr.push(i ** 3);
  125. }
  126. return arr;
  127. }
  128. console.log(createCubeNumbers(4));
  129. }
  130. // multiply table
  131. // C помощью вложенного цикла сформируйте массив массивов "таблица умножения". Для инициализации вложенных
  132. // массивов используйте arr[i] = [] //в i-тый элемент массива заносится новый пустой массив
  133. // arr[5][6] должен быть равен, соответственно, 30, arr[7][2] == 14 и так далее.
  134. multiply_table: {
  135. let arr = [];
  136. for (let i = 0; i < 10; i++) {
  137. arr[i] = [];
  138. for (let j = 0; j < 10; j++) {
  139. if (i == 0) {
  140. arr[0][j] = j;
  141. } else if (j == 0) {
  142. arr[i][0] = i;
  143. } else {
  144. arr[i][j] = i * j;
  145. }
  146. }
  147. }
  148. console.log(arr);
  149. }
  150. // read array of objects
  151. // Напишите функцию readArrayOfObjects, которая циклически добавляет в массив объекты, которые ввел пользователь.
  152. // Пользователь вводит ключи и значения (их в каждом объекте может быть любое количество), используя prompt.
  153. // Когда пользователь нажимает "Отмена" в окне prompt, ввод объекта заканчивается и объект добавляется в массив.
  154. // Перед вводом следующего объекта пользователю задается вопрос (используя confirm), хочет ли он продолжить это
  155. // мучение ввод объектов. При утвердительном ответе, опять работает ввод любюго количества ключей для создания
  156. // нового объекта. Функция должна возвращать созданный массив с объектами.
  157. read_array_of_objects: {
  158. function readArrayOfObjects() {
  159. let arr = [];
  160. while (true) {
  161. arr.push(createObj());
  162. if (!confirm('Do you want to continue?')) {
  163. break;
  164. }
  165. }
  166. return arr;
  167. }
  168. function createObj() {
  169. let obj = {};
  170. while (true) {
  171. let key = prompt('Enter a key');
  172. if (key == undefined) {
  173. break;
  174. }
  175. let value = prompt('Enter a value');
  176. obj[key] = value;
  177. }
  178. return obj;
  179. }
  180. console.log(readArrayOfObjects());
  181. }
  182. // ромбик
  183. // Сформировать следующую строку - ромбик:
  184. generate_rhombus: {
  185. function generateRow(rhombusLength, rowLength) {
  186. let row = '';
  187. const emptyCellsLength = (rowLength - rhombusLength) / 2;
  188. for (let i = 0; i < rowLength; i++) {
  189. row += i < emptyCellsLength || i >= emptyCellsLength + rhombusLength ? '.' : '#';
  190. }
  191. return row;
  192. }
  193. function generateRhombus(size) {
  194. let rhombus = '';
  195. for (let i = 0; i < size; i++) {
  196. let center = Math.floor(size / 2);
  197. const halfWidth = i <= center ? i : size - i - 1;
  198. const width = halfWidth * 2 + 1;
  199. rhombus += generateRow(width, size) + '\n';
  200. }
  201. return rhombus;
  202. }
  203. console.log(generateRhombus(11));
  204. }