Page 1 sur 1

Petit casse tête mathématique et logique

Posté : 13 déc. 2007, 22:23
par supercanard
Bonjour,
je suis confronté à un problème mathématique ou(et) logique.
Pour être clair je sèche complètement.

Comme il va m'être dur d'expliquer cela sans illustrer voici un lien :
http://supercanard.phpnet.org/jeux/carte.php

Concentrez vous sur le tableau :wink:
Pour l'instant ils est construit dans le dur mais il va falloir le construire dynamiquement

Le but que je recherche :
- Nous récupérons dans la base de données un chiffre (Dans l'exemple de la page : 74)
- Le tableau se construit (10 lignes, 10 colonnes)
- La position récupéré dans la base est identifiée et affichée dans la cellule correspondante
- Autour de la position initiale (Ici 74) 4 autres chiffres s'affichent comme ceci : Celui de Gauche, droite, haut et bas, autour du chiffre de base. Les autres ne s'affichent pas. Comme on le voit dans l'exemple autour du 74.

Et c'est surtout la dernière étape que je n'arrive pas à éclaircir.

Concrètement on pourrais faire quelques opérations du genre $chiffredebase + 1, $chiffredebase + 2, $chiffredebase + 10 et $chiffredebase - 10 pour identifier les chiffres à afficher. Déjà un premier pas...
Seulement il y a un hic : Si l'on se trouve sur un bord, il n'y a plus 4 chiffres à afficher mais 3. Et dans une extrémité il n'y en aurait plus que 2... ça commence à compliquer les choses et à faire beaucoup de if et else...

Si quelqun à une piste... je sèche et je comprends pourquoi j'ai toujours détesté les casse-têtes chinois :lol:
Bonne soirée :wink:

Posté : 14 déc. 2007, 00:58
par Hywan
Session out

Posté : 14 déc. 2007, 10:49
par Berzemus
cette adresse-ci marche:
http://supercanard.phpnet.org/jeux/

Tu le fais comment ton tableau ?

Mon idée serait de faire un tableau bidimensionnel:
$tableau = array(
 "x" => array (
     "y" = "valeur"
    )
  );
ainsi, tu peux appeler chaque case par ses coordonnées X Y (te mets le tout dans une classe, avec une méthode affichage et tout le reste).

La valeur de "Y" est tout simplement la valeur attribuée (74 dans ton exemple). Note que du coup ce serait facile à retrouver, puisque ce serait la case $tableau[6][3].

Posté : 14 déc. 2007, 11:14
par Ryle
Je ne vois pas bien la difficulté de la chose. Tu as 4 cases à afficher autour de la première, tu calcule effectivement +1, -1, +10, -10 et le seul test que tu as à faire c'est de vérifier que ce résultat est supérieur à 0 et inférieur à ton nombre de cases. C'est pas non plus une plétore de tests... c'en est encore moins si tu construit ton tableau dynamiquement avec une boucle :
$tabCelluleAIndiquer = array (
  $tonNombre, 
  $tonNombre-10,
  $tonNombre-1,
  $tonNombre+1,
  $tonNombre+10
);

for ($i=1; $i<=$nombreTotalCellule; $i++) {
  // construit les ligne les cellules, etc.
  if (in_array($i, $tabCelluleAIndiquer)) {
    // affiche le lien
  }
  // cacul de modulo pour fermer les lignes, etc.
}

Posté : 14 déc. 2007, 12:32
par Hywan
J'ose reprendre Ryle, c'est in_array, et non inArray :). Mais sinon, je suis d'accord avec lui.

Posté : 14 déc. 2007, 12:53
par Ryle
Bien vu ! Je rectifie, merci :)

(j'ai d'ailleurs jamais compris pourquoi certaines fonctions contiennent des "_" pour séparer les mots et d'autres pas... j'ai jamais non plus cherché ceci dit ;))

Posté : 14 déc. 2007, 14:28
par Berzemus
(ouaip, comme les utf8_encode et urlencode.. )

:ordi:

Posté : 14 déc. 2007, 15:54
par Hywan
Ça dépend de la mode chez les développeurs PHP.
D'ailleurs, je songe de plus en plus à quitter PHP. J'ai fais la rencontre de Java, et c'est tellement mieux le typpaaaaaaaage ! Hehe. À quand une version PHP correctement typé (dans laquelle il saurait faire la différence entre 0 et false par exemple, ou le multi-typage d'une variable cesserait d'exister etc.). Il faut avouer qu'un fort typage est très appréciable. Autant, j'adore la souplesse de PHP (les tableaux sont merveilleux, peu importe la taille, ils se redimensionnent tout seul — oui mais comment ? comme en Java —), autant certaines choses sont dérangeantes. Peut être dans la version 6 ?
Ah, j'oubliais un point fort de PHP, la capacité d'instancier une classe abstraite, j'ai toujours trouvé ça très malin, et ça m'a parfois manqué en Java, mais bon, c'est des cas très précis.

Je ne vais pas lui pourrir son poste, au mieux, on démarre un nouveau poste pour en débattre ;-).

Posté : 14 déc. 2007, 16:06
par zeus
Ce que tu dénonces Hywan, c'est celà même qui à fait la popularité de PHP. Car ce sont ces aspects qui font que PHP est facilement appréhendable par un débutant ;)

Mais je suis d'accord avec toi, ce sont assez vite des problèmes pour des développements un tant soit peu évolué.

Posté : 14 déc. 2007, 16:22
par Ryle
PHP n'est pas Java, et ce n'est pas sa vocation que de lui ressembler (sinon autant passer à java directement et arrêter de s'embêter avec php ;)). Si les deux langages permettent de faire des appli web, ils ne sont pas, à mon sens, destinés au même usage.

Tout est question de contexte, d'environnement, de délais, de framework, de personnes impliqués etc. c'est en fonction de cela qu'on va pouvoir décider s'il vaut mieux utiliser php ou java, plus que sur la souplesse ou la rigueur :)

Personnellement je jongle entre les deux (java pour le taf, php pour le fun) et ait intégré énormément de la rigueur de java dans mes dev php. Je regrette par contre de ne pouvoir intégrer un peu de la souplesse de php chez java, effectivement sur les tableaux à plusieurs dimensions (le vecteur ou la collection sont quand même plus lourds à manipuler), mais j'ai reproduit d'un côté comme de l'autre quelques méthodes bien utiles :)

Posté : 14 déc. 2007, 16:29
par Hywan
Sauf qu'on utilise plus les vecteurs en fait :P (enfin, c'est que mes profs m'ont dit ;-), et je le constate, et en Java 5, les collections se manipulent plus facilement). J'use aussi de beaucoup de rigueurs dans mes développements en PHP, mais je trouve PHP trop permissif à mon goût. Même si c'est ce qui a fait sa popularité ; j'aurais préféré qu'il soit moins populaire et plus stricte ;-) (et on aurait eu moins de questions bêtes sur le forum hihi :roll:). J'ai des questions à te poser Ryle, on va continuer par mp si ça ne te dérange pas :).

Posté : 14 déc. 2007, 18:32
par supercanard
Je vais essayer de m'en, sortir avec toutes ces infos :)

Posté : 15 déc. 2007, 14:58
par Berzemus
on va continuer par mp si ça ne te dérange pas :).
èh, c'est pas la peine de nous priver des conversations les plus intéressantes !

ce serait dommage.. :cry:

Posté : 15 déc. 2007, 19:41
par Hywan
Je ferais un compte-rendus en temps utile ;-), ne t'en fais pas. Si j'ai des questions à poser par mp, c'est que ça ne concerne pas tout le monde :).