Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 12-09-2025 17:08:12

renéb
Membre
Inscription : 15-01-2023
Messages : 61

15 boules à classer version python.

Bonjour,

Comme annoncé, voici le programme assurant (en un éclair) le classement de 15 boules parfaitement identiques si ce n'est leurs poids singuliers.
L'énoncé de ce défi se trouve dans la rubrique Enigmes, casse-têtes, curiosités et autres bizarreries.
https://www.bibmath.net/forums/viewtopic.php?id=17989


# usr/bin/env python
#-*- coding: cp1252 -*-
import random
tris=1
for t in range(1):
    A,B,C,D,E=[],[],[],[],[]
    F,G,H,I,J,K=[],[],[],[],[],[]
    sol,L,M,N=[],[],[],[]
    solution=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
    w=0        
    #Chargement de la grille 5X3
    while len(B)<15:
        p=random.randint(1,15)
        if p not in B:            
            B.append(p)        
    #print("B= données aléatoires de 1 à 15",B)
    #Rangement en 3 lignes de 5 poids
    for j in range(0,5):
        C.append(B[j])        
    #print("C",C)
    for j in range(5,10):
        D.append(B[j])        
    #print("D",D)
    for j in range(10,15):
        E.append(B[j])
    ##print("C",C)
    ##print("D",D)
    ##print("E",E)
    ##print()
    #Classement des colones le plus léger en haut au plus lourd en bas.
    for j in range(0,5):    
        F.append(C[j])
        F.append(D[j])
        F.append(E[j])
        J.append(sorted(F))
        F=[]
    #print(J)
    for a in range(0,5):    
        I.append (J[a][0])
        H.append(J[a][1])
        G.append(J[a][2])    
        G.sort()
        H.sort()
        I.sort()
        #*************************************17 TRIS
        #grille triée remplie à la main      
    ##    G =[6,10,12,14,15]
    ##    H =[3,4,8,9,13]
    ##    I =[1,2,5,7,11]
    print()
    print("G",G)
    print("H",H)
    print("I",I)
    print()
    sol.append(I[0])
    sol.append(I[1])
    sol.append(I[2])
    sol.append(H[0])
    sol.append('  ...  ')
    sol.append(H[4])
    sol.append(G[2])
    sol.append(G[3])
    sol.append(G[4])
    print()
    X=sol[0:4]
    del(sol[0:4])
    X.sort()
    #*************************************18 TRIS
    sol.insert(0,X)
    X=[]
    X=sol[2:6]
    del(sol[2:6])
    X.sort()
    #*************************************19 TRIS
    sol.append(X)
    #print(sol)
    Y=[]
    Y.append(I[4])
    Y.append(H[2])
    Y.append(G[0])
    Y.sort()
    #***********************************20 TRIS
    #print("Y",Y)
    I[4]=Y[0]
    H[2]=Y[1]
    G[0]=Y[2]
    ##print("G",G)
    ##print("H",H)
    ##print("I",I)
    X=[]
    X.append(G[0])
    X.append(G[1])
    X.append(H[3])
    X.sort()
    #*************************************21 TRIS
    #print(X)
    sol.insert(2,X)
    #print(sol)
    X=[]
    X.append(I[4])
    X.append(I[3])
    X.append(H[1])
    X.sort()
    #*************************************22 TRIS
    #print(X)
    del(sol[1])
    sol.insert(1,X)
    sol.insert(2,[H[2]])
    #print("sol",sol)
    R=[]
    #print("résultat provisoir à trier:")
    for v in sol:
        R+=v
    #print("R*",R)    
    if R==solution:
        print("OK 22 tris")
        tris+=22
    else:
        Y=[]
        for w in range(2,5):        
            Y.append(R[w])
        Y.sort()
        #*************************************23 TRIS
        del(R[2:5])
        R.insert(2,Y)
        #print("R**",R)
        if R==solution:
            tris+=23
            print("OK 23 tris")
        else:
            Y=[]
            for w in range(8,11):        
                Y.append(R[w])
            Y.sort()
            #*************************************24 TRIS
            del(R[8:11])
            R.insert(8,Y)
            #print("R***",R)
            if R==solution:        
                print("OK 24 tris")
                tris+=24
            else:
                Y=[]
                for w in range(4,7):        
                    Y.append(R[w])
                Y.sort()
                #*************************************25 TRIS
                del(R[4:7])
                R.insert(4,Y)
                #print("R****",R)    
                R[0]=[R[0]]
                R[1]=[R[1]]
                R[3]=[R[3]]
                R[5]=[R[5]]
                R[7]=[R[7]]
                R[8]=[R[8]]
                #print("R*****",R)
                T=[]
                for w in R:
                    T+=w
                R=T
                #print("R******",R)
                if R==solution:
                    print("OK 25 tris")
                    tris+=25                  
                else:
                    Y=[]
                    for w in range(4,7):        
                        Y.append(R[w])
                    Y.sort()
                    #*************************************26 TRIS
                    del(R[4:7])
                    R.insert(4,Y)
                    #print("R*******",R)
                    if R==solution:
                        print("OK 26 tris")
                        tris+=26
                    else:                        
                        Y=[]
                        for w in range(6,9):        
                            Y.append(R[w])
                        Y.sort()
                        #*************************************27 TRIS
                        del(R[6:9])
                        R.insert(6,Y)
                        #print("R********",R)                      
                        R[0:4]=[R[0:4]]
                        R[4:8]=[R[4:8]]
                        R[2]=[R[2]]
                        #print(R)
                        T=[]
                        for w in R:
                            T+=w
                            R=T              
                        #print("R",R)
                        if R==solution:
                            print()
                            print("OK 27 tris")
                            tris+=27
                        else:
                            print("stop erreur")
print(tris)
print(t)
print()
##print("tris/t = ",tris/t)                        
##print()
 

Bonne lecture.

A bientôt.

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt cinq moins trente neuf
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums