cycles.py

Created by schraf

Created on September 08, 2018

333 Bytes

On considère une suite xn+1=f(xn ) avec une valeur initiale x0. Lorsqu’il existe i≠j tels que xi=xj la suite est périodique.
Par exemple dans la suite :
2, 0, 6, 3, 1, 6, 3, 1, 6, 3, 1, ...
le cycle est 6, 3, 1 et se répétera forcément puisque f(1)=6, f(6)=3 et f(3)=1.

Ecrire une fonction cycle qui admet en paramètre la liste des premiers éléments de la suite et donne en sortie la valeur du premier terme qui se répète ainsi que la longueur du cycle ou alors “Pas de cycle” si aucun cycle n’est apparent.

>> cycle([2,3,4,2,3,4])
[2,3]
# En effet 2,3,4 est le cycle qui se répète donc le 1er terme est 2 et la longueur du cycle = 3
>> cycle([1,2,3,4])
'Pas de cycle'
>> cycle([1,2,3,4,7,3,4,7,3])
[3,3]
# 3,4,7 est le cycle de 1er terme 3 et de longueur 3


def cycle(suite):
  for i,v in enumerate(suite):
    for j,w in enumerate(suite[i+1:]):
      if v==w: return [v, j+1]
  return "Pas de cycle"

# Version 2

def cyclev2(suite):
  for i in range(len(suite)):
    for j in range(i+1,len(suite)):
      if suite[i]==suite[j]: return [suite[i], j-i]
  return "Pas de cycle"

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 cookies policy.