Calendrier de l'avent 🎄 (mais sans chocolats)

Hello,

il y en a parmi vous qui participent au #adventofcode?

Un petit challenge de code à découvrir chaque jour et à coder dans le langage de son choix. Je l’ai fait l’an dernier et je suis allé jusqu’au jour 16 (la difficulté est croissante)

Je viens de finir 2020 / day1 :slight_smile: (les tous premiers jours sont assez faciles). Je code en Elixir, mais je vais peut être profiter de l’occasion pour apprendre le Rust.

https://adventofcode.com

2 « J'aime »

:sob:

Je viens de finir 2020 / day1 :slight_smile:. Je code en Python, mais je vais peut être profiter de l’occasion pour refaire du OCaml :crazy_face:

1 « J'aime »

J’ai pas acheté de calendrier de l’avent whisky cette année (celui que je voulais était en rupture partout) :sob:

Alors toi je vais t’embêter parce que je me suis dit que ce serait une bonne occasion de découvrir le monde de Python et je n’ai AUCUNE idée des best practices, des librairies à utiliser et celles à éviter, donc… :smiley: :smiley: :smiley:

Fait aussi, je vais essayer d’y penser tous les jours.
Au moins c’est plus à mon niveau que le calendrier du thread sport en confinement :smiley:

1 « J'aime »

on en reparle dans 15 jours :wink:

@viewww va bien nous faire une petite notif quotidienne ?

1 « J'aime »

ça semble sympa ce calendrier de l’Avent du codeur. Mon anglais est un peu rouillé. Je me demandais où était l’input de l’énigme 1…il faut se connecter pour la faire apparaître.

Allez je vais tenter ça tiens, ça va être rigolu. En Python pour ma part.

yes :+1:

Oui j’ai l’impression qu’il apparait une fois connecté. Je ne l’avais pas non plus au début.

yes il faut se connecter, car les données (le puzzle) est différent pour chaque utilisateur

et voici ma version du défi day1 en Elixir :slight_smile:

Solution Elixir
list = puzzle |> String.split() |> Enum.map(&String.to_integer/1)
[{i, j, k} | _] = for i <- list, j <- list, k <- list, i + j + k == sum, do: {i, j, k}
i * j * k

et ma version python :

Résumé
import time

current_milli_time = lambda: int(round(time.time() * 1000))


def sum2020(data):
    print('start data scan')
    for i in data:
        for j in data:
            for k in data:
                if i + j + k == 2020:
                    return i,j,k
    return None

if __name__ == "__main__":
    start = current_milli_time()

    file1 = open('in', 'r')
    Lines = file1.readlines()

    data = [int(i) for i in Lines]
    
    data.sort()
    j,i,k=sum2020(data)
    print(i*j*k)
    end = current_milli_time() -start

Pourquoi i, j, k ? Un double parcours pour moi suffit, donc i, j.

Ma version en php

for ($i=0; $i<count($t); $i++)
{

	for ($j=0;$j<count($t); $j++)
	{
		if (($t[$i]+$t[$j]) == 2020) {echo ($t[$i]*$t[$j]); exit();}
	}
}

Alors je comprends pas, j’ai fait exactement cette méthode (bourrine) mais ça me sort rien

Pour la deuxième partie.

J’ai fait bourrin subtil en arrêtant de vérifier si i+j > 2020 ou i+j+k > 2020 une fois la liste triée.

Ah ok… :grinning: