//1. Confirms +
// Сохраните в массив ответы на вопросы, заданные с помощью confirm. Используйте литеральный (декларативный)
// синтаксис массивов ([....,....,....])
/*{
    let arr = [confirm("Ты женщина?"), confirm("Тебе есть 18 лет"), confirm("Ты работаешь?")];
    console.log(arr);
}*/

//2. Prompts +
// Сохраните в массив ответы на вопросы, заданные с помощью prompts. Используйте доступ к массиву по индексу
// и присвоение (arr[....] = ....)
/*{
    let array = [];
    array[0] = prompt("Введите ваше имя");
    array[1] = prompt("Введите вашу фамилию");
    array[2] = prompt("Введите ваш возраст");
} */

//3. Item access +
//Попросите пользователя ввести (prompt) индекс в массиве. Выведите значение элемента по этому индексу. Попробуйте так
// же ввести индекс "length".
/*{
    let names = ["Маша", "Катя", "Наташа", "Оля", "Лена"];
    let index = prompt("Введите индекс для выбора имени от 0 до 4");
    alert(names[index]);
    alert(names.length)
}*/

//4. Item change +
// Попросите пользователя ввести (prompt) индекс в массиве, а так же значение для этого индекса. Присвойте в введенный
// индекс введенное значение
/*{
    let names = ["Маша", "Катя"];
    let index = prompt("Введите число(индекс) для добавления в масив от 0 до 10");
    let name = prompt("Введите имя");
    names[index]=name;
} */

//5. Multiply table +
// Создайте таблицу умножения 5x5 используя декларативный синтаксис вложенных массивов const arr = [[....], [....], [....], .....].
// Числа во вложенных массивах должны быть равны произведению индекса внешнего массива на индекс внутреннего массива: arr[2][3] === 6
/*{
    const arr = [[0,0,0,0,0],
               [0,1,2,3,4],
               [0,2,4,6,8],
               [0,3,6,9,12],
               [0,4,8,12,16]];
} */

  //6. Multiply table slice +
//Используя slice создайте массив массивов (другую таблицу/матрицу) из таблицы умножения, в которой не будет нулей
/*{
    const arr = [[0,0,0,0,0], [0,1,2,3,4], [0,2,4,6,8], [0,3,6,9,12], [0,4,8,12,16]];
    const newArr = arr.slice(1,5);
    let a = newArr[0].shift();
    let b = newArr[1].shift();
    let c = newArr[2].shift();
    let d = newArr[3].shift();
}*/

//7. IndexOf Word +
//Спросите у пользователя строку из нескольких слов. Спросите у него искомое слово.
// Выведите, каким по счету является это слово в строке из нескольких слов. Если слово не найдено, выведите сообщение об этом (а не -1)
/*{
    let ask = prompt("Введите несколько слов");
    let word = ask.split(' ');
    alert(`Искомое слово находится под индексом ${(word.indexOf('слово'))}`)
}*/

//8. Reverse +
//Добавьте в массив пять введенных пользователем через prompt элементов(используйте push).
// Создайте другой массив с этими же элементами в обратном порядке. Для этого извлекайте элементы из первого массива
// используя pop, добавляйте их во второй используя push
/*{
    let name = prompt("Введите ваше имя");
    let secondName = prompt("Введите вашу фамилию");
    let patronymic = prompt("Введите ваше отчество");
    let town = prompt("Введите город где вы живете");
    let color = prompt("Введите ваш любимый цвет");

    const profile = [];
    profile.push(name, secondName, patronymic, town, color);

    const profileTwo = [];
    color = profile.pop();
    town = profile.pop();
    patronymic = profile.pop();
    secondName = profile.pop();
    name = profile.pop();
    profileTwo.push(name, secondName, patronymic, town,color);
    console.log(profileTwo);
} */

