Aide exercice Python sur site citizen code

Résolu
Eriito Messages postés 1 Statut Membre -  
lienalo Messages postés 1 Statut Membre -

Bonjour,

Je suis bloqué sur cet exercice :

Comme vous le voyez, je dois finir en 25 lignes avec les commandes suivantes:

  • droite()
  • gauche()
  • prendre()
  • poser()
  • for loop in range ()

Mais à l'heure actuelle, j'arrive que à ranger la colonne 2 avec le code suivant qui fait 24 lignes :

from robot import *
droite()
for loop in range(4):
    prendre()
    gauche()
    poser()
    droite()
prendre()
for loop in range(4):
    droite()
poser()
for loop in range(5):
    gauche()
for loop in range(4):
    prendre()
    droite()
    poser()
    gauche()
for loop in range(5):
    droite()
prendre()
for loop in range(4):
    gauche()
poser()

Pouvez vous m'aider à comprendre ou je fais une erreur ? Merci.

A voir également:

4 réponses

mamiemando Messages postés 34173 Statut Modérateur 7 885
 

Bonjour,

  • Merci de soigner l'orthographe.
  • Réfléchis à une stratégie avant de coder (comment tu ferais si tu devais l'expliquer avec des mots).
  • Précise comment doivent être replacées les briques. Si j'ai bien compris le château est vu de côté, les briques sont empilées, et tu voudrais permuter les briques de la ligne du bas avec les lignes de la brique du haut.
    • S'autorise-t'on à reconstruire le chateau ailleurs qu'au milieu de la grille ?
  • Il faudrait également préciser ce que fait "poser" (est-ce que l'on peut lâcher une brique en l'air, est-ce que si on pose une boîte, la pince revient à sa place, etc...)

En supposant que j'ai bien compris l'exercice, la stratégie la plus simple consiste à :

Si on s'autorise à décaler le château d'une case vers la gauche, on répète le raisonnement en déplaçant la colonne i+1 vers la colonne i, pour chaque valeur de i allant de 2 à 5 inclus. Cela peut s'écrire comme le suggère yg_be avec deux boucles for imbriquées.

Si on ne s'autorise pas à décaler le château d'une case vers la gauche, il faut rajouter une étape supplémentaire qui permettra de transférer la colonne 1 vers la colonne 5 en préservant l'ordre. En effet, la brique en haut de la colonne 1 est le haut du château et on veut la garder en haut. Du coup, on la met de côté dans la colonne 6. On transfère le reste de la colonne 1 dans la colonne 5. Puis on rapatrie la brique restante dans la colonne 6 en haut de la colonne 5.

Bonne chance

1
jordane45 Messages postés 40050 Statut Modérateur 4 754
 

bonjour 

pourrais-tu nous détailler un peu ton code ?

que font les différentes instructions prendre gauche droite poser ?

à quoi font référence les valeurs 4 et 5 que tu utilises dans tes boucles ?


0
yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 

C'est un exercice de boucles imbriquées, et tu n'as fait aucune imbrication.

0
lienalo Messages postés 1 Statut Membre
 

 Hello ! Personnellement j'ai réussi à le faire en tout juste 25 blocs comme ceci :

from robot import *
for loop in range (4):
    for loop in range (5):
        droite()
        prendre()
        gauche()
        poser()
    droite()
for loop in range (4):
    gauche()
prendre()
for loop in range (5):
    droite()
poser()
gauche()
for loop in range (4):
    for loop in range (4):
        gauche()
    prendre()
    for loop in range (4):
        droite()
    poser()
droite()
prendre()
gauche()
poser()

Mais il y a potentiellement moyen de le faire en moins de blocs

0