Générer un ensemble de n-uplets Python
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Générer un ensemble de n-uplets Python



  1. #1
    ThomasPayet97436

    Générer un ensemble de n-uplets Python


    ------

    Bonjour, bonsoir,
    Je me lance dans l'écriture d'un programme python au cours duquel je dois créer une liste dont les éléments sont tous les n-uplets d'entiers naturels compris entre 1 et m, avec n et m fixées.
    Pour le cas n=2, je pense qu'une double boucle for ferait l'affaire mais comment généraliser aux autres cas ?
    Merci d'avance pour votre aide

    -----

  2. #2
    pm42

    Re : Générer un ensemble de n-uplets Python

    Récursivement, c'est assez facile. Tu reçois une liste de taille n, tu la parcours et pour chaque élément, tu le retires et tu demandes la listes de n-uplets de taille n-1 de ceux qui restent.
    Pour chacun d'entre eux, tu ajoutes l'élément retiré avant : tu as la liste de tous les n-uplets de taille n.

    Et pour n=1, le code est trivial.

  3. #3
    ThomasPayet97436

    Re : Générer un ensemble de n-uplets Python

    Je n'avais pas pensé à de la récursivité, génial merci j'essaie ça de suite!

  4. #4
    ThomasPayet97436

    Re : Générer un ensemble de n-uplets Python

    Alors, je ne suis pas sûr d'avoir compris. J'aurais besoin de plus de détails s'il te plaît. Quelle liste "reçoit"-on? Pourrais-tu détailler la récursivité? Que veut-tu dire par "demander" la listes des (n-1)-uplets?

  5. A voir en vidéo sur Futura
  6. #5
    vgondr98

    Re : Générer un ensemble de n-uplets Python

    Bonjour, j'ai essayé en java.
    Code:
    @Test
    	public void uplet(){
    		List<List<Integer>> uplets = new ArrayList<List<Integer>>();
    		List<List<Integer>> upletsfinal = new ArrayList<List<Integer>>();
    		List<Integer> uplet;
    		List<Integer> upletint;
    		Scanner keby 	= new Scanner(System.in);
    		System.out.println("Veuillez saisir n puis appuyer sur espace et saisiser m puis entré");
    		Integer n		= keby.nextInt();
    		Integer m		= keby.nextInt();
    		
    		keby.close();
    		
    		System.out.println(n);
    		System.out.println(m);
    		
    		for (int i = 1; i <= n; i++) {
    			
    			//pour la 1ere iteration, on créé m arraylistes
    			if (uplets.size() == 0) {
    				for (int j = 1; j <= m; j++) {
    					uplet = new ArrayList<Integer>();
    					uplet.add(j);
    					uplets.add(uplet);
    				
    				}
    			} else {
    				int taille = uplets.size();
    				for (int k = 0; k < taille; k++) {
    
    					for (int j = 1; j <= m; j++) {
    						uplet = uplets.get(k);
    						upletint = new ArrayList<Integer>(uplet);
    						if (!upletint.contains(j)) {
    							upletint.add(j);
    						}
    						
    						uplets.add(upletint);
    					
    					}
    					//uplets.remove(k);
    					//k = k - 1;
    				}
    			}
    
    		}
    		for (int i = 0; i < uplets.size(); i++) {
    			if (uplets.get(i).size() == n) {
    				upletsfinal.add(uplets.get(i));
    			}
    		}
    		System.out.println(upletsfinal);
    		System.out.println(upletsfinal.size());
    	}
    Pour n = 3 et m = 4, j'obtiens 24 sous-listes ce qui est attendu si on considère qu'un n-uplets avec 3 éléments est du style [1,2,3] avec aucun chiffre en double. Si les doublons sont autorisés, il faut modifier cette ligne if (!upletint.contains(j)) {

  7. #6
    ThomasPayet97436

    Re : Générer un ensemble de n-uplets Python

    Merci pour ta réponse, je regarde ça. Je dois prendre en compte tous les n-uplets donc ceux comme [1,1,2] ou [1,1,1] sont comptés, soit 64 n-uplets au total pour n=3 et m=4

  8. #7
    vgondr98

    Re : Générer un ensemble de n-uplets Python

    64, c'est le nombre que j'obtiens si on peut mettre les doublons.
    L'algo que j'utilise, c'est de faire n boucles.
    Dans la première boucle, je créé m listes contenant 1 valeur.
    Ensuite, je parcours toutes les listes créées avant et je créé m liste par listes.
    [[1],[2],[3],[4]] tour 1
    [[1],[2],[3],[4], [1,1],[1,2],[1,3],[1,4]...] tour 2
    Cela a a l'air de fonctionner.
    Il y a un petit défaut, c'est que je ne supprime pas les petites listes. Je pense qu'en le faisant, cela ferait gagner du temps.

Discussions similaires

  1. Ensemble des partie d'un ensemble avec explicitment l'ensemble vide comme élément
    Par StrangQuark dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 27/02/2021, 11h36
  2. Ensemble Mandelbrot et Julia Python
    Par Alessandra75 dans le forum Mathématiques du collège et du lycée
    Réponses: 29
    Dernier message: 16/01/2021, 16h46
  3. en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?
    Par docEmmettBrown dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 10/06/2015, 15h47
  4. Familles et n-uplets
    Par Polygone dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 06/01/2012, 18h45
  5. générer une BdD postgresql via python
    Par invite4a2d9efc dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 14/06/2011, 18h24