Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Agrandir (ou réduire) une matrice en conservant les valeurs.
Shadow15510 Hors ligne Administrateur Points: 4603 Défis: 16 Message

Agrandir (ou réduire) une matrice en conservant les valeurs.

Posté le 11/04/2019 13:45

Bonjour à tous !
J'aurais besoin, pour un jeu (chuuut c'est secret ), d'agrandir une matrice au fur et à mesure des besoins du joueur. Il est impossible de connaitre le nombre de ligne que la matrice aura en fin de jeu…

Du coup je cherche comment rajouter une ligne à ma matrice tout en gardant toutes les valeurs déjà stockées dedans.
Par exemple, j'ai une première matrice A :
[[1, 5, 8, 9, 2]
[10, 3, 0, 2, 6]]

Et j'aimerais rajouter une ligne :
[0, 0, 0, 0, 0]
J'ai essayé la fonction Augment( mais je ne suis pas arrivé à ajouter une ligne… D'après ce que j'ai compris, les deux matrices doivent impérativement avoir exactement la même taille et elles s'ajoutent en formant de nouvelles colonnes… Autrement dit rien de ce dont j'ai besoin.

Merci d'avance


Milang Hors ligne Membre Points: 473 Défis: 2 Message

Citer : Posté le 11/04/2019 13:50 | #


Il existe une technique de remplacement avec les listes :
Il est possible d'accéder à une liste x avec x contenant une valeur appropriée
Et donc comme on peut changer la taille d'une liste, on peut augmenter la taille de la matrice !
Mais par contre, même si tu fais ça dans un fichier de listes à part, tu seras limité à 26 colonnes...

Shadow15510 Hors ligne Administrateur Points: 4603 Défis: 16 Message

Citer : Posté le 11/04/2019 13:53 | #


Non, il m faut impérativement une matrice J'ai besoin de l'organisation en tableau : elle me sert à lister des caractéristiques sur des lignes
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
Milang Hors ligne Membre Points: 473 Défis: 2 Message

Citer : Posté le 11/04/2019 13:58 | #


Ah oui d'accord...
Mais il n'y a pas moyen de faire la même chose sur une liste (alors 1 ligne=1 liste) ?
Shadow15510 Hors ligne Administrateur Points: 4603 Défis: 16 Message

Citer : Posté le 11/04/2019 14:00 | #


Ça prendrait beaucoup plus de place et pis, à la limite pour balayer ça passe (genre une map) mais là c'est vraiment pas possible avec des listes…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
Kikoodx Hors ligne Membre Points: 2146 Défis: 11 Message

Citer : Posté le 11/04/2019 14:31 | #


Est-ce qu'inverser les deux axes ne fonctionnerait pas dans ton cas ?
Sinon les listes me semblent une bonne idée, j'ai déjà codé un jeu stockant la map dans une seule liste.
2+2=5
Perdu
Shadow15510 Hors ligne Administrateur Points: 4603 Défis: 16 Message

Citer : Posté le 11/04/2019 14:32 | #


Mais il ne s'agit pas d'une map mais d'un tableau de donnée

"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
Kikoodx Hors ligne Membre Points: 2146 Défis: 11 Message

Citer : Posté le 11/04/2019 14:35 | #


Justement, si c'est juste rajouter un nombre de valeurs définies, pourquoi ne pas rajouter des colonnes avec Augment et mettre tes têtes de colonnes en début des lignes ? (Je sais pas si c'est clair )
2+2=5
Perdu
Shadow15510 Hors ligne Administrateur Points: 4603 Défis: 16 Message

Citer : Posté le 11/04/2019 14:37 | #


En gros j'ai une matrice de taille [x ; y] et j'aimerais ajouter une ligne en bas de la matrice
Je voulais savoir si c'est possible de faire ça en gardant les valeurs ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
Kikoodx Hors ligne Membre Points: 2146 Défis: 11 Message

Citer : Posté le 11/04/2019 14:41 | #


J'ai l'impression que j'ai mal expliqué...
Si ton nombre de colonnes reste le même tout le temps, inverse x et y, puis utilise Augment( pour ajouter des colonnes, l'équivalent de tes lignes.
Faut juste que tu penses à l'envers.
2+2=5
Perdu
Lephenixnoir Hors ligne Administrateur Points: 18112 Défis: 142 Message

Citer : Posté le 11/04/2019 14:44 | #


Transpose, puis Augment(), puis transpose.

(avec Trn)
Shadow15510 Hors ligne Administrateur Points: 4603 Défis: 16 Message

Citer : Posté le 11/04/2019 14:45 | #


Ah ok... Merci à vous tous !!
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 11/04/2019 14:49 | #


Pourquoi casio n'as pas simplement fait un augmente () pour les x ?
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Lephenixnoir Hors ligne Administrateur Points: 18112 Défis: 142 Message

Citer : Posté le 11/04/2019 14:51 | #


Certainement plus casse-pieds en mémoire
Shadow15510 Hors ligne Administrateur Points: 4603 Défis: 16 Message

Citer : Posté le 15/04/2019 13:47 | #


J'ai une autre question… Voila, maintenant je voudrait réduire la taille d'une matrice en enlevant une ligne ou une colone (avec Trn c'est pareil)

Pour être précis, je voudrait enlever une ligne ou une colonne tout en gardant les autres valeurs mais en supprimant cette ligne/colonne Vous me suivez ?

Merci d'avance
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
Lephenixnoir Hors ligne Administrateur Points: 18112 Défis: 142 Message

Citer : Posté le 15/04/2019 20:50 | #


On ne peut pas ; en tous cas j'ai cherché un assez grand nombre d'astuces quand j'ai implémenté Formel pour supprimer des lignes de la matrice (ie. des noeuds dans l'arbre de mes termes), sans succès.

La seule méthode que je me souviens avoir trouvée consiste à régénérer la matrice avec une sorte de Seq ; mais c'est lent.

Finalement, j'avais opté pour déplacer les lignes que je voulais supprimer à la fin, tout en gardant le nombre de lignes "supprimées" en mémoire pour ne pas risquer de les lire par erreur. Ensuite quand je régénérais la matrice à diverses occasions où c'était indispensable, je les éliminais au passage.
Ninestars Hors ligne Membre Points: 2257 Défis: 22 Message

Citer : Posté le 15/04/2019 23:02 | #


Sinon tu travailles avec une matrice de la taille maximale et tu n'utilises que la partie qui t'intéresse. Au moins tu as l'erreur mémoire dès le début si il en manque plutôt qu'en cours de jeu (si c'est un jeu...)

Bien vu le turn / augment / turn
Shadow15510 Hors ligne Administrateur Points: 4603 Défis: 16 Message

Citer : Posté le 16/04/2019 13:13 | #


Finalement j'ai copié la matrice dans une autre ligne par ligne grâce à un balayage. La ligne à répété n'est pas copiée Puis je supprime la matrice d'origine et je transfère la copie dans la matrice vierge et je vire la copie
Un peu brutal je l'accorde mais stable et fonctionnel…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
Totoyo Hors ligne Membre d'honneur Points: 15988 Défis: 102 Message

Citer : Posté le 20/04/2019 14:58 | #


Attention, avec deux grandes matrices, Augment peut provoquer des erreurs de mémoire. Pendant l'opération, une matrice temporaire est créée (je ne crois pas que ce soit la matrice Ans). Pendant le calcul, elle est stockée dans la mémoire principale et est supprimée après la fusion.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 33 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd