O HackerRank é uma plataforma de contratação de tecnologia que é o padrão para avaliar as habilidades de desenvolvedores para mais de 3.000 empresas em todo o mundo. Ao permitir que recrutadores de tecnologia e gerentes de contratação avaliem objetivamente o talento em todas as etapas do processo de recrutamento, o HackerRank ajuda as empresas a contratar desenvolvedores qualificados e inovar mais rapidamente.
Além disso, é um ambiente digital com assuntos que vão testá-lo(a) para aprimorar, cada vez mais, a sua habilidade de resolver os problemas e o seu raciocínio lógico.
Nesse tutorial, irei lhe ajudar a entender como solucionar alguns desafios que você encontrará no HackerRank, usando a linguagem TypeScript.
Desafios que abordaremos:
- Simple Array Sum
- Compare the Triplets
Simple Array Sum
Nesse desafio, dado um array de números inteiros, ele pede que você encontre a soma de todos os itens do array. Você deverá completar a função simpleArraySum
para retornar a soma de todos os itens do array como um inteiro. Caso queira fazer o desafio no HackerRank, acesse o link desse desafio.
Ele espera receber esse valor como entrada:
6
1 2 3 4 10 11
E a soma dos valores como saída:
31
Para solucionar esse desafio, iremos usar o método reduce()
.
Como o nome sugere, o reduce()
busca reduzir um array. Ele iterará por cada elemento dessa lista com o objetivo de ao final gerar um único valor (de qualquer tipo), como por exemplo a soma de todos os elementos desse array.
function simpleArraySum(ar: number[]): number {
const calculateNumbers = ar.reduce((total, num) => total + num, 0);
return calculateNumbers;
}
Vamos entender o que está acontecendo na função acima. A função simpleArraySum
espera receber o array ar
como argumento, que é um array de números do tipo number[]
(tipagem do typescript). O :number
indica que a função retornará um número, que no caso estamos retornando a variável calculateNumbers
, que é a soma de todos os itens do array.
Em seguida, estamos usando o método reduce()
com dois parâmetros: uma função de acumulador e um valor inicial.
A função callback do acumulador (total, num) => total + num
é chamada para cada item do array. O primeiro parâmetro é o acumulador (total) que guarda o valor acumulado até o momento e o valor atual (num)
, que é o item atual do array que está sendo processado. A função retorna o novo valor do acumulador, que é a soma do acumulador antigo e do valor atual.
O valor inicial (0) é o valor inicial do acumulador. O método reduce()
retorna o valor final do acumulador, que é a soma de todos os itens do array.
Compare the Triplets
O desafio Compare the Triplets, pede uma comparação dos pontos de Alice e Bob. Se os pontos de Alice forem maiores que os pontos de Bob, precisamos atribuir 1 ponto para Alice. Se os pontos de Bob forem maiores que o de Alice, também atribuímos 1 ponto para Bob. Caso os pontos sejam iguais, ambos não recebem pontos. Você pode conferir o desafio nesse link.
E por fim, devemos retornar os pontos de Alice na primeira posição do array e os pontos de Bob na segunda posição do array.
O desafio pede para solucionar o desafio na função compareTriplets
. Vamos começar atribuindo os pontos de Alice e Bob a uma variável let
com o valor inicial de zero, para que possamos incrementar os valores de acordo com a comparação que faremos a seguir:
function compareTriplets(a: number[], b: number[]): number[] {
let alicePoints = 0;
let bobPoints = 0;
}
Em seguida, iremos usar o método forEach()
para iterar sobre cada item do array e incrementar pontos de acordo com a comparação, retornando os pontos de Alice e Bob:
function compareTriplets(a: number[], b: number[]): number[] {
let alicePoints = 0;
let bobPoints = 0;
a.forEach((aliceNote, i) => {
if (aliceNote > b[i]) alicePoints++;
if (b[i] > aliceNote) bobPoints++;
});
return [alicePoints, bobPoints];
}
Vamos entender o que a função acima está fazendo. Estamos comparando dois arrays de números a
e b
, que representam os pontos de Alice e Bob. Estamos usando o método forEach()
para iterar sobre cada item do array a
e para cada item, estamos comparando o valor de a
com o valor do array b
, usando o índice [i]
para definir as posições. Estamos fazendo as seguintes verificações:
Se o valor atual no array
a
for maior que o valor do arrayb
, a variávelalicePoints
é incrementada com 1 ponto.Se o valor atual no array
b
for maior que o valor do arraya
, a variávelbobPoints
é incrementada com 1 ponto.
Não precisamos usar o else
, porque de acordo com o que o desafio pede, se as notas forem iguais, não precisamos fazer nada.
Por fim, a função retorna um array com as pontuações de Alice e Bob. Com Alice na primeira posição e Bob na segunda, assim como foi definido no desafio.
Obrigado por ler!
Espero que tenha gostado do artigo, em breve irei postar mais soluções de desafios do HackerHank.
Top comments (0)