Posts for: #Python

Advent of code 2024 - Dia 11 de 25

O décimo primeiro dia do Advent of Code foi ontem 11/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, Dia 4, Dia 5, Dia 6, Dia 7, Dia 8, Dia 9 e Dia 10.

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

Dicas

  • Tanto a parte 1 quanto a parte 2 usam as mesmas regras para gerar as pedras.
  • Uma pedra 0 vira uma pedra 1
  • Uma pedra com número par de dígitos vira duas pedras
  • Se não entrar em nenhuma dessas condições, o valor da pedra é multiplicado por 2024.
  • A geração das pedras na parte 1 é bem interessante e fácil de implementar.
  • O problema traz vários valores de testes que você deve utilizar para validar suas funções
  • Você pode usar qualquer uma das respostas para a parte 1.
  • A parte 2 é complexa porque não há espaço suficiente para guardar tantas pedras. São centenas de trilhões de pedras, guardar cada uma em um elemento da lista não é interessante.
  • Na parte 2, lembre que o objetivo é calcular o número de pedras, não o valor das pedras em si.
  • Quando a pedra tem um número par de dígitos, ela gera duas pedras. Todos os outros valores geram apenas uma pedra. Se você considerar esta propriedade, você pode incrementar o contador de pedras sem guardar todas as pedras.

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 - Day 10 of 25

The tenth day of Advent of Code was yesterday 12/10/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1, Day 2, Day 3, Day 4, Day 5, Day 6, Day 7, Day 8 and Day 9.

I classified the tenth problem as easy (part 1) and easy (part 2). The problem is very similar to day 4.

Tips

  • You can start looking for paths when you find ‘0’ in the maze.

  • The problem defines that the path can be made in 4 directions: up, down, left, and right. Diagonals are not allowed.

Ler mais

Advent of code 2024 - Dia 10 de 25

O décimo dia do Advent of Code foi ontem 10/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, Dia 4, Dia 5, Dia 6, Dia 7, Dia 8 e Dia 9.

Classifiquei o décimo problema como fácil (parte 1) e fácil (parte 2). O problema é bem parecido com o dia 4.

Dicas

  • Você pode começar a procurar os caminhos quando encontrar o ‘0’ no labirinto.

Ler mais

Advent of Code 2024 - Day 09 of 25

The ninth day of Advent of Code was yesterday 09/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1, Day 2, Day 3, Day 4, Day 5, Day 6, Day 7 and Day 8.

I classified the ninth problem as easy (part 1) and medium (part 2).

Tips

  • Remember that strings in Python are immutable

  • If you need to change string characters, you can transform it into a list of characters and convert it back when finished.

Ler mais

Advent of code 2024 - Dia 09 de 25

O nono dia do Advent of Code foi ontem 09/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, Dia 4, Dia 5, Dia 6, Dia 7 e Dia 8.

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

Dicas

  • Lembre-se que strings em Python são imutáveis

  • Se você precisa alterar os caracteres de uma string, você pode transformá-la em uma lista de caracteres e reconvertê-la quando terminar.

Ler mais

Advent of Code 2024 - Day 08 of 25

The eighth day of Advent of Code was yesterday 08/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1, Day 2, Day 3, Day 4, Day 5, Day 6 and Day 7.

I classified the eighth problem as easy (part 1) and easy (part 2).

Tips

  • The problem also uses a kind of maze to represent the map.

  • If you consider each pair of antennas as points, you can imagine a line passing between them.

Ler mais

Advent of code 2024 - Dia 08 de 25

O oitavo dia do Advent of Code foi ontem 08/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, Dia 4, Dia 5, Dia 6 e Dia 7.

Classifiquei o oitavo problema como fácil (parte 1) e fácil (parte 2).

Dicas

  • O problema também utiliza uma espécie de labirinto para representar o mapa.

  • Se você considerar cada par de antenas como pontos, pode imaginar uma linha que passa entre eles.

Ler mais

Advent of Code 2024 - Day 07 of 25

The seventh day of Advent of Code was yesterday 07/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1, Day 2, Day 3, Day 4, Day 5 and Day 6.

I classified the seventh problem as easy (part 1) and easy (part 2).

Tips

  • Part 1 consists of applying a list of operations on a list of operands.

  • You will have more operands than operators.

  • You can use iter and next to combine lists of different sizes.

Ler mais

Advent of code 2024 - Dia 07 de 25

O sétimo dia do Advent of Code foi ontem 07/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, Dia 4, Dia 5 e Dia 6.

Classifiquei o sétimo problema como fácil (parte 1) e fácil (parte 2).

Dicas

  • A parte 1 consiste em aplicar uma lista de operações sobre uma lista de operandos.

  • Você vai ter mais operandos que operadores.

  • Você pode usar iter e next para combinar listas de tamanhos diferentes.

Ler mais

Advent of code 2024 - Day 06 of 25

The sixth day of Advent of Code was yesterday 06/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1, Day 2, Day 3, Day 4, and Day 5.

I classified the sixth problem as medium (part 1) and difficult (part 2).

Tips

  • Again, a maze problem where each character can be seen as an element in a matrix.

  • Since you’ll constantly need to check maze boundaries, valid positions, and obstacles, I recommend creating a class to represent the maze.

Ler mais