//9. Reverse 2 +
//Переверните второй массив из предыдущего задания еще раз (последовательность будет как в первом массиве), используя
// shift и unshift
/*{
    let color = prompt("Введите ваш любимый цвет");
    let town = prompt("Введите город где вы живете");
    let patronymic = prompt("Введите ваше отчество");
    let secondName = prompt("Введите вашу фамилию");
    let name = prompt("Введите ваше имя");
    const profile = [];
    profile.push(color, town, patronymic, secondName, name);

    color = profile.shift();
    town = profile.shift();
    patronymic = profile.shift();
    secondName = profile.shift();
    name = profile.shift();
    const profileTwo = [];
    profileTwo.unshift(name, secondName, patronymic, town, color)
    console.log(profileTwo)
} */

//10. Copy +
//Скопируйте массив созданный в задании Multiply table неглубоко
/*{
    const arr = [[0,0,0,0,0],
        [0,1,2,3,4],
        [0,2,4,6,8],
        [0,3,6,9,12],
        [0,4,8,12,16]];

    const copy = [...arr];
    console.log(copy);
} */

//11. Deep Copy +
//Скопируйте массив созданный в задании Multiply table включая вложенные массивы (глубокая копия)
/*{
    let deepCopy = JSON.parse(JSON.stringify(table));
    console.log(deepCopy);
} */

//12. Array Equals +
// Создайте код, в котором будет две переменных с массивами (arr и arr2), которые равны друг другу (arr1 === arr2)
/*{
    const arr = ["Маша","Катя","Наташа"];
    const arr2 = arr;
    console.log(arr === arr2)
}*/

//13. Flat +
// Соберите все элементы всех вложенных массивов из задания Multiply table в один массив.
// Его длина должна быть равна 25.
// Используйте spread-оператор
/*{
    const arr = [[0,0,0,0,0], [0,1,2,3,4], [0,2,4,6,8], [0,3,6,9,12], [0,4,8,12,16]];

    const newArr = [...arr[0], ...arr[1], ...arr[2], ...arr[3], ...arr[4]]
    console.log(newArr)
} */

//14. Destruct +
// Извлеките первую, пятую и девятую букву из строки, введенной пользователем, используя деструктуризацию. Выведите их
/*{
    let word = [prompt("Введите любое слово")];
    let [[a,,,,b,,,,c]] = word;
    console.log(word);
    alert(`Первая буква - ${a}, пятая буква - ${b}, девятая буква - ${c}`);
}*/

//15.  Destruct default +
// Извлеките вторую, четвертую и пятую букву из строки, введенной пользователем, используя деструктуризацию.
// Если в строке таких букв не окажется задайте переменным значение по умолчанию ! (восклицательный знак).
/*{
    let word = [prompt("Введите любое слово")];
    let [[,a,,b,c]] = word;
    if (a === undefined) {
        a = "!";
    } else if (b === undefined && c === undefined) {
        b = "!";
        c = "!";
    } else if (c === undefined) {
        c = "!";}
    alert(`Вторая буква - ${a}, четвертая буква - ${b}, пятая буква - ${c}` )
} */

//16. Multiply table rest +
// Реализуйте задание Multiply table slice, используя оператор rest при деструктуризации. Используйте вложенную деструктуризацию.
// После получения четырех обрезанных вложенных массивов - соберите общий массив без нулей
/*{
    const arr = [[0,0,0,0,0], [0,1,2,3,4], [0,2,4,6,8], [0,3,6,9,12], [0,4,8,12,16]];
    const [[firstArr], [b,...secondArr], [c, ...thirdArr], [d, ...fourArr], [e, ...fiveArr]] = arr;
    const arrNew = [...secondArr, ...thirdArr, ...fourArr, ...fiveArr];

    console.log(arrNew)
}*/

//17. For Alert +
// Есть массив ["John", "Paul", "George", "Ringo"]. Выведите каждое имя отдельным alert(), используя цикл for .... of
/*{
    const names = ["John", "Paul", "George", "Ringo"]
    for (let name of names){
        alert(name)
    }
}*/

// 18. For Select Option +
// Используя заготовку выше, создайте выпадающий список с валютами.
// Элементы выпадающего списка создаются с помощью тэга <option>
/* {
    const currencies = ["USD", "EUR", "GBP", "UAH"]
    let   str = "<select>";
    for (let currency of currencies){
        str += "<option>"+currency + "</option>";
    }
    str += "</select>"
    document.write(str);
} */

