26 de dez. de 2025

Problem 18

Maximum path sum I

Problem 18

By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 2323.

3 7 4 2 4 6 8 5 9 3

That is, 3+7+4+9=233 + 7 + 4 + 9 = 23.

Find the maximum total from top to bottom of the triangle below:

75 95 64 17 47 82 18 35 87 10 20 04 82 47 65 19 01 23 75 03 34 88 02 77 73 07 63 67 99 65 04 28 06 16 70 92 41 41 26 56 83 40 80 70 33 41 48 72 33 47 32 37 16 94 29 53 71 44 65 25 43 91 52 97 51 14 70 11 33 28 77 73 17 78 39 68 17 57 91 71 52 38 17 14 91 43 58 50 27 29 48 63 66 04 68 89 53 67 30 73 16 69 87 40 31 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

NOTE: As there are only 16384 routes, it is possible to solve this problem by trying every route. However, Problem 67, is the same challenge with a triangle containing one-hundred rows; it cannot be solved by brute force, and requires a clever method! ;o

Considerações

Esse foi o primeiro desafio que tive demorei para resolver.

Fui olhar nos comentários das outras pessoas que resolveram e parece que ninguem teve dificuldades?

Eles começaram de baixo pra cima e iam comparando qual o maior número e somando... Mas isso não me parece ser correto, porque precisamos verificar todos os caminhoes possíveis para realmente confirmar qual resulta na maior soma

Agora entendi o que é recursion e backtracking

Conceitos

Pelo o que eu entendi tem que ir para a fileira de baixo e escolher o número da esquerda ou pra direita apenas, não o maior da fileira inteira.

Existem 14 fileiras, cada vez se pode escolher 2 números

2\*\*14=16384 2\*\*14 = 16384 comprova que é isso mesmo

O maios difícil vai ser como encodar o triangulo. Por sorte ao copiar e colar no meu editor o triangulo ficou reto e acho que vai facilitar pensar que:

  1. começa no linha i = 0, índice k = 0
  2. desce uma linha i = 1 e devemos escolher k == 0 ou k +=1, vamos supor k=1
  3. desce mais uma linha i = 2 e agora devemos escolher k == i ou i+=1

Neste formato o índice nunca volta, ele sempre avança

Tentativa 1 - 26/12/2025

JavaScript REPL

Resposta = 1064 e deu errado


Agora que entendi, parece que o problema seja na base do bruteforce mesmo e não comparar para ver qual o melhor caminho de imediato. Podem ter caminhos alternativos que a soma seja maior apesar de no começo a soma ser menor

Tentativa 2 - 26/12/2025

Existem 214=163842^14 = 16384 caminhos

Oof, tentei pensar num loop dentro de loop mas parei aí... não sei como fazer ainda

Pensar em indices até o final: 0,0 1,0 2,0 3,0 4,0 5,0 6,0 7,0 8,0 9,0 10,0 11,0 12,0 13,0 14,0

O primeiro indice sempre vai ser 0..14

O outro indice que vai variar, e vão ter 16384 variações... Como chegar nelas?

Começa com 75, depois podemos escolher 95 ou 64, escolhemos 95

Depois podemos escolher 17 ou 47, escolhemos 47

Depois podemos escolher 18 ou 87, escolhemos 87

São sempre escolhar binárias... 13 vezes. Seriam 13 loops??

Talvez matriz 3D?

E se pensar já na soma, e não nos números?

segunda linha = [75+95=170,75+64=139][75 + 95 = 170, 75 + 64 = 139]

Terceira linha = 4 elementos = [75+95+17=187,75+95+47=117,75+64+47=186,75+64+82=221][75+95+17=187, 75+95+47=117, 75+64+47=186, 75+64+82=221]

Quarta linha = 8 elementos .... assim na ultima linha vamos ter 16384 elementos

JavaScript REPL

Tentando com objects

JavaScript REPL

Tentativa 3 - 27/12/2025

vamos tentar permutações todas as 1628 permutações vão ser soma=[0,1]+[1,0..2]+[2,0..3]+...+[16,0..16]soma = [0,1] + [1,0..2] + [2,0..3] + ... + [16,0..16] então eu preciso gerar as 1628 permutações do segundo índice limitacoes seriam que o indice inicia no 0 e o proximo se mantem zero ou sobe. Nunca volta

JavaScript REPL

Resposta correta mas fiquei bolado.

Recent Articles

Advent of Code 2025 - 01
Desafios
Added on: 28 de dez. de 2025
Sobre Project Euler
Desafios
Added on: 28 de dez. de 2025
Problem 20
Desafios
Added on: 28 de dez. de 2025
Problem 21
Desafios
Added on: 28 de dez. de 2025
Problem 22
Desafios
Added on: 28 de dez. de 2025

© 2026