Compter les trajets dans une matrice

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Bonjour

Si on écrit "ON PEUT LIRE LA PHRASE 276 FOIS"
sous form de matrice 3 * 23
il y 276 possiblité de lire la phrase
il y a 25 lettres ,la premiere lettre ne compte
pas
24 !
----------- = 276
(2! * 22!)



/url/img

dévelloper un algo pour compter les trajets

Merci

14 réponses

Messages postés
14769
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 février 2021
151
Bonjour,

Quelle est la question ?
Lis le point 1 de ma signature.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonsoir,
D' après une lecture visuelle de la matrice,
je crois deviner ta demande.

Partant toujours de la première lettre (ligne1, colonne 1),pour reconstituer la phrase, il faudra lire verticalement,
en se décalant chaque fois d' une colonne.

Trajet=0
For Decale=0 To 25
Lig=0
MaChaine=""
'lecture horizentale
For Col=0 To Decale
MaChaine=MaChaine & Matrice(Lig,Col)
Next Col
'lecture verticalale
Col=Decale
For Lig=0 T0 25
MaChaine=MaChaine & Matrice(Lig,Col)
Next Lig
Trajet=Trajet+1
Next Decale

J'espère ne pas me tromper..
[] Ce qui va sans dire. va mieux en le disant.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour
On part toujours de la premiere case et pour
chaque case il y a deux possibilités
la question est de calculer tous les trajets
entre la première case (0,0) et la derniere case
(2,22) pour lire ON PEUT LIRE LA PHRASE 276 FOIS
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Bonjour, ShayW
je crois que tu cherches à nous donner le vertige.
Tu as réussi à me le donner, en ce qui me concerne

Je ne suis par certain de moi, mais la transposition logique en décalages logiques devrait aboutir à ceci, si je ne me suis pas trompé (ce qui est on ne peut plus possible)

 nbcol = 23
  nblig = 3
  compte = nblig * 2 - 1
  For i = nbcol - compte To 1 Step -1
    compte = compte + (i * (nblig - 1)) / (nblig-1)
  Next


patapé, hein, si je me suis trompé.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
J'azi dit une ânerie, là (tu ne dones vraiment le vertige).
J'ai les yeux qui font tilts en imaginant la succession des décalages.
Un réexamen plus attentif me fait te proposer plutôt ceci (sans garantie aucune, car là ...) :

 nbcol = 23
  nblig = 3
  compte = nbcol - (nblig - 1)
  For i = nbcol - 1 - nblig - 1 To (nblig - 1) Step -1
    compte = compte + (i * (nblig)) / (nblig - 1)
  Next

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Hé zut !
Le nombre de lettres peut varier et cela change toute ma "vision" des choses, puisque ce nombre intervient également !

On reprend tout ===>>

nbcol = 23
  nblig = 3
  compte = nbcol - (nblig - 1)
  For i = nbcol - 1 - nblig - 1 To (nblig - 1) Step -1
    compte = compte + (i * (nblig)) / (nblig - 1)
  Next


avec la fonction dudule :

Private Function dudule(nb As Integer) As Integer
  t = nb
  For i = 1 To t - 1
    nb = nb * (t - i)
  Next
  dudule = nb
End Function


Si toujours pas cela, j'arrête (c'est une torture).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Mauvais copié/collé (l'ancien tampon, celui de mon précédent message, était resté dans le presse-papier ) . L'appel est maintenant :
 nblettres = 25
 nbcol = 23
 nblig = 3
 compte = ((nblettres - 1) * nbcol) / dudule(nblig - 1)


dudule est bien passé, par contre.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour Ucfoutu

Si toujours pas cela, j'arrête (c'est une torture).

oui je sais
juste pour savoir avec une phrase de 30 lettres
sans les espaces
on peut lire aux maximum matrice 16* 14
29!
---------- = 77558760
(14!*15!)

peut etre comme ça
on commence de la premiere case
on verifie si on peut avancer dans la rangée
si oui on avance si non on avance dans la colonne
arrivé à la derniere case il faut remonter les
cases jusqu'à la case qui donne 2 possiblités
et de recommencer le trajet
peut etre par récursion ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
La quoi ? la récursion ? connais pas, moi ! La récursivité, peut-être ? oui !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut ShayW, salut les autres,

