IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Demande solution Citizen Code S01 E07 Les conserves


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2024
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2024
    Messages : 19
    Par défaut Demande solution Citizen Code S01 E07 Les conserves
    Bonjour,

    J'ai besoin de l'algorithme de solution du problème indiqué dans l'image jointe.

    J'ai les contraintes suivantes:
    - le plus court possible
    - utilisant des boucles imbriquées
    - il n'est pas possible d'utiliser ailleurs l'indice de boucle (exemple Python: For ma_variable2 in range(ma_variable1)
    - il n'est pas possible de créer de variable à décrémenter

    Pour information:
    L'algorithme me suffit
    J'ai déjà le code en Python, dans lequel il est autorisé de reprendre l'indice de boucle.
    Je cherche la solution en Python noCode "Blockly" (source de l'exercice: https://www.futureengineer.fr/)
    Les instructions disponibles sont dans la colonne de droite; l'avant-dernier bloc sert à créer un test comme "si hauteurColonne == 0"
    Merci
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour

    Qu'as-tu essayé ?

    Pourquoi le forum developpez.com casserait les énigmes du site machin.fr ?

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2024
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2024
    Messages : 19
    Par défaut
    Bonsoir Flodelarab,

    J'ai écrit le code suivant en Python, transposable en Python noCode "Blockly" (cf image jointe)

    J'ai résolu tout seul 168 des 170 énigmes du site indiqué.

    Comme je ne parviens pas à trouver de solution au problème indiqué, et que je veux savoir où je réfléchis mal, je demande de l'aide.

    Comme je l'ai dit, j'ai plusieurs solutions, mais toutes trop longues (ie consommant plus de "blocs" que les 20 autorisés):
    - déplacer 4 lignes (ou colonnes) entières, sauf 1, 2, 3 boîtes de Petits Pois (comment décrémenter?)
    - déplacer 4 lignes (ou colonnes) entières, puis renvoyer 1, 2, 3 boîtes de Petits Pois (comment décrémenter?)
    - écrire le pseudocode en commençant par la fin (la boucle prendre-poser)

    Je pense que la solution repose sur l'utilisation du 'capteur' hauteurColonne (si hauteurColonne = 4, puis 3, etc.), mais les tests mènent à une solution trop longue.

    Je le répète, l'algorithme me suffit, à condition qu'il soit constitué de boucles imbriquées, sans variable autre que l'indice de boucle.

    Merci de me donner au moins une idée.
    Bonne soirée
    Images attachées Images attachées  

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Ne trouves-tu pas ton code redondant ? Comment fait-on en informatique quand un même code est exécuté plusieurs fois ?
    Note : il existe bien une solution. Je l'ai trouvée. Courage
    Note 2 : le site a de sérieux bugs d'affichage.

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2024
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2024
    Messages : 19
    Par défaut
    Bonjour Flodelarab,

    Ne trouves-tu pas ton code redondant ?
    Oui, mon code est redondant!
    la boucle "prendre-gauche-poser-droite" est répétée 4 fois!
    les boucles des lignes 3 à 8, 9 à 14, 15 à 20 sont similaires, à la décrémentation près!

    Comment fait-on en informatique quand un même code est exécuté plusieurs fois ?
    On crée une fonction (une sub-routine) qu'on appelle autant de fois que voulu,
    Je n'ai pas le moyen de créer de sous-programme!

    Je n'ai pas le moyen de décrémenter de variable pour effectuer la même boucle sur 4, puis 3, puis 2, puis 1 boîte (en Python: For ma_variable in range(début, fin, pas), soit: For ma_variable (4,0,-1)

    le thème est "imbrication". J'essaie de m'en sortir en imbriquant des boucles, mais ça implique des tests gourmands!

    j'y retourne,
    Bonne journée

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Citation Envoyé par Mintzalagun64 Voir le message
    On crée une fonction (une sub-routine)
    Euh ... non. La fonction, ou sous-routine, sert à donner un nom à un bloc. Regarde le langage de programmation Brainfuck : on ne peut pas faire de fonction mais on peut faire des répétitions. Grâce à ...?

    Citation Envoyé par Mintzalagun64 Voir le message
    Je n'ai pas le moyen de décrémenter de variable
    Mais peux-tu rendre inopérant l'action de la boucle (de taille fixe de 4 tours) ?

    Citation Envoyé par Mintzalagun64 Voir le message
    le thème est "imbrication".
    La réponse est donc dans la question.

    Citation Envoyé par Mintzalagun64 Voir le message
    ça implique des tests gourmands!
    Si tu as vraiment des boucles imbriquées, il ne devrait pas y avoir tant de tests que ça.

Discussions similaires

  1. Demande solution Citizen Code S01 E07 Les conserves
    Par Mintzalagun64 dans le forum Général Python
    Réponses: 9
    Dernier message: 03/01/2025, 10h24
  2. Demande solution Citizen Code S01 E07 Les publicités (Blockly)
    Par Mintzalagun64 dans le forum Général Python
    Réponses: 31
    Dernier message: 19/12/2024, 19h11
  3. Réponses: 6
    Dernier message: 29/10/2015, 15h24
  4. Pb avec code source "lister les images d'un dossier"
    Par Mimisator dans le forum Langage
    Réponses: 2
    Dernier message: 19/10/2005, 15h25
  5. [JVM] interactions jvm - code : agir sur les paramètres ?
    Par pierre.zelb dans le forum Général Java
    Réponses: 6
    Dernier message: 07/07/2005, 13h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo