Saudações. Hoje enfrentaremos mais um problema,veremos como fazer uma análise de pontuação com base nas temporadas, e retornar quantas vezes o record foi ultrapassado e quantas vezes, houve menor pontuação. No exercício nos é passado algumas regras a serem seguidas para que sua conclusão seja correta, vejamos:
Breaking Records -
- Lista de pontos
- Manter uma contagem de valor Max e Min
- return quantidade de vezes que o recorde for quebrado, seja maior pontuação ou menor pontuação
Sabendo assim todas as regras do exercício, temos que saber agora sobre um molde. Com o que se foi passado antes, o exercício nos pede o seguinte resultado:
10
3 4 21 36 10 28 35 5 24 42
//contagem de maior e menor recorde: 4 0
Com todas as exigências postas,façamos o que se pede:
function breakingRecords(scores) {
// Write your code here
let firstScore = scores[0];
let maxScore = [firstScore], minScore = [firstScore];
for(let i = 1; i < scores.length; i++){
if (scores[i] > Math.max(...maxScore)) maxScore.push(scores[i]);
if (scores[i] < Math.min(...minScore)) minScore.push(scores[i]);
}
return [maxScore.length - 1, minScore.length - 1];
}
Nesta função comparamos cada elemento da matriz de "scores" (pontuações) guardado nos parâmetros, com os elementos anteriores e armazena os recordes máximos e mínimos. A variável "firstScore" é inicializada com o primeiro elemento da matriz e as variáveis "maxScore" e "minScore" são inicializadas com o valor de "firstScore".
A iteração começa no segundo elemento da matriz e verifica se cada elemento é maior ou menor que o dado anteriormente armazenado, caso seja, o elemento é armazenado na variável "maxScore" ou "minScore", dependendo do caso.
Ao final da iteração, são retornados os tamanhos das variáveis "maxScore" e "minScore", que correspondem às vezes que os recordes foram quebrados.
O resultado de todo esse procedimento será:
10
3 4 21 36 10 28 35 5 24 42
4 0
**Soluções Alternativas -**
function breakingRecords(scores) {
let high=scores[0],low=scores[0],highCount=0,lowCount=0
scores.map(function(element){
if(element > high){
high = element
highCount++
}
if(element < low){
low = element
lowCount++
}
})
return [highCount,lowCount]
}
No caso acima, ao invés de utilizar `for` ele utiliza a função `.map` que irá percorrer a operação e adicionar um novo valor alterado no que estava antes.
Com isso,finalizamos mais um desafio. Te aguardo no próximo Resolvendo problemas no HackerRank!!
Top comments (0)