Menu
Coddy logo textTech

Recapitulação - Leaderboard

Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 32 de 56.

challenge icon

Desafio

Médio

Você está produzindo um placar de líderes. Leia uma única linha de entrada: uma lista separada por vírgulas de entradas name:score. Algumas entradas possuem uma pontuação não inteira e devem ser ignoradas (use compactMap).

Imprima os três melhores jogadores por pontuação decrescente, um por linha, no formato:

<rank>. <name> - <score>

As classificações começam em 1. Desempate pelo nome em ordem alfabética. Se existirem menos de três entradas válidas, imprima todas elas.

Após o placar, imprima Avg: <n> com a média inteira de cada pontuação válida (truncada para zero, sem decimais). Quando não existirem entradas válidas, imprima Avg: 0.

Para a entrada alice:90,bob:bad,cara:85,dan:90,eve:70,fin:99, a saída é:

1. fin - 99
2. alice - 90
3. dan - 90
Avg: 86

Experimente você mesmo

let entries = readLine()!.components(separatedBy: ",")

// TODO: compactMap para (name, score); ordenar por score desc e desempate por name;
// imprimir os 3 primeiros; depois a média de todos os scores válidos

Todas as lições de Lógica e Fluxo