Google’ın çocuklara kod yazması hakkında doodle: tüm seviyeleri çözen en kısa program


26

Bugünün Google doodle'ı, 50 yıllık Çocuk Kodlaması'nı kutlamakla ilgili : Amaç, tüm havuçları yiyebilecekleri için küçük bir tavşanın yolunu programlamak. 4 tip blok vardır (aşağıdaki resimlere bakınız):

blok açıklaması

Soldan sağa:

  • O("...", k)= turuncu parça: bunlar forprogramın k katını çalıştıran döngülerdir "...".
  • G = yeşil parça: eğer bir şey yapamazsan ileriye bir adım at
  • Bl = mavi parça: sağa dönün ve aynı blokta kalın
  • Br = mavi parça: sola dönün ve aynı blokta kalın

büyük program

Yukarıdaki kod olarak yazılabilir.

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

Her blok ( G, Bl, Br, O(...,k)) 1 birim olarak sayılır, bu nedenle bu program 7 uzunluktur. Değerinin k1 birim içerisine dahil edildiğine dikkat edin O.

6 seviye vardır. Bir seviyeyi bitirmek için bütün havuçları yemelisin. Programınız tam olarak yürütülmezse sorun olmaz, son havuç yediğinizde seviye doğrudan biter.

Tüm 4 tip bloğun her seviyede mevcut olduğunu varsayıyoruz.

Göreviniz, oyunun her seviyesini çözen tek bir program bulmak.
Bloklarda en kısa program kazanır.

Her seviyenin ekran görüntüleri:
Seviye 1: Seviye 2: Seviye 3: Seviye 4: Seviye 5: Seviye 6:seviye 1 ekran görüntüsü
seviye 2 ekran görüntüsü
seviye 3 ekran görüntüsü
seviye 4 ekran görüntüsü
seviye 5 ekran görüntüsü
seviye 6 ekran görüntüsü

Yanıtlar:


24

Cevabım değil

6 blok

Alex kullanıcısı 6 uzunluğundan daha kısa bir çözüm buldu. Çözümlerinin işe yaradığını onaylayabilirim:

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

6 blok

Bu soruyu eklemek için bu soruyu düzenlemeye çalıştılar, bu yüzden burada görüntülenmesini istediklerini sanıyorum. İtibar sisteminin buralarda nasıl çalıştığını sevmiyorum.

Bıraktıkları mesaj:

Editör 10 rep'e sahip değil, fakat uzunluğu 6 olan bir çözümü var. O (O (RGG, 6) R, 5)

Birkaç gün sonra yazıyı düzenleyerek tekrar cevap verdiler: "Bunu yaptığınız için teşekkürler. Bu mesajı almak için gördüğüm tek yol buydu. Var olduğu için mutluyum. Yine de istiyorsun.

Eski cevap

7 Blok

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

Sabır gerekli.

Düzenleme: Görüntü yanlıştı. 7 blok


İyi bulmak! Bu yaklaşımı denedim ama 9 blok çözümüm için pes etmeden ve gitmeden önce bu özel kombinasyonda olmadı.
Sparr

2
Alex kullanıcısı daha kısa bir çözüm bulduğunu iddia ediyor.
Jonathan Frech

@JonathanFrech gerçekten de var! Bu 10 tekrar sınırı, can sıkıcı bir durum. İstenmeyen postaları engellememiz gerektiğine inanıyorum, ancak yeni kullanıcılar en azından yanıtları gönderme konusunda ılımlı bir yöntem kullanmamalı mı? Konuşma özgürlüğü ve diğer şeyler.
Reinis Mazeiks

@RM Ben de sorunu görünce biraz tahriş oldu. Sanırım SE sadece bir defalık cevaplar için tasarlanmadı, çünkü bu muhtemelen sinir bozucu olmak Alex için ...
Jonathan Frech

1
Bunu neden yeni bir cevap olarak göndermek yerine bunu kendi eski cevabınız olarak düzenlediniz?
Sparr

12

Aslında 8 bloktan oluşan bir çözüm buldum

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

6

El ile bulundu, 9 blok

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

O(O(GGR,4)L,4)Seviye 1-5'i çözdüğü açıkla başladım, daha sonra seviye 6'yı tamamlayacak birini bulmak için bu seviyelere etkili-boş hamleler ekleyen birkaç varyasyon denedim. "ileriye doğru hareketin hiçbir etkisi olmadı.


1
Bu muhtemelen en uygunudur, bu meydan okuma zaten bitti demektir. :(
totallyhuman

6
@totallyhuman, toplumun henüz
bununla bitmediğini ortaya koyuyor

“Açık O(O(GGR,4)L,4)”, seviye 4 için en kısa çözümün oyunda gösterildiği gibi 7 olduğunu kanıtlıyor.
mik

1
@mik Oyun çözümleri döngü boyutunu değiştirmeye ya da hiçbir şey yapmayan hareketlere güvenmiyor.
Neil

@totallyhuman tahmin ettiğiniz oldukça yanlıştı :). Sorunun gönderilmesinden bir yıl sonra bile, daha iyi bir çözüm bulundu.
Surb,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.