Calendrier de l'avent 🎄 (mais sans chocolats)

on dirait du java.

Bon, j’attends 8h pour le faire avec mes etudiants :slight_smile:

Si seulement :slight_smile:

Faut dire que je fais du Java à la base, donc ça doit vilainement se ressentir dans mon code. Un pro du Kotlin fera sans doute quelque chose de bien plus élégant à lire.

J’ai du code pour la part2 qui fonctionne sur les exemples mais pas sur mes donnĂ©es. Le code ne finit pas : je ne sais pas si c’est une boucle infinie ou une explosion combinatoire :man_shrugging:

Montre nous ton code et on te dira :slight_smile:

Si tu construis le graphe et essaye de compter les chemins un par un, c’est sĂ»r que c’est de l’explosion combinatoire
 Pour info avec mon jeu de donnĂ©es, la rĂ©ponse Ă©tait 396857386627072.

Sans me renseigner plus pour la part 2, j’aurais envie de compter par nombre le nombre de façons d’arriver desssus (ie il y a 3 façons d’arriver à l’adapteur 12) et de tout multiplier ensemble. Mais l’instinct me dis aussi que ça va faire un nombre trop grand.

Voici mon code : Part2

1 « J'aime »

j’en suis a 11 :sweat_smile:

Y’a de l’idĂ©e mais je ne pense pas que ça marchera - j’avais pensĂ© Ă  ça au tout dĂ©but et essayĂ© sur papier, mais ça ne colle mĂȘme pas avec le jeu de donnĂ©es simple donc j’ai laissĂ© tomber.

Ensuite j’avais essayĂ© de faire un arbre des possibilitĂ©s, mais comme il y a plein de sous-branches qui se rĂ©pĂštent je suis passĂ© Ă  un graphe pour Ă©viter les copies. Ça parraissait beaucoup plus prometteur vu qu’il n’y a pas de cycles dans le graphe et qu’il y a un ordre clair dans les noeuds, avec un dĂ©but et une fin prĂ©cis. Une petite recherche Google qui va bien plus tard je suis tombĂ© sur la page StackExchange Math qui va bien (linkĂ©e au dessus), ensuite il n’y a plus qu’à implĂ©menter l’algo et magie ça marche.

Oui quand je suis arrivĂ© dans mon debuggeur Ă  10^50 pour l’exemple simple je me suis dit qu’il y avait un soucis :slight_smile:

oulah
 need cofee, rien que l’énoncĂ© est un challenge en lui-mĂȘme.

1 « J'aime »

Ma solution en Python du coup.

2 « J'aime »

Part 1 :

Résumé
def day10_1(data,built_in):
    diff=[]
    for i in range(0,len(data)-1):
        diff.append(data[i+1]-data[i])
    diff.append(built_in - data[len(data)-1])
    return  diff.count(1)* diff.count(3)

if __name__ == '__main__':
    fichier = open('input.txt', 'r')
    lignes = fichier.read().splitlines()

    data = [0] + [int(i) for i in lignes]
    data.sort()

    built_in = data[len(data)-1]+3
    print(day10_1(data,built_in))

Je pense multiplier la taille de l’input par pi, ou ptet le nombre d’or :thinking:

1 « J'aime »

Bon sinon dans Elixir (sans lib externe) on a accĂšs Ă  cette API : https://erlang.org/doc/man/digraph.html

C’est tricher ?

Je ne vois pas pourquoi. Si tu as compris que le problĂšme peut se modĂ©liser Ă  l’aide de graphes, le plus dur est fait, autant utiliser les libs qui vont bien si tu les as sous la main.

Il ne me semble pas que le but de l’Advent of Code soit de rĂ©inventer la roue :slight_smile:

2 « J'aime »

pfff j’etais tellement loin.

C’est tellement rapide comme ça.

bon j’ai fini par rĂ©ussir avec mon approche rĂ©cursive naĂŻve, seulement cette fois je mĂ©morisais les morceaux d’arbres / graph dĂ©jĂ  parcourus.
Le temps d’exĂ©cution est passĂ© de ∞ Ă  3ms

Part1 / Part2

bon, premiere etoile super facile. La deuxiùme, plus chaud, les graphs, c’est vieux :smiley:

Jour 10 - Etoile 1
from collections import defaultdict

numberList = [0]
f = open("Z:\donnees\developpement\Python\AdventOfCode\day10.txt", "r")
for line in f:
    numberList.append(int(line.rstrip("\n")))
f.close()

## Star 1
numberList.sort()
numberList.append(numberList[-1]+3)
delta = defaultdict(lambda: 0)
previousAdaptor = numberList[0]
for i in range(1,len(numberList)):
    delta[numberList[i]-previousAdaptor] += 1
    previousAdaptor = numberList[i]
print(delta)
print(f"star1 : {delta[1]*delta[3]}")

Et le resultat:

defaultdict(<function <lambda> at 0x000001C104ED89D0>, {1: 70, 3: 27})
star1 : 1890
[Finished in 0.098s]

Edit: bon, pour l’étoile 2, ma fonction de parcours du graph fonctionne. Sur les deux tests, ca m’a sorti la bonne rĂ©ponse. Sur le jeu de donnĂ©es 
 ca fait 5min que mon core I7 tourne Ă  balle et il a pas fini :smiley: va falloir faire autrement qu’explorer toutes les possibilitĂ©s je crois :smiley:

2 « J'aime »

oui j’en suis passĂ© par lĂ  aussi, j’ai laissĂ© tourner pendant 1h ca n’a rien donnĂ© non plus :slight_smile:

1 « J'aime »

Pour donner un ordre d’idĂ©e : sur mon input il y a 173 625 106 649 344 arrangements (173 625 milliards).