Menu
Coddy logo textTech

Marcar como Concluído

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

A primeira funcionalidade: processar uma lista de ações do tipo "marcar este hábito como concluído neste dia" e produzir um estado final.

Cada linha de entrada é uma operação no formato habit:day onde day está entre 1 e 7. Se o hábito ainda não existir, crie-o com um array vazio e, em seguida, adicione o dia. Se um dia já estiver registrado para esse hábito, não o registre duas vezes.

Você utilizará o padrão de subscrito com valor padrão do capítulo de dicionários: habits[name, default: []].append(day) funciona quer a chave exista ou não.

challenge icon

Desafio

Fácil

Leia uma única linha de entrada: uma lista de entradas habit:day separadas por vírgula (ex: read:1,read:3,workout:2). Após aplicar cada operação, imprima os hábitos em ordem alfabética, um por linha, no formato:

<habit>: <days_sorted_ascending_joined_with_comma>

Ignore pares habit:day duplicados.

Para a entrada read:1,read:3,workout:2,read:1,read:5,workout:4, a saída é:

read: 1,3,5
workout: 2,4

Folha de consulta

Use o padrão de subscrito padrão (default-subscript) para anexar a um dicionário de arrays, criando a chave se ela não existir:

var habits: [String: [Int]] = [:]
habits[name, default: []].append(day)

Para evitar duplicatas, verifique antes de anexar:

if !habits[name, default: []].contains(day) {
    habits[name, default: []].append(day)
}

Experimente você mesmo

var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")

// TODO: para cada op, analise nome:dia, adicione o dia se ainda não estiver lá;
// depois imprima os hábitos em ordem alfabética com os dias ordenados
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