Doodle do Google sobre codificação infantil: programa mais curto resolvendo todos os níveis

26

O doodle do Google hoje é sobre Celebrando 50 anos de codificação infantil : o objetivo é programar o caminho de um coelhinho para que ele possa comer todas as cenouras. Existem 4 tipos de blocos (veja as fotos abaixo):

descrição do bloco

Da esquerda para a direita:

  • O("...", k)= pedaço laranja: são forloops que executam k vezes o programa "...".
  • G = peça verde: dê um passo adiante, se puder, caso contrário, não faça nada
  • Bl = peça azul: vire à direita e permaneça no mesmo bloco
  • Br = peça azul: vire à esquerda e permaneça no mesmo bloco

grande programa

O código acima pode ser escrito como

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

Cada bloco ( G, Bl, Br, O(...,k)) conta como 1 unidade; portanto, este programa tem o comprimento 7. Observe que o valor de kestá incluído na 1 unidade de O.

Existem 6 níveis. Para terminar um nível, você precisa comer todas as cenouras. Não é um problema se o seu programa não for totalmente executado, o nível termina diretamente quando você come a última cenoura.

Assumimos que todos os 4 tipos de blocos estejam disponíveis em todos os níveis.

Sua tarefa é encontrar um único programa que resolva todos os níveis do jogo.
O programa mais curto em blocos vence.

Capturas de tela de cada nível:
Nível 1: Nível 2: Nível 3: Nível 4: Nível 5: Nível 6:captura de tela nível 1
captura de tela nível 2
captura de tela nível 3
captura de tela nível 4
captura de tela nível 5
captura de tela nível 6

Surb
fonte

Respostas:

24

Não é minha resposta

6 blocos

O usuário Alex encontrou uma solução mais curta, de comprimento 6. Posso confirmar que sua solução funciona:

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

6 blocos

Eles tentaram editar esta pergunta para adicionar esta resposta, portanto, suponho que eles desejem que ela seja exibida aqui. Não gosto de como o sistema de reputação funciona por aqui.

A mensagem que eles deixaram:

O editor não possui 10 repetições, mas possui uma solução de comprimento 6. O (O (RGG, 6) R, 5)

Depois de alguns dias, eles responderam novamente por meio da edição da postagem com: "Obrigado por fazer isso. A edição foi a única maneira que vi para receber uma mensagem. Estou feliz que ela exista. Sinta-se à vontade para trazê-la para uma nova postagem, se você quer embora. "

Resposta antiga

7 blocos

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

Paciência necessária.

Editar: a imagem estava errada. 7 blocos

Reinis Mazeiks
fonte
Boa descoberta! Eu tentei essa abordagem, mas não aconteceu nessa combinação específica antes de desistir e optar pela minha solução de 9 blocos.
Sparr
2
O usuário Alex afirma ter encontrado uma solução mais curta.
Jonathan Frech
@JonathanFrech de fato ele tem! Esse limite de 10 repetições é irritante. Entendo que precisamos evitar spam, mas os novos usuários não deveriam ter pelo menos uma maneira moderada de postar respostas? Liberdade de expressão e outras coisas.
Reinis Mazeiks
@ RM Também fiquei um pouco irritado ao ver o problema. Eu acho que o SE simplesmente não foi projetado para respostas pontuais, pois isso provavelmente é frustrante para Alex ...
Jonathan Frech
1
Por que você editou isso em sua própria resposta antiga em vez de publicá-la como uma nova resposta?
Sparr
12

Na verdade, eu encontrei uma solução com 8 blocos

O(O(O(G,4)R,4)GGR,4)
samuelleal
fonte
6

Encontrado manualmente, 9 blocos

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

Comecei com o óbvio O(O(GGR,4)L,4)que resolve os níveis 1 a 5 e depois tentei algumas variações adicionando movimentos efetivamente nulos nesses níveis para encontrar um que completasse o nível 6. O mais curto era uma simples direita para a frente esquerda no meio de cada ponte " "então o avanço não teve efeito.

Sparr
fonte
1
Provavelmente, isso é ideal, o que significa que o desafio já terminou. :(
totallyhuman
6
voltas @totallyhuman fora da comunidade não é muito feito com este ainda: P
HyperNeutrino
"O óbvio O(O(GGR,4)L,4)" nega que a solução mais curta para o nível 4 seja 7, como mostrado no jogo.
Mik
1
@mik As soluções de jogos não dependem de alterar o tamanho do loop ou movimentos que não fazem nada.
6117 Neil
@totallyhuman que você está prevendo estava bastante errado :). Mais de um ano após a publicação da pergunta, foi encontrada uma solução melhor.
Surb