Fausse génération de Pi

Olympiades mathématiques, énigmes et défis
fallency
Messages: 8
Enregistré le: 25 Juin 2016, 23:14

Fausse génération de Pi

par fallency » 11 Juil 2022, 14:44

Bonjour à tous,

Voilà, j'ai un soucis assez tordu, que je pose là comme une énigme ou un défi:

J'aimerais créer un livre avec que des fausses décimales de Pi dedans, quel intérêt ? Pour vous, aucun, mais pour moi il y en a un :twisted: , en effet un tel livre pourrais me permettre de, disons le : faire du " mentalisme " :frime: .

Bon, voici comment je vois les choses:

    Le livre devra faire 120 pages (nombre pas fixe mais j'aime bien 120)
    Chaque pages sera composées de 10 lignes
    Chaque ligne comptera 8 (ou 10) "décimale de Pi"

Le plus marrant maintenant, il faudrait quand connaissant le n° de page et le n° de ligne je puisse réciter les 8 (ou 10, mais disons 8) décimales qui s'y trouve.

Voici les quelques règles mise en place pour l'instant:
la seed (ou graine): C'est la somme du nombre de la page (21 => 2+1 = 3)
a,b,c,d,e,f,g,h (les 8 chiffres qui compose une ligne)

[Page 21 ; ligne 4]
pour a&b: ligne + seed (si < 10 on rajoute le 0 devant le chiffre: (21 => 2+1 = 3 +4 =7 => 07 )
pour c&d: seed*2 + chiffre précédant ((3*2)+7 = 13 =>1+3 => 4)
pour e&f: ligne*2 + chiffre précédent ((4*2)+1 = 9)
pour g&h: j'en sais rien :?:
Ex:
les chiffres de cette ligne serais : 0;7;4;1;0;9;?;?

voici un algo en python qui récapitule tout ça (pour les plus pythoneux d'entre vous):

Code: Tout sélectionner
def create_line(s_seed):
  ligne = 1
  while (ligne <= 10):
    ligne_final = []
    position_nb = 1
    while (position_nb <= 8 ):
      if (position_nb < 3):
        """print(f"position_nb {position_nb}")"""
        tmp_nb = s_seed + ligne
      """else: print ("none")"""
      if (position_nb == 1 and tmp_nb < 10):
        tmp_nb = 0
      if (position_nb >= 3 and position_nb < 5):
        """print(f"position_nb {position_nb}")"""
        tmp_nb = (s_seed * 2) + tmp_nb
      if (position_nb == 3 and tmp_nb < 10):
        tmp_nb = 0
      if (position_nb >= 5 and position_nb < 7):
        """print(f"position_nb {position_nb}")"""
        tmp_nb = (ligne * 2) + tmp_nb
      if (position_nb == 5 and tmp_nb < 10):
        tmp_nb = 0
      position_nb = position_nb + 1
      if (len(str(tmp_nb)) != 1):
        reduce_nb = lambda x: x and (x%9 or 9)
        tmp_nb = reduce_nb(tmp_nb) 
        """print(f"tmp_nb: {tmp_nb}>9")"""
      """print (f"tmp_nb: {tmp_nb}")"""
      ligne_final.append(tmp_nb)
    print(ligne_final)
    print(f"ligne: {ligne}")
    ligne = ligne + 1
    print (" ")

def add_number():
    for n in range(120):
        print (f"N° de page: {n}")
        seed = [int(a) for a in str(n)]
        """print(seed)"""
        if (sum(seed) > 9):
            seed = [int(a) for a in str(sum(seed))]
        print(f"la seed est : {sum(seed)}")
        s_seed = sum(seed)
        create_line(s_seed)

def add_number_solo(n):
    print (f"N° de page: {n}")
    seed = [int(a) for a in str(n)]
    """print(seed)"""
    if (sum(seed) > 9):
        seed = [int(a) for a in str(sum(seed))]
    print(f"la seed est : {sum(seed)}")
    print (type(seed))
    print(" ")
    s_seed = sum(seed)
    create_line(s_seed)

def start():
    n = input ("page ?:")
    if not n:
        print ("all")
        add_number()
    else:
        print ("solo")
        add_number_solo(n)
start()


Bien que cette suite de chiffres parait aléatoire, on peut quand même voir des pattern évidant même pour un œil non-averti.
voici quelques exemple de lignes générées:

N° de page: 118
la seed est : 1
[0, 2, 0, 2, 0, 2, 2, 2]
ligne: 1

[0, 3, 0, 2, 0, 4, 4, 4]
ligne: 2

[0, 4, 0, 2, 0, 6, 6, 6]
ligne: 3

[0, 5, 0, 2, 1, 9, 9, 9]
ligne: 4

[0, 6, 0, 2, 3, 4, 4, 4]
ligne: 5

[0, 7, 0, 2, 5, 8, 8, 8]
ligne: 6

[0, 8, 1, 3, 8, 4, 4, 4]
ligne: 7

[0, 9, 2, 4, 2, 9, 9, 9]
ligne: 8

[1, 1, 0, 2, 2, 2, 2, 2]
ligne: 9

[2, 2, 0, 2, 4, 6, 6, 6]
ligne: 10



et donc après cette longue introduction, voici le challenge:

    Comment générer une suite de x chiffres à partir d'un nombre et d'un chiffre et surtout sans pattern évidant d'une ligne à l'autre.
    Les calculs doivent pouvoir être fait de tête (pas de (44 modulo 14 - le nombre d'or), je vous vois venir :hehe: )

Pour ce défis vous pouvez complètement oublier tout le protocole précédent.

Voilà j'espère que c'est assez clair
Dans tous les cas merci d'avoir lu ce pavé.

Bonne journée à toutes et tous. :super:
Modifié en dernier par fallency le 27 Juil 2022, 11:05, modifié 1 fois.



fallency
Messages: 8
Enregistré le: 25 Juin 2016, 23:14

Re: Fausse génération de Pi

par fallency » 27 Juil 2022, 10:40

Bon, vu que ma question à l'air de déchaîner les passions, je me permet de fermer la discussion et je la déplace du coté de l'informatique

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 10 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite