|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : novembre 2010 Messages : 65 ![]() |
Salut à tous ! Je rencontre un petit problème j'espère pouvoir avoir de l'aide
Donc voila soit n, la taille d'une grille d'un sudoku. Donc pour une grille à 5 lignes et 5 colonnes, n=5 . Soit également : i,j,k , la triplette qui donne la valeur d'une cause . Par exemple : 2,1,4 signifie qu'à la ligne 2, 1ère colonne, on a la valeur 4. Le problème : Mon objectif est de transformer la suite de triplette en variable unique, allant de 1 à n². Autrement dit ( toujours pour n = 5) : 1,1,1 => 1 1,1,2 => 2 ... 1,2,5 => 5 1,2,1 => 6 Afin d'établir cette relation, j'utilise la fonction suivante : n²(i-1) + n(j-1) + k Aucun soucis jusque là. Le problème que je rencontre est de faire l'inverse, ce qui est apparemment impossible avec une fonction mathématique. Il me faudrait un algo. L'objectif est donc par exemple : On me donne l'entier "6", je dois retrouver = > 1,2,1. C'est casse tête je sais :p , mais si quelqu'un a envie de se casser la tête bin ... merci d'avance ! Car je suis bloqué depuis plus de 2 jours pour trouver une solution .. |
|
|
00
|
|
|
#2 |
![]() ![]() |
http://fr.wikipedia.org/wiki/%C3%89q..._ax%2Bby_%3D_c ?
EDIT : désolé, j'avais lu trop rapidement, mon lien est mauvais car k est également une inconnue. Donc plus généralement, ton équation est de type diophantienne du premier degré (mais pas forcément une identité de Bézout, ce qui ne serait le cas que si k est une constante, i.e. ssi tu n'avais que 2 inconnues) |
|
00
|
|
|
#3 |
![]() ![]() |
Au passage je suppose que tu voulais dire 1,1,5 => 5 ?
Au-delà du caractère général de mon message précédent, ton problème a des contraintes spécifiques qui font que l'équation me semble facile à résoudre à coup de division et modulo. E.g. pour 6 quelque chose du genre : k = 6 (mod n) = 1 (si n = 5) i = ceiling(6 / n) (mod n) = 2 (si n = 5) j = ceiling(6 / n²) (mod n) = 1 (si n = 5) |
|
00
|
|
|
#4 | ||||
|
Expert Confirmé
![]() Inscription : août 2006 Messages : 3 195 ![]() |
Lai,
Oui, je suis arrivé au même genre de résultat : Code C :
Code :
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
||||
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : novembre 2010 Messages : 65 ![]() |
Franck Dernoncourt, j'ai l'impression que cela ne marche pas.
Par exemple pour 37 Pour n = 5 On a k = 37 % 5 = 1 ( ok ) on a i = (37/5)% 5 = 2 ( ok ) Mais on a : j = (37/5²) % 5 = 1 alors qu'il devrait être égale à 3 :/ |
|
|
00
|
|
|
#6 |
![]() ![]() |
Ah peut-être, je n'ai lu que très rapidement ton message et n'ai pas regardé les détails, je voulais simplement te donner une idée d'algorithme pour trouver les variables i,j et k. Je te laisse faire la fin
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : novembre 2010 Messages : 65 ![]() |
Bin sincérement j'y travail depuis 2 jours j'y arrive pas ..
Pour le i et le k apparemment c'est bon mais le j .. |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : août 2006 Messages : 3 195 ![]() |
Xia,
Il se pourrait que lire mon message précédent t'aide !
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
10
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : novembre 2010 Messages : 65 ![]() |
Oui dsl merci de ta réponse, j'ai vraiment eu du mal à la comprendre pourrais-tu me l'expliquer un peu ?
Quel sont toutes ces variables ? Vraiment désolé .. |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : août 2006 Messages : 3 195 ![]() |
Vie,
J'ose espérer que tu plaisantes !! n,i,j,k sont les mêmes que les tiens, les autres sont des calculs intermédiaires et/ou définitifs, et dans le code, il y a de petits commentaires pour dire leur finalité (enfin, les 3 qui comptent, celles qui contiennent ce que tu cherches). Regarde la liste de sortie pour t'en convaincre.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com