IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Partitonnement "dual" pour des dés 6 faces


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 41
    Par défaut Partitonnement "dual" pour des dés 6 faces
    Bonjourr à tous !

    Voici un petit problème que je rencontre en ce moment. j'ai des dés à 6 faces sur lesquelels on voit des animaux (A, B et C) diurnes et nocturnes (+ et -), soit:

    faces = [A+, B+, C+, A-, B-, C-]

    Il s'agit de partitionner de deux façon distinctes et duales cet ensemble:

    * si on a trois joueurs: [A+, A-], *[B+, B-] et [C+, C-]
    * n si on a deux joueurs: [A+, B+, C+] et [A-, B-, C-]

    comment partitionner de deux facons duales ce produit cartésien faces = [A, B, C] * [+, -] ?
    donc une fonction part(nb_joueurs, faces) { ... } pour éviter d'avoir à coder le partitionnement en dur.

    Quelqu'un aurait il une idée ?

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Par défaut
    Bonjour,
    j'ai du mal, à comprendre ta question. Le partitionnement à 3 joueurs est un partitionnement sur les animaux alors que dans le cas à deux joueurs c'est un partitionnement sur le comportement …
    Quoi que tu fasses tu finiras par le coder «en dur» d'une façon ou d'une autre ; et avec un si petit nombre de données c'est ce qui est sans doute le plus simple à faire.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 41
    Par défaut
    Efictivement j'ai fini par le coder en dur pour la raison que tu innvoques : 'petit nombre de cas'. A contrecoeur cependant...

    Oui, On a bien 3 animaux * 2 couleurs/comportements

    * soit 3 joueurs, qui arborent chacun un des trois types d'animaux (A, B ou C)
    * ou bien 2 joueurs, et dans ce cas ce sont les couleurs qui font alliance

    Note:
    le système de capture est paradoxal (comme Pierre-Ciseaux-Feuille) et il est croisé : que ce soit à 3 ou 2 joueurs, c'est toujours :

    A+ --> B- --> C+ --> A- --> B+ --> C- --> et ainsi de suite !

    Par ailleurs il faut arriver à placer 2 jetons (D6, face visible à soi au dessus) au voisinage d'un jeton adverse pour le capturer, les animaux étant peu courageux par nature... c'est en effet un jeu de conquête de territoires dans la jungle entre différents fauves (voir capture d'écran du prototype)

    plus généralement, ce système de transposition est à considérer pour des cas où vous seriez amenés à représenter des plateaux de jeu sous 4 points cardinaux différents avec le minimum de code, imaginez que vous représentiez un échiquier vu depuis le Nord (Noirs), le Sud (Blancs) ou l'Est et l'Ouest (les places pour deux spectateurs), c'est ce que je fais expérimentalement avec mon projet ColorChess. C'est valable aussi pour des jeux à 4 tels que belote et bridge.

    Voilà merci pour ces remarques et patience, je code encore quelques semaines et ce sera en ligne assez vite...

    Bonne journée aux codeurs !

    Nom : plateau-prerempli.png
Affichages : 170
Taille : 160,1 Ko

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    tu aurais pu donner une valeur par face
    selon le cas pour connaitre la valeur tu fait une division entière par 10
    ou tu cherche le reste de la division

    NOM VAL DIV 10 MOD 10
    A 11 1 1
    -A 12 1 2
    B 21 2 1
    -B 22 2 2
    C 31 3 1
    -C 32 3 2

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 229
    Par défaut
    Ou encore , tu aurais pu numéroter les 6 faces de 1 à 6 (pas très original)
    Et utiliser la fonction mod()

    Modulo 2 : mod(1,2)=mod(3,2)=mod(5,2)=1 ;;; mod(2,2)=mod(4,2)=mod(6,2)=0 : 2 valeurs possibles
    Modulo 3 : mod(1,3)=mod(4,3)=1 ;;; mod(2,3)=mod(5,3)=2 ;;; mod(3,3)=mod(6,3)=0 : 3 valeurs possibles.

    Donc en fait, rien à faire.

  6. #6
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 644
    Par défaut Ne pas diviser pour régner
    Bonjour,

    La démarche des modulos est effectivement celle qui paraît la plus appropriée. Mais il est possible de limiter l'usage des divisions implicites.

    En syntaxe C et C like :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // L est le n) de lettre : 0 à 2 et S est le signe avec 1 pour + et 0 pour -
    L = Val < 3 ? Val : Val - 3; // ou L = (Val + (Val + 1) >> 2) & 3 qui reste meilleur que L = mod(Val, 3).
    S = Val & 1;
    Nom	Val	S	L	
     A+	0	1	0	
     B-	1	0	2	
     C+	2	1	1	
     A-	3	0	0	
     B+	4	1	1	
     C-	5	0	2
    Il est aisé de deviner que je n'aime pas beaucoup les divisions (même cachées dans un modulo).

    Salutations

Discussions similaires

  1. Réponses: 54
    Dernier message: 28/03/2023, 16h07
  2. [Débat] Quel avantage offre Java pour réaliser des applis web face au php ?
    Par whitespirit dans le forum Développement Web en Java
    Réponses: 10
    Dernier message: 12/06/2008, 07h38
  3. [Logiciel]Cherche graphisme pour des interfaces visuelles
    Par smyley dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 14/11/2004, 02h13
  4. package ambiguïté pour des classes de même nom
    Par soad dans le forum Langage
    Réponses: 2
    Dernier message: 10/06/2004, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo