◂ 14 décembre 2023 ▸
Parabolic Reflector Dish : Faire glisser des cailloux dans 4 directions successives
...O.....#O#... …
#OO..O.##..#... …
.###..O.#...O.# …
O.O......OO.O#. …
.#....#.O#...O. …
.#.....O..#...# …
⋮
- code.py
- code_optim_deplacer_cailloux.py
- code_oneLiners_lievreTortue.py
- code_numpy.py
""" Ancienne fonction qui déplace caillou par caillou """
def ligne_penchee_a_gauche(ligne: MutableSequence[str]) -> MutableSequence[str]:
for c in range(len(ligne)):
if ligne[c] == "O":
ligne[c] = "."
for i in range(c,-1,-1):
if i == 0 or not ligne[i-1] == ".":
ligne[i] = "O"
break
return ligne
""" Nouvelle fonction qui recrée chaque segment entre les "#" à partir du nombre de cailloux ronds
Elle peut prendre directement un string, puisqu'on ne modifie pas la ligne petit à petit. La grille est alors une liste de strings. """
def ligne_penchee_a_gauche(ligne: str) -> str:
return "#".join( [ (nb:=token.count("O")) * "O" + (len(token)-nb) * "."
for token in ligne.split("#") ] )