melangefaro.py

Created by schraf

Created on September 20, 2018

301 Bytes

Un mélange parfait (mélange Faro) est un mélange parfaitement réussi dans le sens où l’on partage le paquet initial en deux paquets égaux et que le mélange est parfaitement alterné, une carte d’un paquet succédant à une carte de l’autre dans le paquet final. Par exemple, le mélange Faro de [0,1,2,3,4,5] sera :

[0,3,1,4,2,5]

En effet, on coupe le paquet en 2, soit [0,1,2] et [3,4,5] puis on prend alternativement un élément dans le premier paquet puis dans le second, etc.

>> faro(range(6))
[0, 3, 1, 4, 2, 5]

  • Écrire une fonction faro qui admet en paramètre une liste paire d’éléments (pour pouvoir couper le paquet en 2) et donne en retour le mélange.
  • Écrire une fonction cycle qui admet en paramètre une pair d’éléments et donne le nombre de fois où il faut appliquer le mélange de Faro pour retomber sur l’ordre initial.


def faro(l):
  if len(l)%2==1: return "Impair"
  s=[]
  milieu = len(l)//2
  for i,v in enumerate(l[:milieu]):
    s.append(v)
    s.append(l[milieu+i])
  return s
  
def cycle(l):
  suiv = faro(l)
  n = 1
  while list(suiv)!=list(l):
    suiv = faro(suiv)
    n +=1
  return n