CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Algorithmique seconde

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 12:34:09

Salut, j'ai un DM à faire sur l'algorithmique mais je galère un max à un exo. "On souhaite programmer un serpent de sorte que celui-ci, à tout moment, choisisse sa direction parmi quatre possibles (haut, bas, gauche et droite) au hasard et de manière équiprobable. De plus, le serpent fera 20 mouvements consécutifs et évoluera dans une grille avec x et y dans [-dim ; dim] en partant initialement de (0;0). Ceci avec dim, une variable initialisée à 10 et que le programmeur pourra changer par la suite."
Du coup j'ai fait un truc mais ça marche pas.
https://image.noelshack.com/fichiers/2016/18/1462703460-jvc.png
Ca rend ça en fait :
https://image.noelshack.com/fichiers/2016/18/1462703476-jvc2.png

Merci d'avance !

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 12:34:53

Ah ouais, et c'est sur Algobox au fait.

HighlightReel
HighlightReel
Niveau 43
08 mai 2016 à 12:37:37

C'est niveau seconde çà ? T'as des bons profs !

Pseudo supprimé
Pseudo supprimé 08 mai 2016 à 12:41:51

Je pense que le problème c'est que la nouvelle position n'est pas stockée en mémoire du coup à chaque fois ça repart du milieu c'est pour ça que le programme a juste tracé une croix qui correspondent aux 4 mouvements possibles à partir du milieu.

HighlightReel
HighlightReel
Niveau 43
08 mai 2016 à 12:44:41

Et tu prends pas en compte les dimensions de ta grille aussi.

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 12:50:27

Et on règle ça comment ? Merci pour vos réponses en tout cas.

CicatriceGamer
CicatriceGamer
Niveau 10
08 mai 2016 à 12:53:35

Dans chaque Si, tu rajoutes une ligne X prend la valeur 1 ou -1, et pareil pour Y (selon la valeur de ta variable mouv)

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 13:02:18

Bah maintenant ça trace bien des lignes mais qui se suivent pas. https://image.noelshack.com/fichiers/2016/18/1462705332-jvc3.png

cap-trolling-21
cap-trolling-21
Niveau 17
08 mai 2016 à 13:07:51

montre ton programme actuel

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 13:15:56

https://image.noelshack.com/fichiers/2016/18/1462706133-jvc4.png

CicatriceGamer
CicatriceGamer
Niveau 10
08 mai 2016 à 13:16:51

Les X prends la valeur 1, tu dois le mettre après le tracé du segment

cap-trolling-21
cap-trolling-21
Niveau 17
08 mai 2016 à 13:18:08

il faut inverser tous les "tracer segment" avec "prend la valeur" je pense

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 13:25:15

Ah ouais, merci beaucoup à tous, ça marche maintenant.

Pseudo supprimé
Pseudo supprimé 08 mai 2016 à 13:27:39

Oui mais il faut prendre en compte les dimensions de la grille : il ne faut pas que le serpent puisse sortir de la grille : tu peux par exemple rajouter une condition
"Si x = -dim" (ou x = dim ou y=-dim ou y=dim)
Alors i prend la valeur i-1 (pour éviter de perdre un mouvement)
Sinon tracer..., x prend la valeur (enfin comme normalement)

Message édité le 08 mai 2016 à 13:31:09 par Pseudo supprimé
Naburihs
Naburihs
Niveau 2
08 mai 2016 à 13:48:02

Bah j'ai mis que xmin=-dim, ymin=-dim, xmax=dim et ymax=dim dans dessiner dans un repère, ça suffit pas ?

Pseudo supprimé
Pseudo supprimé 08 mai 2016 à 14:10:02

Bah ça te permet de ne tracer que ce qui est dans le repère donc c'est plus ou moins acceptable, mais par exemple si tu mets dim=2, que le serpent est au point (1,2) et que le programme trace le segment (1,2)->(1,3), ça va sortir de ton repère (même si il va peut-être y revenir plus tard), alors que dans l'énoncé le serpent doit rester dans la grille je pense.

Du coup il faudrait faire quelque chose comme ça pour chaque boucle :

https://image.noelshack.com/fichiers/2016/18/1462709037-algorithme.png

Après il y a probablement une meilleure méthode mais je ne vois pas trop.
Par contre, je ne sais pas si ça respecte l'équiprobabilité de faire comme ça (annuler l'action) parce que normalement, si le serpent est sur un bord il a 3 déplacements possibles et s'il est complètement dans un coin il n'a plus que 2 déplacements possibles sauf que du coup il faudrait envisager toutes les possibilités et ce serait beaucoup trop long comme algorithme...

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 14:21:50

Okey merci, du coup j'vais envoyer un mail à mon prof pour savoir ce qu'il entend par là.

Prauron
Prauron
Niveau 15
08 mai 2016 à 14:39:02

Ouais si tu veux respecter l'équiprobabilité faut tester avant chaque mouvement si le serpent est au bord (et si oui sur quel bord), et ensuite choisir de façon équiprobable un mouvement parmi les 3 ou 4 possibles.

Une autre possibilité c'est de faire réapparaître le serpent de l'autre côté de la grille. Par exemple s'il est sur la dernière case à gauche et qu'il choisit un mouvement vers la gauche, il réapparaît à droite de la grille (pour coder ça il faut utiliser les modulo). De cette façon, pas besoin d'écrire des tas de conditions. Je sais pas si c'est ça que le prof attend (en fait je pense pas) mais à la lecture de l'énoncé, je vois pas ce qui empêcherait de l'interpréter comme ça.

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 14:58:45

Bon, il m'a répondu qu'il fallait juste que la grille soit délimitée mais pas les mouvements du serpent, donc y'a pas besoin de l'empêcher de sortir. Par contre j'ai un autre problème, faut que je lui fasse faire 10000 mouvements consécutifs dans une grille de -100 à 100, mais faut faire faire des pauses tous les 500 mouvements, en utilisant une lecture de variable obsolète.
Du coup j'ai tenté un truc, mais ça marche pas : https://image.noelshack.com/fichiers/2016/18/1462712311-jvc5.png

Naburihs
Naburihs
Niveau 2
08 mai 2016 à 18:11:51

C'est bon j'y suis arrivé, merci pour tout.

Sous forums
  • Métiers & Orientation
  • Histoire
  • Cours et Devoirs
  • Politique
  • Environnement & Nature
  • Philosophie
La vidéo du moment