Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1404 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Passage d'une matrice (1, j) à une matrice (i', j')

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage d'une matrice (1, j) à une matrice (i', j')

n°2286417
MaybeEijOr​Not
but someone at least
Posté le 12-08-2016 à 11:38:50  profilanswer
 

Bonjour,
 
 
Je cherche à transformer une matrice 1 ligne (bwef un tableau simple :o ) en une matrice n lignes (un tableau multi-dimensionnel).
Je pars-donc d'une matrice (1, j) et souhaites arriver à une matrice (i', j') où :
- i' * j' = j (oui je garde le même nombre de données)
- i' =< j' (plus de colonnes que de lignes dans la mesure du possible)
- 2 * i' >= j' (je ne veux pas dépasser le ratio de 2 fois plus de colonnes que de lignes)
 
En gros je pense qu'on peut résumer les 2 dernières conditions par 2 >= i' / j' >= 1.
 
Une idée autre que de tester tous les couples de dividendes et diviseurs entiers (avec dividendes et diviseurs inférieur à racine carrée de j) ayant pour quotient un entier?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
mood
Publicité
Posté le 12-08-2016 à 11:38:50  profilanswer
 

n°2286420
rufo
Pas me confondre avec Lycos!
Posté le 12-08-2016 à 12:01:09  profilanswer
 

Tu fais une bête boucle de parcours de ton tableau ligne et quand j % nb colonnes (de ta matrice) == 0, tu incrémentes i.
 
Edit : j'avais pas compris que le nb de colonnes était à déterminer.


Message édité par rufo le 12-08-2016 à 12:23:24

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2286422
DDT
Few understand
Posté le 12-08-2016 à 12:20:43  profilanswer
 

MaybeEijOrNot a écrit :

Bonjour,
 
 
- 2 * i' >= j' (je ne veux pas dépasser le ratio de 2 fois plus de colonnes que de lignes)


Comment tu comptes faire ça pour un vecteur de 89 éléments par exemple?
 
Tu peux partir de la racine carrée et tester tous les couples jusqu'à trouver un quotient entier en effet, mais je vois pas comment tu peux assurer le respect de cette condition.


---------------
click clack clunka thunk
n°2286423
rufo
Pas me confondre avec Lycos!
Posté le 12-08-2016 à 12:24:43  profilanswer
 

Tu peux décomposer en facteurs premiers j.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2286442
MaybeEijOr​Not
but someone at least
Posté le 12-08-2016 à 14:48:12  profilanswer
 

@DDT : oui j'ai omis de dire que je pars d'un nombre pair.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2286443
DDT
Few understand
Posté le 12-08-2016 à 14:55:43  profilanswer
 

Ok mais même question avec 94 alors. :D


---------------
click clack clunka thunk
n°2286452
MaybeEijOr​Not
but someone at least
Posté le 12-08-2016 à 15:24:17  profilanswer
 

rufo a écrit :

Tu peux décomposer en facteurs premiers j.


 
En effet ça a l'air bien, juste qu'en fait il faudra que j'entre des limitations dans mon nombre de données pour éviter des cas pourris comme 94. :/
 
94 = 2 * 47
 
