// ДЗ: Циклы
// задание 1 while confirm
{
  while (true) {
    let result = confirm('Продолжить?');
    if (result) {
      // Выполнить действия, когда пользователь нажмет "ОК"
      break;
    }
    // Выполнить действия, когда пользователь нажмет "Отмена"
  }
}
// задание 2 array fill
{
  let items = [];
  while (true) {
    let item = prompt('Введите элемент массива:');
    if (item === null) {
      break;
    }
    items.push(item);
  }
}
// задание 3 array fill nopush
{
  let items = [];
  let i = 0;
  while (true) {
    let item = prompt('Введите элемент массива:');
    if (item === null) {
      break;
    }
    items[i] = item;
    i++;
  }
}
// задание 4 infinite probability
{
  let count = 0;
  while (true) {
    count++;
    if (Math.random() > 0.9) {
      break;
    }
  }
  alert(`Цикл выполнился ${count} раз`);
}
// задание 5 empty loop
{
  while (true) {
    let result = prompt('Продолжить?');
    if (result === null) {
      continue;
    }
    // Выполнить действия, когда пользователь нажмет "ОК"
    break;
  }
}
// задание 6 progression sum
{
  let N = 10;
  let sum = 0;
  for (let i = 1; i <= N; i += 3) {
    sum += i;
  }
  console.log(sum); // 25
}
// задание 7 chess one line
{
  let length = 10;
  let str = '';
  for (let i = 0; i < length; i++) {
    if (i % 2 === 0) {
      str += ' ';
    } else {
      str += '#';
    }
  }
  console.log(str); // " # # # # # "
}
// задание 8 numbers
{
  let str = '';
  for (let i = 0; i < 10; i++) {
    for (let j = 0; j < 10; j++) {
      str += j;
    }
    str += '\n';
  }
  console.log(str);
}
// задание 9 chess
{
  let size = 8;
  let str = '';
  for (let i = 0; i < size; i++) {
    for (let j = 0; j < size; j++) {
      if ((i + j) % 2 === 0) {
        str += '.';
      } else {
        str += '#';
      }
    }
    str += '\n';
  }
  console.log(str);
}
// задание 10 cubes
{
  let n = 5;
  let arr = [];
  for (let i = 0; i < n; i++) {
    arr.push(i ** 3);
  }
  console.log(arr); // [0, 1, 8, 27, 64]
}
// задание 11 multiply table
{
  let arr = [];
  for (let i = 0; i <= 10; i++) {
    arr[i] = [];
    for (let j = 0; j <= 10; j++) {
      arr[i][j] = i * j;
    }
  }
  console.log(arr);
}
// задание 12 read array of objects
{
  function readArrayOfObjects() {
    let objects = [];
    while (true) {
      let obj = {};
      while (true) {
        let key = prompt('Введите ключ:');
        if (key === null) break;
        let value = prompt('Введите значение:');
        if (value === null) break;
        obj[key] = value;
      }
      objects.push(obj);
      if (!confirm('Хотите ввести еще один объект?')) break;
    }
    return objects;
  }
}
// задание 13 ромбик
{
  let size = 10;
  let middle = Math.floor(size / 2);
  for (let i = 0; i < size; i++) {
    let row = '';
    for (let j = 0; j < size; j++) {
      if (Math.abs(middle - i) + Math.abs(middle - j) <= middle) {
        row += '#';
      } else {
        row += '.';
      }
    }
    console.log(row);
  }
}
// задание 14 DOM: multiply table
{
  let table = document.createElement('table');
  for (let i = 1; i <= 10; i++) {
    let row = document.createElement('tr');
    for (let j = 1; j <= 10; j++) {
      let cell = document.createElement('td');
      cell.innerText = i * j;
      row.appendChild(cell);
    }
    table.appendChild(row);
  }
  document.body.appendChild(table);
}
// задание 15 DOM: highlight cell
{
  let table = document.createElement('table');
  for (let i = 1; i <= 10; i++) {
    let row = document.createElement('tr');
    for (let j = 1; j <= 10; j++) {
      let cell = document.createElement('td');
      cell.innerText = i * j;
      cell.addEventListener('mouseover', function () {
        this.style.backgroundColor = 'yellow';
      });
      cell.addEventListener('mouseout', function () {
        this.style.backgroundColor = '';
      });
      row.appendChild(cell);
    }
    table.appendChild(row);
  }
  document.body.appendChild(table);
}
// задание 16 DOM: Highlight cross
{
  const table = document.getElementById('table');

  table.addEventListener('mouseover', highlight);
  table.addEventListener('mouseout', unhighlight);

  function highlight(event) {
    const td = event.target;
    const tr = td.parentElement;
    const colIndex = td.cellIndex;
    const rowIndex = tr.rowIndex;

    // Подсветить ячейку
    td.style.backgroundColor = 'yellow';

    // Подсветить строку
    for (let i = 0; i < tr.children.length; i++) {
      tr.children[i].style.backgroundColor = 'yellow';
    }

    // Подсветить столбец
    for (let i = 0; i < table.rows.length; i++) {
      table.rows[i].children[colIndex].style.backgroundColor = 'yellow';
    }
  }

  function unhighlight(event) {
    const td = event.target;
    const tr = td.parentElement;
    const colIndex = td.cellIndex;
    const rowIndex = tr.rowIndex;

    // Снять подсветку с ячейки
    td.style.backgroundColor = '';

    // Снять подсветку со строки
    for (let i = 0; i < tr.children.length; i++) {
      tr.children[i].style.backgroundColor = '';
    }

    // Снять подсветку со столбца
    for (let i = 0; i < table.rows.length; i++) {
      table.rows[i].children[colIndex].style.backgroundColor = '';
    }
  }
}
