script.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. //ДЗ: Вложенные декларативные структуры и код в них. Отображение циклических и древовидных структур. Циклы.
  2. //html tree
  3. let body = {
  4. tagName: 'body',
  5. children: [{
  6. tagName: 'div',
  7. children: [{
  8. tagNAme: 'span',
  9. children: 'Enter a data please:'
  10. },
  11. {
  12. tagNAme: 'br'
  13. },
  14. {
  15. tagNAme: 'input',
  16. attributs: {
  17. type: 'text',
  18. id: 'text'
  19. }
  20. },
  21. {
  22. tagNAme: 'input',
  23. attributs: {
  24. type: 'text',
  25. id: 'surname'
  26. }
  27. }
  28. ]
  29. },
  30. {
  31. tagName: 'div',
  32. children: [{
  33. tagNAme: 'button',
  34. children: 'OK',
  35. attributs: {
  36. id: 'ok'
  37. }
  38. },
  39. {
  40. tagNAme: 'button',
  41. children: 'Cancel',
  42. attributs: {
  43. id: 'cancel'
  44. }
  45. }
  46. ]
  47. }
  48. ]
  49. }
  50. //declarative fields
  51. /* let notebook = {
  52. brand: prompt("Enter a brand"),
  53. type: prompt("Enter a type"),
  54. model: prompt("Enter a model"),
  55. ram: +prompt("Enter ram value"),
  56. size: prompt("Enter display size"),
  57. weight:+prompt("Enter weight"),
  58. resolution: {
  59. width: +prompt("Enter resolution weight"),
  60. height: +prompt("Enter resolution height"),
  61. },
  62. };
  63. let phone = {
  64. brand: prompt("Enter a brand"),
  65. model: prompt("Enter a model"),
  66. ram: +prompt("Enter ram value"),
  67. color: prompt("Enter color"),
  68. };
  69. let person = {
  70. name: prompt("Enter name"),
  71. surname: prompt("Enter surname"),
  72. married: confirm('Are you merried?')
  73. }
  74. //object links
  75. person.smartphone = phone;
  76. person.laptop = notebook;
  77. notebook.owner = person;
  78. phone.owner = person;
  79. */
  80. //console.log(person.smartphone.owner.laptop.owner.smartphone == person.smartphone);//true
  81. //imperative array fill 3
  82. //let arr1 = [prompt('Enter element'), prompt('Enter element'), prompt('Enter element')];
  83. //console.log(arr1);
  84. //while confirm
  85. /*
  86. while (!confirm()) {
  87. console.log('not')
  88. }
  89. //array fill
  90. let array = [];
  91. let elem;
  92. do {
  93. elem = prompt('Enter element');
  94. if (elem) {
  95. array.push(elem);
  96. } else {
  97. console.log('enter element');
  98. }
  99. }
  100. while(elem);
  101. console.log(array); */
  102. //array fill nopush
  103. /* let array1 = [];
  104. let elem1 = prompt('Enter element');
  105. for (let i = 0; elem1; i++){
  106. let elem1 = prompt('Enter element');
  107. if (elem1) {
  108. array1[i] = elem1;
  109. } else {
  110. console.log('enter element');
  111. }
  112. }
  113. console.log(array1); */
  114. //infinite probability
  115. /* Создайте бесконечный цикл, который прерывается с помощью конструкции break,
  116. когда Math.random() > 0.9. Код должен подсчитывать количество итераций и вывести это число с помощью alert. */
  117. /* for (let i = 0; i >= 0; i ++ ){
  118. if (Math.random() > 0.9 ){
  119. alert(`${i}`);
  120. break;
  121. }
  122. else {
  123. console.log(i);
  124. }
  125. } */
  126. //empty loop
  127. //Сделайте цикл с prompt, который прерывается по нажатию OK и продолжается по нажатию "Отмена" c пустым телом цикла.
  128. /* let answ;
  129. do {
  130. answ = prompt('','1');
  131. console.log(!answ);
  132. } while(!answ); */
  133. //progression sum Подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7....) используя цикл for.
  134. n = 25;
  135. let sum = 0;
  136. for (let i = 0; i < n; i++ ){
  137. sum += i;
  138. }
  139. console.log(sum);
  140. //chess one line
  141. //Сформировать строку " # # # # # " с помощью цикла for. Длина строки может быть четной и нечетной, и указывается в одном месте в коде.
  142. /* function string(length) {
  143. let str = '';
  144. for(let i = 0; i < length; i++)
  145. str +=' #'
  146. document.write(str)
  147. }
  148. string(30); */
  149. //Сформировать строку c помощью вложенных циклов. Для перевода строки используйте \n.
  150. /* let strNum = '';
  151. for (let i =0; i < 10; i++){
  152. strNum +='\n <br>';
  153. for (let k =0; k < 10; k++){
  154. strNum += `${k}`;
  155. }
  156. }
  157. document.write(strNum);
  158. console.log(strNum); */
  159. //chess
  160. /* function chessDesc(width, height) {
  161. let desk = '';
  162. for (let i = 0; i < width; i++){
  163. desk +='<br>';
  164. for (let k = 0; k < height; k++){
  165. if(i%2){
  166. desk += `. #`;
  167. } else {
  168. desk += `# .`;
  169. }
  170. }
  171. }
  172. document.write(desk);
  173. }
  174. chessDesc(15, 30); */
  175. //cubes Сформируйте массив из N элементов, содержащий в себе кубы индексов, т. е:
  176. function cubes(arr){
  177. let arrCube = [];
  178. for (let i in arr){
  179. arrCube.push(i**3);
  180. }
  181. return arrCube;
  182. }
  183. console.log(cubes([1,5,5,5,5,5,,5,]));
  184. //multiply table
  185. /* C помощью вложенного цикла сформируйте массив массивов "таблица умножения". Для инициализации вложенных массивов используйте
  186. arr[i] = [] //в i-тый элемент массива заносится новый пустой массив
  187. arr[5][6] должен быть равен, соответственно, 30, arr[7][2] == 14 и так далее. */
  188. let arr = [];
  189. for (let i = 0; i < 10; i++){
  190. arr[i] = [i];
  191. //console.log(arr[5]);
  192. for (let k = 0; k < 10; k++){
  193. arr[i][k] = k;
  194. arr[i][k] = k *i;
  195. }
  196. }
  197. console.log(arr[5][6]);
  198. /* matrix to html table
  199. Сделайте вложенный цикл, который формирует HTML-таблицу в переменной
  200. строкового типа из любого двумерного массива. Т. е. если в нём использовать результат
  201. работы предыдущего задания, то получится таблица умножения в HTML (Таблица Пифагора)
  202. */
  203. function tableFromArray(arr){
  204. let str = '<table>';
  205. for (let i = 1; i < arr.length; i++) {
  206. str +='<tr>';
  207. for (let j = 1; j < arr.length; j++){
  208. str +=`<td> ${arr[j][i]}</td>`;
  209. }
  210. str +='</tr>';
  211. }
  212. str +='</table>';
  213. document.write(str);
  214. }
  215. tableFromArray(arr);
  216. /* Задание на синий пояс: Треугольник
  217. Сформировать следующую строку - треугольник: */
  218. /*
  219. .....#.....
  220. ....###....
  221. ...#####...
  222. ..#######..
  223. .#########.
  224. ########### */
  225. function triangle(height){
  226. for (let i = 0; i < height; i++) {
  227. for (let k = height; k > i + 1; k--) { //rendering from center to left
  228. document.write('.')
  229. }
  230. for (let j = 0; j < i + 1; j++) { // render center
  231. document.write('#')
  232. }
  233. for (let k = height; k > i + 1 ; k--) { //rendering from center to rigth
  234. document.write('.')
  235. }
  236. document.write("<br>")
  237. }
  238. }
  239. triangle(6);
  240. //Задание на черный пояс: Электронная гадалка
  241. let predictArray = [];
  242. let history = [1,1,1,0];
  243. console.log(history[3]);
  244. let userAnswer = +prompt('enter your number');
  245. history.shift();
  246. history.push(userAnswer);
  247. console.log(history);
  248. for(let i = 0; i < 4; i++){
  249. predictArray[i] = history;
  250. //console.log(predictArray);
  251. for(let k = 0; k < 4; k++){
  252. history[k] = [];
  253. /* for(let n = 0; n < 4; n++){
  254. predictArray[i][k][n] = [];
  255. for(let j = 0; j < 4; j++){
  256. predictArray[i][k][n][j] = -1;
  257. }
  258. } */
  259. }
  260. }
  261. console.log(predictArray);