Faut donc que je commence par revoir le problème en entrée. :(  
 
Merci pour votre aide.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2286463
rufo
Pas me confondre avec Lycos!
Posté le 12-08-2016 à 17:38:04  profilanswer
 

C'est quoi le besoin initial. Pourquoi as-tu besoin de transformer un tableau ligne en matrice sans connaître à l'avance le nb de colonnes ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2286466
MaybeEijOr​Not
but someone at least
Posté le 12-08-2016 à 19:08:31  profilanswer
 

Parce que l'utilisateur fait une liste que j'affiche à ma sauce ensuite en rectangle et si ce n'est pas un rectangle complet ça ne donne pas le résultat escompté.
Mais bon problème réglé, l'utilisateur sera prévenu qu'il manque tant pour pouvoir lancer le script, 3 choix :
- l'utilisateur continue à alimenter la liste
- l'utilisateur retire de la liste pour tomber sur un format plus petit
- je complète pour arriver au format supérieur


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2292097
Bidem
Posté le 18-11-2016 à 17:12:01  profilanswer
 

Problème intéressant.
 
L'astuce est de partir de la racine carré de j ;)
 
Voila ma solution en java :

Code :
  1. public class TestCarre {
  2.   public static void main(String[] args) {
  3.    
  4.     for (int J = 0; J <= 100; J++) {
  5.       // on initialise ip avec la racine carre de J
  6.       double ip = Math.sqrt(J);
  7.       double jp;
  8.       // on teste si ip est une valeur entière
  9.       if (Math.rint(ip) == ip) {
  10.         // cas simple où J est un carré => solution trouvée
  11.         jp = ip;
  12.       } else {
  13.         ip = Math.floor(ip); // on initialise ip à sa valeur entière inférieure
  14.         jp = J / ip;
  15.       }
  16.  
  17.       // Ici on est sur que ip est un entier
  18.       // Le but est de trouver la plus grande valeur de ip pour que jp = J / ip soit aussi entier
  19.       while ((ip > jp / 2) && (Math.rint(jp) != jp)) {
  20.         ip--;
  21.         jp = J / ip;
  22.       }
  23.      
  24.       // affichage si succès
  25.       if (Math.rint(jp) == jp && (ip > jp / 2)) {
  26.         System.out.println("J="+ J + " : Succes : ip="+(int)ip + ", jp=" + (int)jp);
  27.       }
  28.     }
  29.   }
  30. }


Et le résultat :
J=1 : Succes : ip=1, jp=1
J=4 : Succes : ip=2, jp=2
J=6 : Succes : ip=2, jp=3
J=9 : Succes : ip=3, jp=3
J=12 : Succes : ip=3, jp=4
J=15 : Succes : ip=3, jp=5
J=16 : Succes : ip=4, jp=4
J=20 : Succes : ip=4, jp=5
J=24 : Succes : ip=4, jp=6
J=25 : Succes : ip=5, jp=5
J=28 : Succes : ip=4, jp=7
J=30 : Succes : ip=5, jp=6
J=35 : Succes : ip=5, jp=7
J=36 : Succes : ip=6, jp=6
J=40 : Succes : ip=5, jp=8
J=42 : Succes : ip=6, jp=7
J=45 : Succes : ip=5, jp=9
J=48 : Succes : ip=6, jp=8
J=49 : Succes : ip=7, jp=7
J=54 : Succes : ip=6, jp=9
J=56 : Succes : ip=7, jp=8
J=60 : Succes : ip=6, jp=10
J=63 : Succes : ip=7, jp=9
J=64 : Succes : ip=8, jp=8
J=66 : Succes : ip=6, jp=11
J=70 : Succes : ip=7, jp=10
J=72 : Succes : ip=8, jp=9
J=77 : Succes : ip=7, jp=11
J=80 : Succes : ip=8, jp=10
J=81 : Succes : ip=9, jp=9
J=84 : Succes : ip=7, jp=12
J=88 : Succes : ip=8, jp=11
J=90 : Succes : ip=9, jp=10
J=91 : Succes : ip=7, jp=13
J=96 : Succes : ip=8, jp=12
J=99 : Succes : ip=9, jp=11
J=100 : Succes : ip=10, jp=10


Message édité par Bidem le 18-11-2016 à 17:14:33

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Passage d'une matrice (1, j) à une matrice (i', j')

 

Sujets relatifs
Passage de variables entre méthode imbriquéesPassage d'excel à une page web
Construire une image en .bmp à partir d'une matrice RGBtableau et matrice
Représentation sous forme d'une image une matrice sur Rcomment fair un passage de stage et gameover ?
Jeu de plateforme AS3 (problème de passage de niveau)[PHP] Url Rewriting et passage de variables GET
passage de matrice en parametreprobléme : passage de l'adresse d'une matrice
Plus de sujets relatifs à : Passage d'une matrice (1, j) à une matrice (i', j')


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR