Recapitulação - Inventário
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 17 de 56.
Desafio
MédioVocê está rastreando o inventário de uma loja. Leia uma única linha de entrada: uma lista separada por vírgulas de operações contra um [String: Int] inicialmente vazio chamado stock. Cada operação é uma das seguintes:
in:<item>:<qty>adiciona a quantidade ao item (use o padrão de subscrito com valor padrão)out:<item>:<qty>subtrai a quantidade. Se a quantidade resultante for0ou negativa, remova a chave inteiramente.
Após aplicar cada operação, imprima:
- Uma linha por item restante, ordenado alfabeticamente, no formato
<item>: <qty> Total units: <n>abrangendo cada valor restante
Para a entrada in:apple:5,in:bread:2,out:apple:3,in:apple:4,out:bread:5, o resultado é:
apple: 6
Total units: 6Experimente você mesmo
let ops = readLine()!.components(separatedBy: ",")
var stock: [String: Int] = [:]
// TODO: analisar cada op como tipo:item:qtd; in soma, out subtrai;
// remover chaves cuja qtd caia para <= 0; imprimir linhas ordenadas + total
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 Palavras3Dicionários
Declarando DicionáriosBusca OpcionalAtualizando DicionáriosIterando DicionáriosAgrupando ValoresRecapitulação - Inventário6Funções de Ordem Superior Parte 2
compactMapflatMapsorted(by:)Construindo PipelinesRecapitulação - Leaderboard