Advent of code 2024 - Dia 05 de 25

O quinto dia do Advent of Code foi ontem 05/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1, Dia 2, Dia 3, e Dia 4!

Classifiquei o quinto problema como fácil (parte 1) e médio (parte 2).

Dicas

  • O problema tem duas entradas, uma lista de regras e uma lista de atualizações.

  • As páginas presentes na lista de regras (X) devem ser impressas antes das páginas (Y). Como a mesma página X pode ter várias Y, as regras são um dicionário com chaves do tipo int e listas também do tipo int.

Ler mais

Advent of code 2024 - Dia 04 de 25

O quarto dia do Advent of Code foi ontem 04/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1, Dia 2 e Dia 3!

Classifiquei o quarto problema como médio (parte 1) e difícil (parte 2).

Dicas

  • Se você visualizar as entradas como uma matriz, a solução fica mais natural.

  • Considere que cada caractere ocupa uma posição y, x na matriz, onde y é a linha e x a coluna.

Ler mais

Advent of code 2024 - Dia 03 de 25

O terceiro dia do Advent of Code foi ontem 03/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 e o Dia 2!

Classifiquei o terceiro problema como fácil (parte 1) e médio (parte 2).

Dicas

  • Você pode utilizar expressões regulares para detectar mul e extrair os números.
  • Na segunda parte, você pode utilizar uma máquina de estados simples para ativar ou desativar as multiplicações.
  • Lembre-se de re.compile e re.findall.

Quanto de Python você precisa saber?

Os capítulos se referem ao meu livro Introdução à Programação com Python.

Ler mais

Advent of code 2024 - Dia 02 de 25

Segundo dia do Advent of Code foi ontem 02/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler o post sobre o Dia 1!

Classifiquei o segundo problema como fácil (parte 1) e médio (parte 2).

Dicas

  • Você precisa transformar cada linha de entrada em uma lista de inteiros.
  • Para saber se a lista é crescente ou decrescente, calcule a diferença entre o segundo e o primeiro elemento. O sinal do resultado da subtração indicará se a lista é deve ser crescente ou decrescente. Para saber se a lista inteira é crescente ou decrescente, continue subtraindo os elementos, dois a dois, até o final da lista. Quando a valor da subtração for positivo, a lista é crescente. Se negativo, a lista é decrescente. Mas somente se o mesmo sinal for mantido até o final da lista.
  • Lembre-se que como usamos L[i+1] - L[i], i deve ser menor que o índice do último elemento, caso contrário você terá um erro.

Exemplo de lista crescente:

Ler mais

Advent of code 2024 - Dia 01 de 25

O Advent of Code é um desafio de programação que acontece entre os dias 1 e 25 de dezembro de cada ano. O de 2024, é a décima edição do evento que é independente de linguagem de programação, você pode usar as ferramentas que você quiser.

Todo dia, a partir do dia primeiro de dezembro, um novo problema é disponibilizado. Embora o nome seja Advent of Code (Advento é um evento cristão que antecede o Natal), os problemas não envolvem necessariamente religião, mas são problemas divertidos com os duendes de Papai Noel.

Ler mais

Acompanhador de Exercícios

Desde que escrevi meu livro tive uma ideia que poderia criar um aplicativo simples, para facilitar ou estimular a realização dos exercícios. Uma aplicação web que poderia ser usada no computador e mesmo a partir de um celular. Muitos anos depois, finalmente consegui colocar em prática uma parte do que havia imaginado. Eu espero, que se você estiver fazendo os exercícios do livro, use este aplicativo de forma a lhe estimular chegar ao final e concluir todos os exercícios. Rumo a 100%!

Ler mais

Python 3.13

Ontem saiu o Python 3.13, uma das versões mais aguardadas do interpretador. A principal atração para mim sempre foi a possibilidade de rodar código em Python sem o GIL. O GIL, ou Global Interpreter Lock, assombrou o Python por muito tempo e sempre foi motivo de muitas discussões.

Há muito tempo vem se tentando remover o GIL do interpretador. Mas o que ele atrapalha? Quando rodamos um código com múltiplos threads em Python, o GIL garante que as estruturas comuns do interpretador estavam protegidas entre estes threads, ou seja, contra problemas de concorrência. Várias tentativas foram feitas, mas todas deixavam o Python mais lento ou só funcionavam em casos específicos. Um rant do Guido - It isn’t Easy to Remove GIL em resposta a este post Data Services and Integration, An open letter to Guido van Rossum: Mr Rossum, tear down that GIL!. Nada melhor que a PEP-703 para entender como estas conversas acabaram. Na realidade, não acabaram, o GIL pode ser ativado ou desativado e cada utilizador pode escolher qual versão do interpretador quer usar. Nem tudo são flores, pois várias bibliotecas ainda precisam de mais tempo para suportar esta opção e mesmo para estabilizarem seus códigos.

Ler mais

As diferentes carreiras de informática

Como profissional de informática, você tem várias opções de carreira como empregado, freelancer, consultor ou empresário (empreendedor) entre outras. Vamos ver quais são as vantagens e desvantagens de cada uma dessas opções e depois discutir como combiná-las para testar vários caminhos antes de tomar uma decisão tão importante, como qual carreira seguir.

Ler mais