Doodle di Google sulla codifica per bambini: programma più breve per risolvere tutti i livelli


26

Il doodle di Google di oggi riguarda Celebrating 50 years of Kids Coding : l'obiettivo è programmare il percorso di un coniglietto in modo che possa mangiare tutte le carote. Esistono 4 tipi di blocchi (vedi foto sotto):

descrizione del blocco

Da sinistra a destra:

  • O("...", k)= pezzo arancione: sono forloop che eseguono k volte il programma "...".
  • G = pezzo verde: fai un passo avanti se puoi, altrimenti non fare nulla
  • Bl = pezzo blu: girare a destra e rimanere sullo stesso blocco
  • Br = pezzo blu: gira a sinistra e rimani sullo stesso blocco

grande programma

Il codice sopra può essere scritto come

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

Ogni blocco ( G, Bl, Br, O(...,k)) conta come 1 unità, quindi questo programma è di lunghezza 7. Nota che il valore di kè incluso all'interno dell'unità 1 di O.

Ci sono 6 livelli. Per finire un livello devi mangiare tutte le carote. Non è un problema se il tuo programma non è completamente eseguito, il livello termina direttamente quando mangi l'ultima carota.

Partiamo dal presupposto che tutti i 4 tipi di blocchi sono disponibili in ogni livello.

Il tuo compito è trovare un singolo programma che risolva tutti i livelli del gioco.
Vince il programma più breve in blocchi.

Schermate di ogni livello:
Livello 1: Livello 2: Livello 3: Livello 4: Livello 5: Livello 6:screenshot di livello 1
screenshot di livello 2
screenshot di livello 3
screenshot di livello 4
screenshot di livello 5
screenshot di livello 6

Risposte:


24

Non è la mia risposta

6 blocchi

L'utente Alex ha trovato una soluzione più breve, di lunghezza 6. Posso confermare che la sua soluzione funziona:

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

6 blocchi

Hanno tentato di modificare questa domanda per aggiungere questa risposta, quindi suppongo che vogliono che venga visualizzata qui. Non mi piace come funziona il sistema di reputazione qui.

Il messaggio che hanno lasciato:

L'editor non ha 10 rep, ma ha una soluzione di lunghezza 6. O (O (RGG, 6) R, 5)

Dopo qualche giorno hanno risposto di nuovo modificando il post con: "Grazie per averlo fatto. Editare questo è stato l'unico modo in cui ho visto per ricevere un messaggio. Sono contento che esista affatto. Sentiti libero di inserirlo in un nuovo post se vuoi però. "

Vecchia risposta

7 blocchi

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

Pazienza richiesta.

Modifica: l'immagine era sbagliata. 7 blocchi


Buona scoperta! Ho provato questo approccio ma non mi sono imbattuto in questa particolare combinazione prima di rinunciare e scegliere la mia soluzione a 9 blocchi.
Sparr il

2
L'utente Alex afferma di aver trovato una soluzione più breve.
Jonathan Frech,

@JonathanFrech ha davvero! Quel limite di 10 ripetizioni è fastidioso. Capisco che dobbiamo prevenire lo spam, ma i nuovi utenti non dovrebbero avere almeno un modo moderato di pubblicare risposte? Libertà di parola e cose.
Reinis Mazeiks,

@RM Ero anche un po 'irritato nel vedere il problema. Immagino che SE semplicemente non sia progettato per le risposte una tantum, poiché probabilmente questo è frustrante per Alex ...
Jonathan Frech

1
Perché l'hai modificato nella tua vecchia risposta invece di pubblicarla come nuova risposta?
Sparr

12

In realtà, ho trovato una soluzione con 8 blocchi

O(O(O(G,4)R,4)GGR,4)

6

Trovato manualmente, 9 blocchi

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

Ho iniziato con l'ovvio O(O(GGR,4)L,4)che risolve i livelli 1-5, quindi ho provato alcune varianti aggiungendo mosse nulle su quei livelli per trovarne una che completasse il livello 6. La più breve era una semplice destra-avanti-sinistra nel mezzo di ogni "ponte "quindi la mossa in avanti non ha avuto effetto.


1
Questo è probabilmente ottimale, il che significa che la sfida è già finita. :(
totalmente umano il

6
@totallyhuman scopre che la comunità non ha ancora finito: P
HyperNeutrino il

"L'ovvio O(O(GGR,4)L,4)" smentisce che la soluzione più breve per il livello 4 è 7, come mostrato nel gioco.
mik,

1
@mik Le soluzioni di gioco non si basano sulla modifica delle dimensioni del loop o sulle mosse che non fanno nulla.
Neil,

@totallyhuman che prevedi fosse abbastanza sbagliato :). Anche più di un anno dopo la pubblicazione della domanda, è stata trovata una soluzione migliore.
Surb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.