Menu
Coddy logo textTech

Agrupando Valores

Parte da seção Lógica e Fluxo do Journey de Swift da Coddy. Lição 16 de 56.

O padrão de subscrito padrão é a base para duas formas comuns do dia a dia.

Contador de frequência: conte quantas vezes cada chave aparece.

let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
    counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]

Classificação em grupos: reúna valores sob uma chave derivada:

let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
    byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]

O valor default para o caso de agrupamento é um array vazio. O valor default: é usado somente quando a chave está ausente; então, o lado direito modifica a entrada no próprio lugar.

challenge icon

Desafio

Médio

Leia uma única linha de entrada: uma lista de palavras separadas por vírgulas.

Imprima, nesta ordem:

  1. Uma linha para cada comprimento de palavra que aparece na entrada, ordenados do menor para o maior, no formato <length>: <count>, em que count é a quantidade de palavras com esse comprimento que apareceram
  2. Most common length: <n>, em que n é o comprimento com a maior contagem. Em caso de empate, escolha o comprimento menor.

Para a entrada hi,hello,yo,hey,bonjour,bye, a saída é:

2: 2
3: 2
5: 1
7: 1
Most common length: 2

(Os comprimentos 2 e 3 aparecem duas vezes cada. O empate é desfeito pelo menor comprimento, então 2 vence.)

Experimente você mesmo

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

// TODO: conte palavras por comprimento; imprima ordenadas; imprima a mais comum (empates: a mais curta)
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

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

Pratique por conta própria: Playground de Swift