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

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our <a href="https://www.numworks.com/legal/cookies-policy/">cookies policy</a>.