tes règles ne sont malheureusement pas assez précises.
Tu dis "pour chaque case il y a deux possibilités", ça veut dire qu'on ne va qu'en ligne et colonne, mais peut-on aller à droite ou à gauche, en haut ou en bas? Pas de diagonales?
Cherches-tu le chemin pour ne lire que la fameuse phrase parmi toutes les lettres de la matrice? ou pour lire toutes les lettres?

Qu'est ce qu'un trajet? Parce qu'on peut boucler un paquet de fois dans la matrice sans aller à la dernière case. N'a-t-on le droit de lire une même case qu'une seule fois dans le trajet?

Fais un peu d'effort sur l'énoncé, et on pourra te dire si c'est solutionnable...ou non!

PS : Essaies de représenter le graphe (si tu ne connais pas, google, cherches la "théorie des graphes") des chemins possibles entre les lettres de ta matrice, ça te donnera une bonne idée de la faisabilité de ce que tu demandes, et ça t'aidera à formaliser ton énoncé.
rvblogn
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour
je me suis rendu compte

la règle est on peut seulement avancer si c'est
possible soit dans la rangée vers la droite
(pas vers la gauche)
soit dans la colonne vers le bas (pas vers le haut) et pas en diagonal
il faut toujours arriver à la derniere case
qui est le dernier caractère de la phrase (après
avoir retiré tous les espaces)
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut,

c'est un peu mieux, mais tu n'as pas répondu à toutes mes questions (et je n'ai pas posé toutes les questions qui se posent)!

Voici un exemple de représentation d'une matrice qu'on souhaiterait parcourir, en suivant les 2 règles que tu énonces :


La matrice de gauche représente, en rouge, les sommets par lesquels on veut passer (tes lettres de phrase), et en noir, les arcs qui répondent à tes 2 règles :
[list]
[*] à droite, si c'est possible (c'est pour ça qu'il n'y a rien à droite de 5)
[*] en bas, si c'est possible (c'est pour ça qu'il n'y a rien en bas de 13).

/list
La 2ème matrice contient les chemins complets (tous de même longueur) parcourables.

Est-ce que ça colle avec ce que tu dis.
Si oui, que demandes-tu?

rvblogn
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Voici la même représentation appliquée à une matrice de la taille que tu souhaites (attention, j'ai changé les couleurs, noir pour les sommets, rouge pour les arcs) :


Je travaille avec des chiffres car, dans ton "enoncé", le contenu des cases n'a aucun sens particulier (en tout cas, je n'en vois aucun, et tu ne m'en expliques aucun).

J'ai peut-être tort, mais comme le montre l'illustration ci-dessus, quand je parcoure tous les chemins complets de ma matrice de chiffres, j'en trouve 276!...Heureux hasard, ou, les lettres de la phrase n'ont aucune importance?

Je pense que la phrase est un piège pour brouiller les pistes algorithmiques.

Je ne te donne pas l'algo (indice, il est socialement "naturel"), mais seulement l'idée de la représentation (modélisation), idée que tu dois t'approprier pour comprendre la solution tout seul. Je ne veux pas faire tes devoirs

rvblogn
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut rvblog
Je travaille avec des chiffres car, dans ton "enoncé", le contenu des cases n'a aucun sens particulier


c'est seulement pour dire qu'on peut lire 276
fois sans écrire 276 fois la meme phrase

l'exemple d'en haut est seulement un cas
par ex avec une phrase de 30 lettres disposé dans
un tableau de 15 rangées et 16 colonnes ou
16 rangées et 15 colonnes
on peut lire tout au plus
29 = 29 !
------ = 77558760 fois une phrase
14 14! * 15!

de 30 lettres

ABCDEFGHIJKLMNOPQRSTUVWXYZ0123
ABCDEFGHIJKLMNOP
BCDEFGHIJKLMNOPQ
CDEFGHIJKLMNOPQR
DEFGHIJKLMNOPQRS
EFGHIJKLMNOPQRST
FGHIJKLMNOPQRSTU
GHIJKLMNOPQRSTUV
HIJKLMNOPQRSTUVW
IJKLMNOPQRSTUVWX
JKLMNOPQRSTUVWXY
KLMNOPQRSTUVWXYZ
LMNOPQRSTUVWXYZ0
MNOPQRSTUVWXYZ01
NOPQRSTUVWXYZ012
OPQRSTUVWXYZ0123


merci