Est-ce que quelqu'un aurait une idée pour gérer des tableaux à 3 dimensions sur une 68k ?
Je veux pouvoir lire et écrire dans ces tableaux de manière pas trop compliquée.
J'ai pensé à plusieurs possibilités pas très convaincantes... mais pour ne pas vous influencer, je ne vous les dévoilerai que lorsque j'aurai eu quelques réponses.
Merci pour vos suggestions.
PS : C'est dans le but d'écrire un programme de résolution de sudoku par raisonnement (et non par exhaustion ou par essai-erreur)
Tableaux à 3 dimensions
10 posts
• Page 1 of 1
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Tableaux à 3 dimensions
Oui, c'est à peu près ça...
En fait, je veux un tableau à 3 indices i,j,k.
J'ai eu comme idées de départ les suivantes :
- Dans une matrice (tableau à 2 dimension) mettre des listes converties en chaînes de caractères... mais le problème, c'est qu'il faut faire une conversion à chaque lecture et 2 à chaque écriture : ça prend énormément de temps.
- Convertir n matrices en listes puis faire la liste de celles-ci, ce qui donne à nouveau une matrice. Là aussi, il faut des conversions, mais je pense que c'est un peu plus rapide.
Ma dernière idée en date (cette nuit) est la suivante : puisque dans mon tableau, je ne veux ranger que des 0 et des 1, je pourrais mettre des nombres en binaire dans une matrice, chaque bit représentant la 3ème dimension.
Je pense que ça peut être la meilleure solution, si je trouve un moyen simple d'extraire le kème bit, voire de manipuler tous les kèmes bits d'une ligne ou d'une colonne en même temps.
Si vous avez mieux, n'hésitez pas.
PS : 1) qu'est-ce que tu faisais debout à 2h du mat' ?
2) J'aimerais mieux éviter d'avoir à apprendre le C ou pire l'assembleur juste pour ça...
En fait, je veux un tableau à 3 indices i,j,k.
J'ai eu comme idées de départ les suivantes :
- Dans une matrice (tableau à 2 dimension) mettre des listes converties en chaînes de caractères... mais le problème, c'est qu'il faut faire une conversion à chaque lecture et 2 à chaque écriture : ça prend énormément de temps.
- Convertir n matrices en listes puis faire la liste de celles-ci, ce qui donne à nouveau une matrice. Là aussi, il faut des conversions, mais je pense que c'est un peu plus rapide.
Ma dernière idée en date (cette nuit) est la suivante : puisque dans mon tableau, je ne veux ranger que des 0 et des 1, je pourrais mettre des nombres en binaire dans une matrice, chaque bit représentant la 3ème dimension.
Je pense que ça peut être la meilleure solution, si je trouve un moyen simple d'extraire le kème bit, voire de manipuler tous les kèmes bits d'une ligne ou d'une colonne en même temps.
Si vous avez mieux, n'hésitez pas.
PS : 1) qu'est-ce que tu faisais debout à 2h du mat' ?
2) J'aimerais mieux éviter d'avoir à apprendre le C ou pire l'assembleur juste pour ça...
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Tableaux à 3 dimensions
mouais...
mais ça veut dire quoi "chaque bit représentant la 3ème dimension" ?
mais ça veut dire quoi "chaque bit représentant la 3ème dimension" ?
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`
Pas de support par MP, merci.
Pas de support par MP, merci.
-
tama
Niveau 14: CI (Calculateur de l'Infini)- Posts: 10994
- Joined: 19 Dec 2005, 00:00
- Location: /dev/null mais je survis :)
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: epita ING3 \o
Re: Tableaux à 3 dimensions
Je vais tenter d'être plus clair.
Je cherche à avoir un tableau ayant n cases en hauteur, p en largeur et q en profondeur (n=p=q=9 dans le cas du sudoku) dans lesquelles je pourrai mettre soit 0 soit 1 (ce serait mieux si je pouvais mettre autre chose... mais restons modestes).
Ma dernière idée consiste à prendre une matrice à n lignes et p colonnes et de mettre dans chaque case un nombre ayant q bits en binaire (c'est-à-dire que dans son écriture il y au maximum q chiffres 0 ou 1).
Si je peux manipuler aisément ces bits un par un, j'obtiens un équivalent correct du tableau que je cherche à créer.
Je cherche à avoir un tableau ayant n cases en hauteur, p en largeur et q en profondeur (n=p=q=9 dans le cas du sudoku) dans lesquelles je pourrai mettre soit 0 soit 1 (ce serait mieux si je pouvais mettre autre chose... mais restons modestes).
Ma dernière idée consiste à prendre une matrice à n lignes et p colonnes et de mettre dans chaque case un nombre ayant q bits en binaire (c'est-à-dire que dans son écriture il y au maximum q chiffres 0 ou 1).
Si je peux manipuler aisément ces bits un par un, j'obtiens un équivalent correct du tableau que je cherche à créer.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Tableaux à 3 dimensions
des modulos sur les (ai,j) ? tu pourais recuperer un des chiffres du nombre normalement
Segata sanshiro ! せがた三四郎
Prosternez vous devant le Dr. Lakav !
Prosternez vous devant le Dr. Lakav !
-
Yak
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3382
- Joined: 04 Feb 2005, 00:00
- Location: Le nez dans mon ordi
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: PSI
Re: Tableaux à 3 dimensions
Et sinon, en les transformant en expression avec les fonctions left() et right()
-
Ver2guerre
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 2473
- Joined: 29 Sep 2006, 00:00
- Location: Le plus loin possible des casio
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: boup
Re: Tableaux à 3 dimensions
On peut le faire en utilisant les fonctions shift et modulo 2... mais il reste à voir la rpidité d'accès.
Il faut que je teste.
Il faut que je teste.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Tableaux à 3 dimensions
J'ai testé... et ça marche plutôt pas mal.
Mon solveur résout les sudokus faciles et moyens en 30 à 300s.
Comme j'utilise uniquement des techniques de logique pour la résolution, c'est assez lent mais déjà 2 fois plus rapide que ma précédente version.
Mon solveur résout les sudokus faciles et moyens en 30 à 300s.
Comme j'utilise uniquement des techniques de logique pour la résolution, c'est assez lent mais déjà 2 fois plus rapide que ma précédente version.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Tableaux à 3 dimensions
Sur ma vielle ti 82, j'avais utilisé une petite astuce pour avoir des tableaux en trois dimensions (justement pour créer un générateur de grilles de Sudoku il me semble ^^, et puis pour créer un algorithme de compression d'images), qui est la suivante :
La ti 82 (tout comme la 89) peut retenir, pour un cnombre quelconque X, 14 chiffres. Si, comme c'est ton cas, dans ton tableau en 3D tu n'a besoin que de valeurs entières et comprises entre 0 et 9 (inclue), tu peux dire que chacune des 14 décimales de ton nombre X est dans la 3ème dimension.
Donc tu crée une matrice (là t'es en 2 dimension), que tu ne remplis avec des nombres avec au plus 14 décimales (tu es en 3D).
Alors bien sûr, il faut une formule pour entrer une valeur à la 7ème décimale de X par exemple, et une autre pour récupérer la 12ème décimale de X, mais comme je les ai fait, je peux te les donner. Il n'y aura plus qu'à les adapter pour la 89 et c'est bon !!
PS : mais bon comme tu a déjà réussi ton programme, je ne suis pas sur de t'être grandement utile…
La ti 82 (tout comme la 89) peut retenir, pour un cnombre quelconque X, 14 chiffres. Si, comme c'est ton cas, dans ton tableau en 3D tu n'a besoin que de valeurs entières et comprises entre 0 et 9 (inclue), tu peux dire que chacune des 14 décimales de ton nombre X est dans la 3ème dimension.
Donc tu crée une matrice (là t'es en 2 dimension), que tu ne remplis avec des nombres avec au plus 14 décimales (tu es en 3D).
Alors bien sûr, il faut une formule pour entrer une valeur à la 7ème décimale de X par exemple, et une autre pour récupérer la 12ème décimale de X, mais comme je les ai fait, je peux te les donner. Il n'y aura plus qu'à les adapter pour la 89 et c'est bon !!
PS : mais bon comme tu a déjà réussi ton programme, je ne suis pas sur de t'être grandement utile…

D'abord continuer, ensuite commencer.
-
vibra
Niveau 9: IC (Compteur Infatigable)- Posts: 324
- Joined: 26 Dec 2007, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: terminale
-
ProgVal
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 2747
- Joined: 05 Jul 2007, 00:00
- Location: Metz
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Terminale S SI (Sciences de l'Ingénieur)
10 posts
• Page 1 of 1
Who is online
Users browsing this forum: ClaudeBot [spider] and 6 guests