Calendrier de l'avent 🎄 (mais sans chocolats)

Nope :slight_smile:

marrant ca marche ici : https://rubular.com/r/G0FZK06mg5iNom

ha oui c’est zarbe!

bon j’arrĂȘte l’acharnement thĂ©rapeutique : les regex c’est vilain
Perso j’ai splittĂ© ma chaine autour des espaces et des « : » avant d’appliquer des mini regex sur certains champs. Bcp plus lisible et maintenable :slight_smile:

1 « J'aime »

oui j’ai lachĂ© aussi l’affaire, c’est peut etre possible mais pas evident. Et surtout ca se contourne avec un if :smiley:

Voui. On fait comment sinon ?

AprÚs, je peux tout faire en inversé. Que des tests de sorties immédiates.
Ça Ă©conomise des } mais niveau efficacitĂ©, je sais pas si ça change grand chose.

Honnetement j’ai pas vraiment lu l’algo, mais pour moi c’est pas tellement un pb de performance que de lisibilitĂ©. Si j’en arrive lĂ  je pense que j’extrais du code dans des sous fonctions (je dis ca de trĂšs loin vu que je code pas dans ce langage)

Sur mes projets, j’ai un linter qui crie pour moi et empeche le code de compiler si on arrive à un niveau d’imbrication trop important (3 ou 4 je sais plus)

C’est une bonne question. Je vois bien @viewww faire une attaque devant du lisp :sweat_smile:.

1 « J'aime »

Je n’ai aucun problùme avec les parenthùses




mais les accolades, elles me regardent bizarre :cold_sweat:

Fun fact: on perd 20000 codeurs par jour.

Qui survivra au 6eme jour ???

1 « J'aime »

Y a des chances que vous me perdiez ce WE, pas sur d’avoir le temps :slight_smile:

Vraiment sympa.
J’ai tendance Ă  ĂȘtre un peu oldschool dans ma maniĂšre d’écrire du code donc j’ai toujours un peu de mal avec ces syntaxes, mais une fois qu’on a compris c’est assez malin.
Je me le garde de cotĂ©, faut que je m’entraine.

Si on rate un jour, on peut le faire le lendemain ? pas sur d’avoir trop de dispo non plus le WE pour le faire.

1 « J'aime »

Oui quand tu veux. Tu peux mĂȘme faire les quizz de 2015 si tu veux

Bon j’ai un poil galĂ©rĂ©, et c’est mĂ©ga crade, mais it works !

Résumé
def checkValid (field, value) :
    validhcl = "0123456789abcdef"
    validecl = "ambblubrngrygrnhzloth"
    validpid ="0123456789"
    if field == "byr" :
        if int(value) >= 1920 and  int(value) <= 2002 :
            return True

    if field == "iyr" :
        if int(value) >= 2010 and  int(value) <= 2020 :
            return True

    if field == "eyr" :
        if int(value) >= 2020 and  int(value) <= 2030 :
            return True
    
    if field == "hgt" :
        if value[-2:] == "in" and (int(value[:-2]) >= 59 and int(value[:-2]) <= 76) :
            print(value)
            return True
        if value[-2:] == "cm" and (int(value[:-2]) >= 150 and int(value[:-2]) <= 193) :
            return True

    if field == "hcl" :
        if value[:1]=="#" and len(value) == 7 :
            for s in value[-6:] :
                if s not in validhcl :
                    return False
        else :
            return False
        return True
    
    if field == "ecl" :
        if value in validecl :
            return True
        else :
            return False

    if field == "pid" :
        rB = False
        if len(value)!=9 :
            return False
        else :
            for s in value :
                if s not in validpid :
                    return False
        return True
    
    if field == "pid" :
         return True

for i in inputTable :
    passPort = i.split(" ")
    goodFields = 0
    
    for fall in passPort :
        for f in fields :
            if  (f in  fall.split(":")[0]) and f != "cid" and checkValid(fall.split(":")[0],fall.split(":")[1]): 
                goodFields += 1
     
    if goodFields == 7 :
        goodPass += 1
        #print(passPort)
        
print(goodPass)

Hello,
Le mot du jour est donc DICHOTOMIE :wink:

1 « J'aime »

oui on dirait bien :slight_smile:

J’ai dĂ» utilisĂ© les exemples aujourd’hui pour dĂ©bugger un peu mon code. Ma solution en Python. Je n’ai pas fait de validation d’inputs mais apparemment pas besoin.

2 « J'aime »

Hop voici ma solution, j’ai pas du tout galĂ©rĂ© pour la part1, mais pour la part2 j’ai du relire 5x l’énoncĂ© pour VRAIMENT comprendre

Part1 / Part2

1ere et 2Ăšme parties :

Résumé

def day5_1(mini,maxi,data):
    if data=='':
        return [mini,maxi]
    else:
        if data[0]=='F' or data[0]=='L':
            return day5_1(mini,mini+int((maxi-mini)/2),data[1:])
        else:
            return day5_1(mini+int((maxi-mini)/2)+1,maxi,data[1:])


def day5_2(data):
    fulliD = [i for i in range(min(data),max(data))]

    return set(fulliD) - set(data)


# main
if __name__ == '__main__':
    fichier = open('input.txt', 'r')
    linesDeMonFichier = fichier.read()

    data = [day5_1(0,127,d[:-3])[0]*8+day5_1(0,7,d[-3:])[1] for d in linesDeMonFichier.split('\n')]
    maxId = max(data)

    id = day5_2(data)
    print(id)

Idem, pas le temps. Je code pendant la pause déjeuner du taff.