//19. Horizontal +
// Аналогично, добейтесь вывода имен в ячейки таблицы по горизонтали (одна строка с четырьмя ячейками)
/*{
    const names = ["John", "Paul", "George", "Ringo"]
    let   str = "<table width='50%' border='2px' bgcolor='yellow'>"
    for (let name of names){
        str +="<td>"+ name +"</td>"
    }
    document.write(str)
}*/

//.21 For Table Vertical +
//Аналогично, добейтесь вывода имен в ячейки таблицы по вертикали(одна колонка с четырьмя строками,
// в каждой строке - одна ячейка)
/*{
    const names = ["John", "Paul", "George", "Ringo"]
    let   str = "<table width='20%' bgcolor='yellow' border='1'>";
    for (let name of names) {
        str += "<tr>" + "</tr>";
        str += "<td>" + name + "</td>"
    }
    str+= "</table>";
    document.write(str);
}*/

//22. For Table Letters +
//Используя заготовку выше, создайте таблицу 3x4. В каждой строке по три ячейки с буквами, четыре строки, так как 4 валюты в массиве.
/*{
    const currencies = ["USD", "EUR", "GBP", "UAH"];
    let   str = "<table border='1'>"
    for (let currency of currencies){
         str += "<tr>" + "</tr>"
        console.log(currency)
        for (let letter of currency){
            str += "<td>" + letter  + "</td>"
            console.log(letter)
        }
    }
    str+= "</table>"
    document.write(str)
}*/

//23. For Multiply Table +
// Выведите таблицу умножения 5x5 из задания Multiply table в таблицу, используя вложенные for .... of и document.write
//Сделайте черезстрочную подсветку - задавайте четным строкам один цвет фона, нечетным - другой
/*{
    const arr = [
        [0,0,0,0,0,0],
        [0,1,2,3,4,5],
        [0,2,4,6,8,10],
        [0,3,6,9,12,15],
        [0,4,8,12,16,20],
        [0,5,10,15,20,25]
    ];
    let str = "<table>"
    let i = 1

    for (let tr of arr){

        if (i++ % 2 === 0){
            str += '<tr style="background-color: lightgray;">'
        }else{
            str += "<tr>"
        }
        for (let td of tr){
            str += "<td>" + td + "</td>"
        }
        str += "</tr>"
    }

    str += "</table>"
    document.write(str)
} */

//24. Function Capitalize +
// Реализуйте задачу String: capitalize как отдельную функцию:
/*{
    const capitalize = str => {
        let result = str[0].toUpperCase() + str.slice(1).toLowerCase();
        return result
    }
    console.log(capitalize("cANBerRa")) //Canberra
} */

//25. Map Capitalize +
// Пусть пользователь вводит строку. Разбейте её по пробелам. Используя map и capitalize создайте массив в котором
// каждое слово будет с большой буквы. Соберите массив в строку обратно
/*{
    const ask = prompt("Введите несколько слов");
    const arr = ask.split(` `)
    const capitalize = arr.map(arr => arr[0].toUpperCase() + arr.substring(1))

    console.log(capitalize);
    console.log(capitalize.join(' '))
}*/

//26. Filter Lexics
// Пусть пользователь вводит строку. Разбейте её по пробелам. Используя filter верните true если элемент массива не
// состоит в определенном массиве недопустимых слов. Если же элемент массива - недопустимое слово, функция, переданная
// в filter должна возвращать false. Соберите массив в строку обратно.

//27. Beep Lexics
// Пусть пользователь вводит строку. Разбейте её по пробелам. Используя map и тернарный оператор верните из функции
// слово без изменений, если оно не состоит в каком-то другом массиве запрещенных слов. Если же слово состоит в этом
// списке, функция должна вернуть слово BEEP. Соберите массив обратно в строку через пробел. Таким образом вы сможете
// реализовать замену нескольких запрещенных слов на BEEP.


//28. Reduce HTML +-
// Реализуйте задачу For Select Option используя reduce
/*{
    const currencies = ["USD", "EUR", "GBP", "UAH"];
    let str = "<select>";
    str += currencies.reduce( (a,b) => a + "<option>"+ b + "</option>", "");
    str += "</select>";
    document.write(str);
}*/


