- Código dos desafios propostos no bootcamp de Node.js disponibilizado na plataforma da Digital Innovation One DIO
- Link para o meu certificado de conclusão
- É importante salientar que se você for um(a) aluno(a) da plataforma DIO, então será de melhor aproveitamento revisar o código e comparar com sua solução, ou apenas usar o código-fonte como inspiração para sua criatividade.
- Leia as seções AVISOS IMPORTANTES e Execução.
- Não proibo o uso do meu código na plataforma, mas isto não agregará para o seu aprendizado, e provavelmente só irá favorecer o crescimento da plataforma DIO, e não o seu.
- E por último, mas não menos importante, independente do que você fizer, peço por gentileza apenas que dê uma ⭐ (Star) neste repositório e/ou siga meu perfil do GitHub como meio de sinalizar que consegui contribuir para seu aprendizado.
-
Para os desavisados e desatentos, os desafios deste repositório estão 100% em javascript.
-
Por favor, leia os comentários de cada desafio, pois alguns podem conter informações adicionais como, por exemplo, bugs encontrados nos testes da DIO na época que o código foi escrito, e, portanto, os mesmos podem ter sido corrigido quando você utilizar o mesmo código. Atente-se às estas informações para que você possa refatorar o código se necessário.
-
A comunidade me contatou para informar que o código do desafio Barras de Ouro não passa em apenas um dos testes fechados. Tentei contato com a DIO por e-mail e pelo Discord, mas obtive nenhuma resposta. Apesar disso, uma outra pessoa da comunidade conseguiu uma resposta - o Luan Fernandes - e ele postou a imagem da resposta que recebeu: Com isso vocês devem aguardar que a DIO corrija o tal bug.
-
UPDATE 19/12: Notificaram que "já corrigiram o bug", porém notei apenas que removeram dois testes, e o problemático permaneceu. No entanto, graças à refatoração feita pela Dev Camila#6476 (no Discord), eu pude analisar o código e encontrar os pontos que necessitavam de alteração para que o algoritmo fosse aprovado na plataforma da DIO.
Obrigado 👉 Camila 👈 por sua contribuição! ✌
-
Quanto ao desafio Tabuleiro Secreto, este certamente deveria passar em todos os testes, mas a comunidade informou que não está, porque retorna o erro tempo limite de execução excedido. No entanto, o algoritmo rodava, com a entrada mais massiva de dados fornecida pelo site uDebug em até 10 segundos na minha máquina, a qual não deve ser mais performática que o servidor da DIO. Refatorei o código e reduzi para entre 3.982 e 5.446 segundos, e ainda assim o erro persiste. Portanto, concluo que é uma instabilidade na plataforma da DIO, ou um novo bug, ou eles propositadamente alteraram algo no teste específico. O último é o menos provável, na minha opinião.
-
UPDATE 28/12: A procura pela solução do desafio do Tabuleiro Secreto foi grande, e meu conselho foi categoricamente o mesmo para todos que me pediram uma luz💡:
Refatorem o algoritmo para reduzir o tempo de execução
Como já citei, a solução era antes aceita sem problemas. E havia feito o meu melhor para escrever um código elegante e performático. Mas não foi o suficiente né? Pois então refatorei e escrevi uma feitiçaria que executa em torno de 2.5 segundos na pior carga dos testes, e a entrega foi aprovada novamente!! So, enjoy! 😎
-
Os códigos deste repositório são disponibilizados como são, e apesar de todos terem sidos aprovados quando os escrevi, os mesmos são disponibilizados sem nenhuma garantia. Agradeço a compreensão.
-
Os códigos estão preparados tanto para serem executados na plataforma da DIO quanto localmente, exigindo apenas uma pequena refatoração.
-
Caso queira executar na plataforma da DIO deverá remover/comentar o array de entrada e onde mais for atribuido os elementos do array de entrada, e descomentar onde a leitura dos dados é feita através do comando gets();
-
Para facilitar há comentários indicando onde o uso é local e na DIO.
Bons estudos!
João Trepichio |
01-Introdução a Programação com JavaScript (Básico )
Desafio | Tipo |
---|---|
Visita na Feira | Princípios Básicos |
Multiplicação Simples | Princípios Básicos |
Folha de Pagamento | Princípios Básicos |
02-Fundamentos Aritméticos em JavaScript (Básico )
Desafio | Tipo |
---|---|
Quantidade de Números Positivos | Princípios Básicos |
Exibindo Números Pares | Princípios Básicos |
Análise de Números | Princípios Básicos |
Contagem de Cédulas | Princípios Básicos |
Consumo Médio do Automóvel | Princípios Básicos |
03-Ordenação e Filtros em JavaScript (Intermediário )
Desafio | Tipo |
---|---|
Ordenando Números Pares e Ímpares | Estrutura de Dados |
Compras no Supermercado | Estrutura de Dados |
Uniformes de final de ano | Estrutura de Dados |
Fila do Banco | Estrutura de Dados |
Gincana no Acampamento | Estrutura de Dados |
04-Introdução a Busca e Substituição em JavaScript (Intermediário )
Desafio | Tipo |
---|---|
Ordenação de palavras por tamanho | Estrutura de Dados |
Encontre a maior substring | Strings |
Validador de senhas com requisitos | Strings |
Pedra, Papel, Tesoura, Lagarto e Spock | Strings |
Atalhos para o Weblogger Brasil | Strings |
05-Solução de Problemas com JavaScript (Avançado )
Desafio | Tipo |
---|---|
Contagem repetida de números | Ad-Hoc |
Vogais Extraterrestres | Strings |
Melhor amigo do Pablo | Estrutura de Dados |
Entrevista embaraçosa | Strings |
Conjuntos bons ou ruins? | Strings |
Produto e divisão | Ad-Hoc |
Barras de ouro | Grafos |
06-Resolvendo Algoritmos com JavaScript (Avançado )
Desafio | Tipo |
---|---|
Coração das cartas | Paradigmas |
Abreviando posts do blog | Strings |
Combinação de strings | Strings |
Hash Mágico | Strings |
O tabuleiro secreto | Ad-Hoc |