Aide exercice Python sur site citizen code

Résolu
Eriito Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
lienalo Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -

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 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 

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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

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

0
lienalo Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 

 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