Eduardosfgg / new-project

0 stars 0 forks source link

hw8 #23

Open Eduardosfgg opened 9 months ago

Eduardosfgg commented 9 months ago

exercise 1

function countUniqueSymbols(array) {

// Створюємо порожній об'єкт для збереження унікальних символів

var uniqueSymbols = {};

// Проходимося по кожному числу в масиві

for (var i = 0; i < array.length; i++) {

// Додаємо кожне число як ключ у об'єкт uniqueSymbols

uniqueSymbols[array[i]] = true;

}

// Повертаємо кількість ключів у об'єкті uniqueSymbols

return Object.keys(uniqueSymbols).length;

}

// Приклад використання

var numbers = [1, 4, 5, 1, 1, 3];

var uniqueCount = countUniqueSymbols(numbers);

console.log(uniqueCount); // 4

exercise 2

function checkKnightMove(currentPosition, targetPosition) {

const currentRow = currentPosition[0];

const currentCol = currentPosition[1];

const targetRow = targetPosition[0];

const targetCol = targetPosition[1];

// Перевірка, чи рух коня відбувається на допустиму клітку

if (targetRow < 1 || targetCol < 1) {

return false;

}

// Перевірка, чи рух коня відбувається на одну з дозволених клітин

const possibleMoves = [

[2, 1],

[1, 2],

[-1, 2],

[-2, 1],

[-2, -1],

[-1, -2],

[1, -2],

[2, -1]

];

for (let move of possibleMoves) {

const newRow = currentRow + move[0];

const newCol = currentCol + move[1];

if (newRow === targetRow && newCol === targetCol) {

  return true;

}

}

return false;

}

// Приклад використання

const currentPosition = [2, 3];

const targetPosition = [4, 4];

const isPossible = checkKnightMove(currentPosition, targetPosition);

console.log(isPossible); // виведе true, оскільки можливо пересунути коня з клітки [2, 3] на клітку [4, 4]

последние задание

function isValid(s) {

const stack = [];

const openingBrackets = ['(', '{', '['];

const closingBrackets = [')', '}', ']'];

const bracketPairs = { ')': '(', '}': '{', ']': '[' };

for (let i = 0; i < s.length; i++) {

const char = s.charAt(i);

if (openingBrackets.includes(char)) {

  stack.push(char);

} else if (closingBrackets.includes(char)) {

  if (stack.length === 0) {

    return false; // Закриваюча дужка без відкриваючої

  }

  const lastOpeningBracket = stack.pop();

  if (lastOpeningBracket !== bracketPairs[char]) {

    return false; // Закриваюча дужка не відповідає останній відкриваючій

  }

}

}

return stack.length === 0; // Перевіряємо, що всі відкриваючі дужки були правильно закриті

}

// Приклад 1:

const s1 = "{[()]}";

console.log(isValid(s1)); // true

// Приклад 2:

const s2 = "{[()]";

console.log(isValid(s2)); // false

exercise 3

class Point {

constructor(x, y) {

this.x = x;

this.y = y;

}

}

function calculateTriangleArea(A, B, C) {

// Використовуємо формулу площі трикутника за координатами точок

let area = Math.abs((A.x(B.y-C.y) + B.x(C.y-A.y) + C.x*(A.y-B.y)) / 2);

return area;

}

// Створюємо об'єкти точок A, B, C

let A = new Point(0, 0);

let B = new Point(0, 5);

let C = new Point(3, 0);

// Обчислюємо площу трикутника ABC

let triangleArea = calculateTriangleArea(A, B, C);

console.log(triangleArea);