CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python liste

ZxyxZ
ZxyxZ
Niveau 6
22 mars 2021 à 15:02:56

Bonjour, j'aurai besoin d'aide ! Je dois mélanger un tableau mais je suis un peu perdu... Il m'en faut 30 différents.

__A B C D E F
1
2
3
4
5
6

Il se présente sous forme d'échiquier, à l'intérieur se trouve des caractères de A à Z et de 0 à 9 (36 caractères au total). Je dois les mélanger aléatoirement afin qu'il n'y ait pas deux fois les mêmes caractères dans le même tableau.
Pour le moment j'ai fait ça :

import random

liste = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "K", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2","3","4","5","6","7","8","9"]
ch=""

for x in range(36):
random.shuffle(liste)
for el in liste :
ch=ch+str(el)+" "

print(x)
print(ch)
print("\n\n")
ch =""

Le problème est que je ne peux pas avoir le même résultat en case A1 sur le tableau 1 puis sur le tableau 2... (le nombre max de tableau est donc de 36)... Je ne vois vraiment pas comment faire (mes connaissances sont assez proches du néant). Si un âme charitable veut bien m'aider, je lui en serai fortement reconnaissant !

godrik
godrik
Niveau 30
22 mars 2021 à 16:08:51

Je vois.

Ce qu'il te faut est avoir pour chaque cse du tableau une liste des valeures qui sont utilisable pour cette case.

Ensuite quand tu genere tes tableaux, pour une case en particulier tu tires un caractere dans la liste des caractere qui sont valable pour cette case. Et ensuite tu retire cette valeur de la liste des valeure acceptable pour cette case.

ZxyxZ
ZxyxZ
Niveau 6
22 mars 2021 à 17:28:41

D'accord, merci pour ta réponse !
Mais si je fais ça je vais pas avoir plusieurs fois les mêmes valeurs dans un même tableau ?

godrik
godrik
Niveau 30
22 mars 2021 à 18:43:20

tu peux expliquer les contraintes precisement?
Tu ne veux pas qu'un caractere apparaissent deux fois dans le me tableau.

Et aussi il faut que les case A1 de chacun des 30 tableau que tu generes soit aussi differente?

Message édité le 22 mars 2021 à 18:43:33 par godrik
ZxyxZ
ZxyxZ
Niveau 6
22 mars 2021 à 19:58:57

Oui, c'est ça. Du coup, au maximum je peux faire 36 tableaux (il y a 36 caractères différents)
Désolé je n'ai pas été assez clair

[Black_Spirit]
[Black_Spirit]
Niveau 19
22 mars 2021 à 20:30:53

Pas sûr d'avoir tout compris mais si ça peut t'aider, y a un module dans la librairie standard qui s'appelle itertools et propose des fonctions sympa, par exemple une fonction qui te retourne toutes les permutations possibles dans une liste

Par exemple

import itertools
import random


l = [1, 2, 3]

p = list(itertools.permutations(l))
print(p)  # [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
c = random.choices(permutations, k=2)
print(c)  # [(1, 3, 2), (2, 1, 3)]

Dans l'exemple ci-dessus, "permutations" retourne l'ensemble des permutations possibles et "choices" choisit aléatoirement k valeurs (ici 2) dans une liste.

Message édité le 22 mars 2021 à 20:31:36 par [Black_Spirit]
godrik
godrik
Niveau 30
22 mars 2021 à 21:06:54

D'accord.
Du coup, tu peux maintenir une liste de "disponible" pour chaque case. Et une liste de disponible pour le tableau que tu genere. Quand tu prends une couluer assure toi qu'elle soit valide pour la case et pour le tableau.

ZxyxZ
ZxyxZ
Niveau 6
22 mars 2021 à 21:11:03

Merci je ne connaissais pas du tout ce module !

Je vais réexpliquer mieux mon problème. En fait le résultat ça doit être ça :
https://image.noelshack.com/fichiers/2021/12/1/1616443415-etiquette.png
(pour 30 tableaux)

Les caractères à mélanger : de A à Z et 0 à 9 (36 au total)
Il y a deux contraintes :
- Il ne doit pas y avoir deux fois le même caractère dans un même tableau
- Entre les tableaux x et y, à la case A1, le caractère ne doit pas être identique (exemple sur la photo à D5 il y a 0 dans le tableau 8 et 9)

Message édité le 22 mars 2021 à 21:15:06 par ZxyxZ
Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment