#javascript #массивы #функции
Spichonees (составленное имя) живут в стране Spichland, где нет пола. Spichonees - большие любовники, поэтому каждый Spichonee любит любого другого Spichonee. К сожалению, иногда бывают ситуации, когда Spichonee A любит Spichonee B, Spichonee B любит Spichonee C и Spichonee C любит Spichonee A. Это явление называется любовным треугольником. задача Ваша задача - реализовать функцию getLoveTrianglesCount, которая вычисляет количество феноменов любви треугольников. Функция принимает массив целых чисел как единственный параметр. Целое число k на n-ом месте означает, что n-ый Spichonee любит kth Spichonee. // 1 2 3 Spichonees let count = getLoveTrianglesCount([2, 3, 1]); console.log(count); // 1 /** 1st Spichonee loves 2nd Spichonee. 2nd Spichonee loves 3rd Spichonee. 3rd Spichonee love 1st Spichonee. There is love triangle. */ Ниже то что я сделал, но большая часть тестов не проходит function getLoveTrianglesCount(preferences = []) { // your implementation let length = preferences.length; let count = 0; for (let i = 0; iОтветы
Ответ 1
Делаем три шага, а не два. Количество циклов втрое меньше числа участвующих. Каждый шаг проверяем зацикленность на себя. (Ещё стоит проверять на валидность числа в массиве) В развернутом виде: function getLoveTrianglesCount(preferences = []) { // your implementation let length = preferences.length; let count = 0; for (let i = 0; iОтвет 2
Если я все правильно понял, а именно: Каждый элемент массива - это Spichonee Нужно найти в массиве множества вида - 3,4,5 или 12,13,14 и т.д. Посчитать их кол-во. То как вариант - https://codepen.io/qwerty_wasd/pen/MqVBzd const getLoveTrianglesCount = arrSpichonees => [...new Set(arrSpichonees.filter(e => e && arrSpichonees.includes(e+1) && arrSpichonees.includes(e+2)))].length; const getLoveTrianglesCount = arrSpichonees => [...new Set(arrSpichonees.filter(e => e && arrSpichonees.includes(e+1) && arrSpichonees.includes(e+2)))].length; console.log(getLoveTrianglesCount([6, 14, 12, 21, 3, 20, 7, 15, 16, 16, 14, 4, 11, 13, 18, 2, 1, 8, 3, 1, 121])); Вообще по идее - каждый Spichonee должен быть один, поэтому наверное уникальным массив лучше делать сразу. => const getLoveTrianglesCount = arrSpichonees => [...new Set(arrSpichonees)].filter(e => e && arrSpichonees.includes(e+1) && arrSpichonees.includes(e+2)).length;Ответ 3
Насколько я понимаю, ваша задача "в лоб" решается так (полагаем, что выходные данные не нуждаются в валидации): function findCount(data){ var result = 0; data.unshift(0); for(let a = 1; a < data.length; a++){ let b = data[a]; let c = data[b]; result += a == data[c]; } return result/3; } let count = findCount([2, 3, 1, 5,6,4]); console.log(count);Ответ 4
В одну строку: findCount=data=>data.filter((value,index,array)=>array[array[value-1]-1]==index+1).length/3;
Комментариев нет:
Отправить комментарий