Google mencorat-coret pada coding anak-anak: program terpendek yang menyelesaikan semua level

26

Google doodle hari ini adalah tentang Merayakan 50 tahun Kids Coding : Tujuannya adalah memprogram jalur kelinci kecil sehingga dapat memakan semua wortel. Ada 4 jenis blok (lihat gambar di bawah):

deskripsi blokir

Dari kiri ke kanan:

  • O("...", k)= bagian oranye: ini adalah forloop yang mengeksekusi k kali program "...".
  • G = potongan hijau: maju selangkah jika Anda bisa, jika tidak lakukan apa-apa
  • Bl = potongan biru: belok kanan dan tetap di blok yang sama
  • Br = potongan biru: belok kiri dan tetap di blok yang sama

program besar

Kode di atas dapat ditulis sebagai

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

Setiap blok ( G, Bl, Br, O(...,k)) dihitung sebagai 1 unit, sehingga program ini panjangnya 7. Catatan dari nilai kdimasukkan dalam 1 unit O.

Ada 6 level. Untuk menyelesaikan level Anda perlu makan semua wortel. Tidak masalah jika program Anda tidak sepenuhnya dieksekusi, level selesai langsung ketika Anda makan wortel terakhir.

Kami berasumsi bahwa semua 4 jenis blok tersedia di setiap level.

Tugas Anda adalah menemukan satu program yang memecahkan setiap level permainan.
Program terpendek dalam blok menang.

Tangkapan layar dari setiap level:
Level 1: Level 2: Level 3: Level 4: Level 5: Level 6:tangkapan layar level 1
tangkapan layar level 2
tangkapan layar level 3
tangkapan layar level 4
tangkapan layar level 5
tangkapan layar level 6

Surb
sumber

Jawaban:

24

Bukan jawaban saya

6 blok

Pengguna Alex menemukan solusi yang lebih pendek, dengan panjang 6. Saya dapat mengkonfirmasi bahwa solusi mereka berfungsi:

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

6 blok

Mereka berusaha mengedit pertanyaan ini untuk menambahkan jawaban ini, jadi saya berasumsi mereka ingin itu ditampilkan di sini. Saya tidak suka bagaimana sistem reputasi bekerja di sini.

Pesan yang mereka tinggalkan:

Editor tidak memiliki 10 rep, tetapi memiliki solusi panjang 6. O (O (RGG, 6) R, 5)

Setelah beberapa hari mereka merespons lagi melalui pengeditan pos dengan: "Terima kasih telah melakukan ini. Mengedit ini adalah satu-satunya cara saya melihat untuk mendapatkan pesan. Saya senang itu ada sama sekali. Jangan ragu untuk membawanya ke posting baru jika Anda mau. "

Jawaban lama

7 Blok

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

Dibutuhkan kesabaran.

Sunting: Gambar salah. 7 blok

Reinis Mazeiks
sumber
Bagus temukan! Saya memang mencoba pendekatan ini tetapi tidak terjadi pada kombinasi khusus ini sebelum menyerah dan pergi untuk solusi 9 blok saya.
Sparr
2
Pengguna Alex mengklaim telah menemukan solusi yang lebih pendek.
Jonathan Frech
@ JonathanFrech memang dia punya! Batas 10 rep itu mengganggu. Saya mengerti bahwa kita harus mencegah spam, tetapi bukankah seharusnya pengguna baru memiliki setidaknya cara memoderasi jawaban? Kebebasan berbicara dan lainnya.
Reinis Mazeiks
@ RM Saya juga agak jengkel melihat masalahnya. Saya kira SE hanya tidak dirancang untuk jawaban satu kali, karena frustasi ini mungkin untuk Alex ...
Jonathan Frech
1
Mengapa Anda mengedit ini menjadi jawaban lama Anda sendiri dan bukannya mempostingnya sebagai jawaban baru?
Sparr
12

Sebenarnya, saya menemukan solusi dengan 8 blok

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

Ditemukan secara manual, 9 blok

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

Saya mulai dengan yang jelas O(O(GGR,4)L,4)yang memecahkan level 1-5 kemudian mencoba beberapa variasi menambahkan secara efektif-nol gerakan pada level tersebut untuk menemukan yang akan menyelesaikan level 6. Yang terpendek adalah kanan-maju-kiri sederhana di tengah setiap "jembatan" "jadi langkah maju tidak berpengaruh.

Sparr
sumber
1
Ini mungkin optimal yang berarti tantangannya sudah berakhir. :(
totallyhuman
6
@totallyhuman ternyata komunitas belum cukup melakukan ini: P
HyperNeutrino
"Yang jelas O(O(GGR,4)L,4)" membuktikan bahwa solusi terpendek untuk level 4 adalah 7, seperti yang ditunjukkan dalam permainan.
mik
1
@mik Solusi permainan tidak bergantung pada mengubah ukuran lingkaran atau gerakan yang tidak melakukan apa pun.
Neil
@ sebenarnya manusia yang Anda ramalkan itu salah :). Bahkan lebih dari setahun setelah pertanyaan diposting, solusi yang lebih baik ditemukan.
Surb