Advent of code

 5 décembre 2022 

  Supply Stacks : Déplacer des caisses sur des piles
        [Q] [B]         [H]   
   
    [F] [W] [D] [Q]     [S]   
   
    [D] [C] [N] [S] [G] [F]   
   
               
  1. code.py
f = open("input.txt", 'r')
lines = f.readlines()  # ne pas faire un strip comme d'habitude, car les colonnes vides sont importantes

piles1 = [[] for i in range(9)]    # ne pas faire 9*[[]], car sinon chaque pile est le même tableau

nbLignesEnTete = 0
for line in lines:
    nbLignesEnTete += 1
    if line.startswith(" 1"):
        break

    for i in range(len(piles1)):
        numCar = 1 + 4 * i
        if line[numCar] != ' ':
            piles1[i].append(line[numCar])

piles2 = piles1[:]   # pas besoin de faire une copie des colonnes piles2 = [p[:] for p in piles1]

for line in lines[nbLignesEnTete + 1:]:
    [_, nb, _, iFrm, _, iTo] = line.split()
    nb   = int(nb)
    iFrm = int(iFrm) - 1
    iTo  = int(iTo)  - 1

    # Possible aussi : [nb,iFrm,iTo] = map(int, line.split()[1::2])  et iFrm -= 1, iTo -= 1

    piles1[iTo]  = piles1[iFrm][nb-1::-1] + piles1[iTo]
    piles1[iFrm] = piles1[iFrm][nb:]

    piles2[iTo]  = piles2[iFrm][:nb] + piles2[iTo]
    piles2[iFrm] = piles2[iFrm][nb:]


print("Réponse partie 1:", ''.join([p[0] for p in piles1]))
print("Réponse partie 2:", ''.join([p[0] for p in piles2]))