DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Organizando bolinhas em um container

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, organizar bolas que estão dentro de caixas, baseado em alguns parâmetros. Vejamos mais informações com a explicação detalhada e sua resolução.

Organizing Containers of Balls -

David tem vários recipientes, cada um com um número de bolas. Ele tem recipientes suficientes para separar cada tipo de bola que possui em seu próprio recipiente. David quer classificar as bolas usando seu método de classificação.

David deseja realizar algumas operações de swap de modo que:

  • Cada recipiente contém apenas bolas do mesmo tipo.
  • Não há duas bolas do mesmo tipo localizadas em recipientes diferentes.

Vejamos o código:

function organizingContainers(container) {
    // Write your code here
  let obj1 = {};
  let obj2 = {};
    for (let i = 0; i < container.length; i++) {
        obj1[i] = container[i].reduce((a, b) => a + b);
        obj2[i] = 0;
        for (let j = 0; j < container.length; j++) {
            obj2[i] += container[j][i];
        }
    }

    let x = Object.values(obj1).sort((a, b) => a - b);
    let y = Object.values(obj2).sort((a, b) => a - b);
    if(JSON.stringify(x) === JSON.stringify(y)) {
        return "Possible"
    } else {
        return "Impossible"
    }
}
Enter fullscreen mode Exit fullscreen mode

O valor adicionado a obj1[i] é a soma dos elementos no array container[i], que é obtido usando o método reduce(). Enquanto o valor adicionado a obj2[i] é a soma dos elementos na coluna i em todos os arrays de container. Isso é feito usando um loop for interno, que percorre o array container novamente e soma os valores em cada coluna i.

Após o loop for, o código converte os valores em obj1 e obj2 em arrays usando o método Object.values(). Em seguida, ele classifica os dois arrays usando o método sort(), com a função de classificação que classifica em ordem crescente.

Por fim, o código verifica se os dois arrays classificados são iguais usando o método JSON.stringify(). Se eles forem iguais, o código retorna "Possible", caso contrário, retorna "Impossible".

O resultado final será:

2
2
1 1
1 1
2
0 2
1 1

Possible
Impossible
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.

Top comments (0)