СРАВНЕНИЕ ЗАДАЧ ТРОЙНИ HACKERRANK (РЕШЕНИЕ)
ПОСТАНОВКА ЗАДАЧИ:Алиса и Боб создали по одной задаче для HackerRank. Рецензент оценивает две задачи, присуждая баллы по шкале от 1 до 100 по трем категориям: ясность задачи, оригинальность и сложность.
Задача состоит в том, чтобы найти их точки сравнения путем сравнения a[0] с b[0 ], a[1] с b[1] и a[2] с b[2].
Если a[i] > b[i], то Алиса получает 1 очко.
Если a[i] ‹ b[i], то Боб получает 1 балл.
Если a[i] = b[i], то ни один человек не получает балл.
Баллы сравнения — это общее количество баллов a человек заработал.
Учитывая a и b, определите их соответствующие точки сравнения.
РЕШЕНИЕ:
шаг 1:мы объявляем нашу функцию, назовем ее compareTriplets
function compareTriplets(a, b){ }
шаг 2: объявите счетчики для отслеживания количества раз, когда элементы внутри каждого массива больше, меньше или равны друг другу.
function compareTriplets(a,b) { let counterA = 0; let counterB = 0; }
шаг 3: объявите массивы для сбора значений счетчиков, объявленных на шаге 2.
function compareTriplets(a,b) { let counterA = 0; let counterB = 0; let finalArray1 = []; let finalArray2 = []; }
шаг 4:объявите переменную итератора, которая получает ключи первого массива(а)
function compareTriplets(a,b) { let counterA = 0; let counterB = 0; let finalArray1 = []; let finalArray2 = []; const iterator = a.keys(); }
шаг 5: объявите оператор цикла for. Этот цикл использует итератор для сравнения значений в двух массивах, устанавливает счетчики на увеличение или уменьшение и, наконец, помещает счетчики в их массивы (finalArray1, finalArray2)
function compareTriplets(a,b) { let counterA = 0; let counterB = 0; let finalArray1 = []; let finalArray2 = []; const iterator = a.keys(); for (const key of iterator) { if (a[key] > b[key]) { counterA++; counterB += 0; finalArray1.push(counterA); finalArray2.push(counterB); } if (a[key] < b[key]) { counterB++; counterA += 0; finalArray2.push(counterB); finalArray1.push(counterA); } if (a[key] == b[key]) { counterA += 0; counterB += 0; finalArray2.push(counterB); finalArray1.push(counterA); } } }
шаг 6: мы собираем последние значения из finalArray1 и finalArray2 соответственно и передаем их в выходной массив
function compareTriplets(a,b) { let counterA = 0; let counterB = 0; let finalArray1 = []; let finalArray2 = []; const iterator = a.keys(); for (const key of iterator) { if (a[key] > b[key]) { counterA++; counterB += 0; finalArray1.push(counterA); finalArray2.push(counterB); } if (a[key] < b[key]) { counterB++; counterA += 0; finalArray2.push(counterB); finalArray1.push(counterA); } if (a[key] == b[key]) { counterA += 0; counterB += 0; finalArray2.push(counterB); finalArray1.push(counterA); } } const res1 = finalArray1[finalArray1.length - 1]; const res2 = finalArray2[finalArray2.length - 1]; const output = [res1, res2]; console.log(output); return output; }
шаг 7: запускаем функцию для всех тестовых случаев Hackerrank.
function compareTriplets(a,b) { let counterA = 0; let counterB = 0; let finalArray1 = []; let finalArray2 = []; const iterator = a.keys(); for (const key of iterator) { if (a[key] > b[key]) { counterA++; counterB += 0; finalArray1.push(counterA); finalArray2.push(counterB); } if (a[key] < b[key]) { counterB++; counterA += 0; finalArray2.push(counterB); finalArray1.push(counterA); } if (a[key] == b[key]) { counterA += 0; counterB += 0; finalArray2.push(counterB); finalArray1.push(counterA); } } const res1 = finalArray1[finalArray1.length - 1]; const res2 = finalArray2[finalArray2.length - 1]; const output = [res1, res2]; console.log(output); return output; } compareTriplets([1,2,3], [3,2,1]) compareTriplets([5,6,7], [3,6,10]) compareTriplets([17,18,30], [99,16,8]) compareTriplets([20,20,30], [20,20,50]) compareTriplets([6,8,12], [7,9,15]) compareTriplets([10,15,20], [5,6,7])
Результат: