//html tree
let body = {
    tagName: 'body',
    subTags: [
        {
            tagName: 'div',
            subTags: [
                {
                    tagName: 'span',
                    text: 'Enter a data please: '
                },
                {
                    tagName: 'br'
                },
                {
                    tagName: 'input',
                    attrs: {
                        type: 'text',
                        id: 'name'
                    }
                },
                {
                    tagName: 'input',
                    attrs: {
                        type: 'text',
                        id: 'surname'
                    }
                }
            ]
         },
        {
            tagName: 'div',
            subTags: [
                {
                    tagName: 'button',
                    attrs: {
                        id: 'ok'
                    },
                    text: 'OK'
                },
                {
                    tagName: 'button',
                    attrs: {
                        id: 'cancel'
                    },
                    text: 'Cancel'
                },
            ]
        }
    ]
}

body.subTags[1].subTags[1].text
body.subTags[1].subTags[1].attrs.id

//declarative fields
    // let laptop = {
    //     brand: prompt('Enter a brand of the laptop'),
    //     type:  prompt('Enter a type of the laptop'),
    //     model: prompt('Enter a model of the laptop'),
    //     ram: +prompt('Enter a ram size of the laptop'),
    //     size: prompt('Enter a size of the laptop'),
    //     weight: +prompt('Enter a weight of the laptop'),
    //     resolution: {
    //         width: +prompt('Enter a display resolution (width) of the laptop'),
    //         height: +prompt('Enter a display resolution (height) of the laptop'),
    //     },
    // }

    // let phone = {
    //     brand: prompt('Enter a brand of the phone'),
    //     model: prompt('Enter a model of the phone'),
    //     ram: +prompt('Enter a ram size of the phone'),
    //     color: prompt('Enter a color of the phone'),
    // }

    // let person = {
    //     name: prompt('Enter the person\'s name'),
    //     surname: prompt('Enter the person\'s surname'),
    //     married: confirm('Is this person married?'),
    // }

//object links 
    // person.laptop = laptop
    // person.smartphone = phone
    // laptop.owner = person
    // phone.owner = person

//imperative array fill 3
    // let array = []
    // for (let i = 0; i < 3; i++) {
    //     array[i] = prompt('?')
    // }

//while confirm
    // let counter = 0
    // while (!confirm('Нажмите отмена')){
    //     counter++
    //     if (counter == 5) {
    //         alert('Еще не надоело?')
    //     }
    // }; 

//array fill
    // let zoo = []
    // while(true) {
    //     let newAnimal = prompt('Введите название зверушки')
    //     if(newAnimal == null) {
    //         break;
    //     }
    //     zoo.push(newAnimal);
    // }

//array fill nopush
    // let zoo = []
    // let i = 0
    // while(true) {
    //     let newAnimal = prompt('Введите название зверушки')
    //     if(newAnimal == null) {
    //         break;
    //     }
    //     zoo[i] = newAnimal
    //     i++
    // }

//infinite probability
    // let counter = 0
    // while (true) {
    //     counter++
    //     if (Math.random() > 0.9) {
    //         alert(counter)
    //         break
    //     }
    // }

//empty loop
    // while (prompt('Скинь сотку на карту плез') == null);

//progression sum
    // let n = +prompt('До какого числа хотите считать?')
    // let sum = 0
    // for (let i = 1; i < n; i += 3) {
    //     sum += i;
    // }
    // alert(sum)

//chess one line 
    // let length = prompt ('Укажите длину строки пожалуйста прошу вас')
    // let line = '';
    // for (let i = 0; i < length; i++) {
    //     if (i % 2 == 0) {
    //         line += ' '
    //     } else {
    //         line += '#'
    //     }
    // }
    // console.log(`"${line}"`)

//numbers 
    // let string = ''
    // for (let i = 0; i < 10; i++) {
    //     for (let j = 0; j < 10; j++) {
    //         string += j
    //     }
    //     string += '\n'
    // }

