Petit casse tête mathématique et logique

Mammouth du PHP | 531 Messages

13 déc. 2007, 22:23

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:

ViPHP
ViPHP | 4674 Messages

14 déc. 2007, 00:58

Session out
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 4039 Messages

14 déc. 2007, 10:49

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].
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 déc. 2007, 11:14

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.
}
Modifié en dernier par Ryle le 14 déc. 2007, 12:53, modifié 1 fois.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 4674 Messages

14 déc. 2007, 12:32

J'ose reprendre Ryle, c'est in_array, et non inArray :). Mais sinon, je suis d'accord avec lui.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 déc. 2007, 12:53

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 ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 4039 Messages

14 déc. 2007, 14:28

(ouaip, comme les utf8_encode et urlencode.. )

:ordi:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 4674 Messages

14 déc. 2007, 15:54

Ç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 ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 déc. 2007, 16:06

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é.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 déc. 2007, 16:22

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 4674 Messages

14 déc. 2007, 16:29

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 :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 531 Messages

14 déc. 2007, 18:32

Je vais essayer de m'en, sortir avec toutes ces infos :)

ViPHP
ViPHP | 4039 Messages

15 déc. 2007, 14:58

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:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 4674 Messages

15 déc. 2007, 19:41

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 :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).