Doodle de Google sur le codage pour enfants: le programme le plus court pour résoudre tous les niveaux

26

Le doodle Google d'aujourd'hui concerne les 50 ans du codage des enfants : l'objectif est de programmer le chemin d'un petit lapin afin qu'il puisse manger toutes les carottes. Il existe 4 types de blocs (voir photos ci-dessous):

description du bloc

De gauche à droite:

  • O("...", k)= pièce orange: ce sont des forboucles qui exécutent k fois le programme "...".
  • G = pièce verte: faites un pas en avant si vous le pouvez, sinon ne faites rien
  • Bl = pièce bleue: tourner à droite et rester sur le même bloc
  • Br = pièce bleue: tourner à gauche et rester sur le même bloc

grand programme

Le code ci-dessus peut être écrit comme

O(O(G G Br, 4) Bl Bl, 23)

Chaque bloc ( G, Bl, Br, O(...,k)) compte pour 1 unité, donc ce programme est de longueur 7. Notez que la valeur de kest incluse dans l'unité 1 de O.

Il y a 6 niveaux. Pour terminer un niveau, vous devez manger toutes les carottes. Ce n'est pas un problème si votre programme n'est pas complètement exécuté, le niveau se termine directement lorsque vous mangez la dernière carotte.

Nous supposons que les 4 types de blocs sont disponibles à tous les niveaux.

Votre tâche consiste à trouver un seul programme qui résout tous les niveaux du jeu.
Le programme le plus court en blocs gagne.

Captures d'écran de chaque niveau:
Niveau 1: Niveau 2: Niveau 3: Niveau 4: Niveau 5: Niveau 6:capture d'écran de niveau 1
capture d'écran niveau 2
capture d'écran de niveau 3
capture d'écran niveau 4
capture d'écran niveau 5
capture d'écran niveau 6

Surb
la source

Réponses:

24

Pas ma réponse

6 blocs

L'utilisateur Alex a trouvé une solution plus courte, de longueur 6. Je peux confirmer que sa solution fonctionne:

O(O(Br G G, 6) Br, 5)

6 blocs

Ils ont tenté de modifier cette question pour ajouter cette réponse, donc je suppose qu'ils veulent qu'elle s'affiche ici. Je n'aime pas le fonctionnement du système de réputation ici.

Le message qu'ils ont laissé:

L'éditeur n'a pas 10 rep, mais a une solution de longueur 6. O (O (RGG, 6) R, 5)

Après quelques jours, ils ont de nouveau répondu en modifiant le message avec: "Merci de l'avoir fait. Modifier c'était le seul moyen que j'ai vu pour recevoir un message. Je suis heureux qu'il existe. N'hésitez pas à le mettre dans un nouveau message si tu veux bien. "

Ancienne réponse

7 blocs

O(O(G G Br, 4) G Br, 100)

Patience requise.

Edit: L'image était fausse. 7 blocs

Reinis Mazeiks
la source
Bonne trouvaille! J'ai essayé cette approche mais je ne suis pas arrivé sur cette combinaison particulière avant d'abandonner et de choisir ma solution à 9 blocs.
Sparr
2
L'utilisateur Alex prétend avoir trouvé une solution plus courte.
Jonathan Frech
@JonathanFrech en effet! Cette limite de 10 répétitions est ennuyeuse. Je comprends que nous devons empêcher le spam, mais les nouveaux utilisateurs ne devraient-ils pas avoir au moins un moyen modéré de publier des réponses? Liberté d'expression et autres.
Reinis Mazeiks
@RM J'étais aussi un peu irrité en voyant le problème. Je suppose que SE n'est tout simplement pas conçu pour des réponses ponctuelles, car c'est frustrant pour Alex ...
Jonathan Frech
1
Pourquoi avez-vous modifié cela dans votre ancienne réponse au lieu de la publier en tant que nouvelle réponse?
Sparr
12

En fait, j'ai trouvé une solution avec 8 blocs

O(O(O(G,4)R,4)GGR,4)
samuelleal
la source
6

Trouvé manuellement, 9 blocs

O(O(GRGLGR,4)L,4)

J'ai commencé par l'évidence O(O(GGR,4)L,4)qui résout les niveaux 1 à 5, puis j'ai essayé quelques variantes en ajoutant des mouvements effectivement nuls sur ces niveaux pour en trouver un qui terminerait le niveau 6. Le plus court était un simple avant-gauche-gauche au milieu de chaque "pont" "donc le mouvement en avant n'a eu aucun effet.

Sparr
la source
1
C'est probablement optimal, ce qui signifie que le défi est déjà terminé. :(
totalement humain
6
@totallyhuman s'avère que la communauté n'en a pas encore fini avec cela: P
HyperNeutrino
"L'évident O(O(GGR,4)L,4)" démontre que la solution la plus courte pour le niveau 4 est 7, comme indiqué dans le jeu.
mik
1
@mik Les solutions de jeu ne reposent pas sur la modification de la taille de la boucle ou des mouvements qui ne font rien.
Neil
@totallyhuman que vous prévoyez était tout à fait faux :). Encore plus d'un an après la publication de la question, une meilleure solution a été trouvée.
Surb