//chess 
    // let length = +prompt ('Укажите размер поля (x)')
    // let height = +prompt ('Укажите размер поля (y)')
    // let line = '';
    // for (let i = 0; i < height; i++ ) {
    //     for (let j = 0; j < length; j++) {
    //         if (i % 2 == 0) {
    //             if (j % 2 == 0) {
    //                 line += '.'
    //             } else {
    //                 line += '#'
    //             }
    //         } else {
    //             if (j % 2 == 0) {
    //                 line += '#'
    //             } else {
    //                 line += '.'
    //             }
    //         }
    //     }
    //     line += '\n'
    // }
    // console.log(line)

//cubes 
    // let n = +prompt('Сколько элементов в массиве?')
    // let arr = [];
    // for (let i = 0; i < n; i++) {
    //     arr[i] = i**3
    // }

//multiply table
let multiplyTable = []
for (let i = 0; i <=10; i++) {
    multiplyTable[i] = []
    for (let j = 0; j <=10; j++) {
        multiplyTable[i][j] = i * j
    }
}

//matrix to html table
document.write('<table>')
for (let i = 0; i < multiplyTable.length; i++) {
    document.write('<tr>')
    if (i == 0) {
        document.write ('<td>&#9959;</td>')
    } else {
        document.write('<td>' + i + '</td>')
    }
    for (let j = 1; j < multiplyTable[i].length; j++) {
        if (i == 0) {
            document.write('<td>' + multiplyTable[1][j] + '</td>')
        } else {
            document.write('<td>' + multiplyTable[i][j] + '</td>')
        }

    }
    document.write('</tr>')
}
document.write('</table>')

//Задание на синий пояс: Треугольник
let triangleHeight = +prompt('Высота треугольника: ')
let triangle = ''
for (let i = 0; i < triangleHeight; i ++) {
    let row = ''
    let dot = ''
    let hash = ''
    for (let j = triangleHeight - (i + 1); j > 0; j--) {
        dot += '.'
    }

    for (let j = 0; j < 2 * i + 1; j++) {
        hash += '#'
    }
    row += (dot + hash + dot + '\n')
    triangle += row;
}
console.log(triangle)

//Задание на черный пояс: Электронная гадалка
//комментарии пишу чисто для себя, чтобы не запутаться
let predictArray = [];
for (let f = 0; f <=1; f++) {
    predictArray[f] = [];
    for (let u = 0; u <= 1; u++) {
        predictArray[f][u] = [];
        for (let c = 0; c <= 1; c++) {
            predictArray[f][u][c] = [];
            for (let k = 0; k <= 1; k++) {
                predictArray[f][u][c][k] = -1;
            }
        }
    }
}

let history = [1, 1, 1, 1,]
let points = 0;
let counter = 0;
while (true) {
    //Делаем предсказание, выводим его в консоль
    if (predictArray[history[0]][history[1]][history[2]][history[3]] === -1) {
        console.log('Предсказание гадалки: ' + (predictArray[history[0]][history[1]][history[2]][history[3]] = Math.round(Math.random())))
    } else {
        console.log('Предсказание гадалки: ' + predictArray[history[0]][history[1]][history[2]][history[3]])
    }

    //просим пользователя сделать его ход и выводим в консоль 
    let userNumber = prompt('Введите 0 или 1')
    if (userNumber === null || userNumber === '') {
        break
    }
    console.log('Ввод пользователя: ' + userNumber)
    counter++

    //если предсказание было правдивым, то отнимаем очки у пользователя
    if (predictArray[history[0]][history[1]][history[2]][history[3]] == userNumber) {
        points--
    } else {
        points++
    }
    alert('Ваш счёт: ' + points)

    //записываем ввод пользователя в массив предсказаний и в историю
    predictArray[history[0]][history[1]][history[2]][history[3]] = +userNumber
    history.shift()
    history.push(+userNumber)
}

//выводим кол-во набранных (ну или потерянных) очков и кол-во ходов
alert('Количество ходов: ' + counter + '. Ваш счёт: ' + points)
