Loading...
inaivanova1990 avatar inaivanova1990 33 Точки

01. Equal Neighbors - Arrays Advanced - More Exercises

Здравейте, какво не е наред с тази задача - https://pastebin.com/whiRg4Qq?

Judge дава само 75/100...

1.Equal Neighbors

Write a function that finds the number of equal neighbor pairs inside a matrix of variable size and type (numbers or strings).

The input comes as array of arrays, containing string elements (2D matrix of strings).

The output is return value of you function. Save the number of equal pairs you find and return it.

Examples

Input

Output

 

Input

Output

[['2', '3', '4', '7', '0'],

 ['4', '0', '5', '3', '4'],

 ['2', '3', '5', '4', '2'],

 ['9', '8', '7', '5', '4']]

1

[['test', 'yes', 'yo', 'ho'],

 ['well', 'done', 'yo', '6'],

 ['not', 'done', 'yet', '5']]

2

Тагове:
0
Fundamentals Module
icowwww avatar icowwww 2705 Точки
Best Answer

Actually he is missing the case when the current element of the matrix have 2 neighbors at the same time- the next element of the row and element from the next row.

In this case you have to add 2 units to the counter. To fix that you just have to split the check on line 9 in 2 separate checks:

if(col === row[j+1]){
    counter++;
}
if(col === arr[i+1][j]){
    counter++;
}

Added to your solution looks like that: https://pastebin.com/e7zZuR21

 

The second check in line else if (col === row[j + 1] || col === arr[i][j + 1]) is useless as row = arr[i] and you check the exact same thing twice(in case the first one is false), however it does not affect your score.

0
21/06/2021 22:33:41
inaivanova1990 avatar inaivanova1990 33 Точки

Благодаря за конкретните поправки, в случая много ми помогна

1
Axiomatik avatar Axiomatik 2422 Точки

My best guess is that your function does not iterate through the whole matrix, because of the safeguard you worked in order to avoid RunTime Exception:


        if(i !== arr.length-1){
            if(col === row[j+1] || col === arr[i+1][j]){
                counter++;
            }
        }
           else if(col === row[j+1] || col === arr[i][j+1]){
                counter++;
            }   

Probably some values are left out that are found in the last rows of a given matrix.

Demo-code that allows to cycle through the whole matrix without exception:

function solve(matrix) {

    const result = matrix.reduce((acc, currRow, rowIndex) => {
        // return currenCount also possible
        const currentCount = currRow.reduce((acc, currItem, itemIndex) => {
            if (currItem === currRow[itemIndex + 1]) {
                acc += 1;
            }
            // if matrix[rowIndex + 1] is undefined return empty array
            // will throw TypeError if attempting to take element from undefined
            if (currItem === (matrix[rowIndex + 1] || [])[itemIndex]) {
                acc += 1;
            }
            return acc;
        }, 0);
        // console.log(count);
        return acc + currentCount;
    }, 0);

    console.log(result);
}

 

2
inaivanova1990 avatar inaivanova1990 33 Точки

Благодаря, определено ми показа нов подход за решение на задачата!

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.