Visão Geral do Projeto
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 33 de 56.
Você vai construir um pequeno rastreador de hábitos. O estado reside em um único dicionário mapeando o nome de um hábito ao seu histórico de dias concluídos na semana:
var habits: [String: [Int]] = [
"read": [1, 3, 5], // concluído na Seg, Qua, Sex
"workout": [2, 4] // concluído na Ter, Qui
]Os dias são números inteiros 1...7 para Seg...Dom. Ao longo das próximas quatro lições, você adicionará recursos um de cada vez:
- Adicionar um hábito e marcá-lo como concluído
- Calcular sequências ao longo da semana
- Imprimir uma grade semanal
- Comparar duas semanas
Cada lição é independente, você redeclarará o dicionário no topo de cada arquivo. O estado tem o mesmo formato, então os métodos que você escrever são transferíveis entre as lições.
Desafio
IniciantePara dar início ao projeto, escreva o código de configuração dos dados:
- Inicialize um dicionário
habitsvazio ([String: [Int]]) - Imprima a contagem de habits
- Imprima se o dicionário está vazio
A saída esperada é:
0
trueFolha de consulta
Um rastreador de hábitos pode ser modelado como um dicionário mapeando nomes de hábitos para arrays de números de dias concluídos (1...7 para Seg–Dom):
var habits: [String: [Int]] = [
"read": [1, 3, 5], // feito na Seg, Qua, Sex
"workout": [2, 4] // feito na Ter, Qui
]Propriedades úteis de dicionário:
habits.count // número de entradas
habits.isEmpty // true se não houver entradasExperimente você mesmo
// TODO: declare um [String: [Int]] vazio, então imprima count e isEmpty
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
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras