Manufactoria: mümkün olan en yavaş kabul programını oluşturmak


18

Boş giriş bandını kabul edecek bir Manufactoria programı yazın . Ama çabuk yapma! Yani, programı hızlı bir şekilde yazın, ama hızlı çalışmasına izin vermeyin. Program ne kadar yavaş olursa, sonunda sona erdiği sürece o kadar iyidir. Aşağıdaki örnek program 3:51 (simülatör tarafından bildirilen "toplam süre") sürmektedir.

resim açıklamasını buraya girin

http://pleasingfungus.com/Manufactoria/?lvl=36&code=g12:5f3;r9:8f1;p12:9f3;c13:9f0;r11:9f0;r10:9f0;r9:9f1;b11:8f0;b10:8f1 R9: 7f2; c10: 7f2; c11: 7f2; c12: 7F3; S12: 8f3; Y13: 8f2; Y14: 8f2; Y15: 8f1; Y15: 7f0; Y14: 7f0; Y13: 7f0; G12: 6f3; ve CTM = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;

Programınız boş bantla başlar. Biraz doodle yapmalı, ancak sonunda çıktı karesine ulaşmalıdır. İsterseniz kasette veri bırakabilirsiniz. 7x7 Manufactoria panosundaki en yavaş program kazanıyor!

Sağ ok tuşunuz arkadaşınız, simülatörü hızlandırıyor.

Simülatörün çökmesi için bonus puan!


Yani boş bant dışında girişi kabul etmek / reddetmek için herhangi bir gereklilik yok mu?
Volatilite

@Volatilite: Doğru.
Keith Randall

Can sıkıcı bir şekilde, simülatör, kasetin sonunda boş olmadığı sürece çalışma süresini bildirmez, çünkü zorluğun beklenen çıktısıyla eşleşmez. (Neyse ki çok fazla alana ihtiyaç duymadan sonunda bandı silmek benim için kolay oldu.)
breadbox

Yanıtlar:


22

~ 10 23 yineleme ~ 10 15 yineleme ~ 10 8 yineleme

Manufactoria kurulumu

http://pleasingfungus.com/Manufactoria/?lvl=32&code=g9:7f2;b12:8f2;p13:8f5;p11:8f3;r14:8f0;q11:10f3;q13:7f1;y13:9f1;r10:10f1 C12: 9F2; c9: 9F2; i11: 9f7; i10: 9f4; c9: 8f3; i10: 8f2; C14: 9f0; C15: 9f0; C15: 8f3; C15: 7F3; C14: 7f2; G12: 7f0; c11 : 7F3; c10: 7f2; S9: 6f7; R10: 6F1; R9: 5F3; c11: 6f0; R10: 5F2; R11: 5f1 R9: 4f3; R10: 4f0; R11: 4f0; Y12: 5F2; Y13: 5F2 ; y14: 5f3; y14: 6f0; y13: 6f0; y12: 6f0; & ctm = Yavaş_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;

Makine temel olarak, sırasıyla 0, 1 ve 2 basamaklarını temsil etmek için kırmızı, mavi ve sarı sembolleri kullanan, taban üçte çalışan bir kilometre sayacıdır. Yeşil sembol, sayının sonunu işaretlemek için kullanılır. Başlangıçta, bant 49 kırmızı simgeyle başlatılır. Bu, makinenin üst üç sırasındaki parçalar tarafından yapılır. En alttaki dört satır, bir döngüdeki sayıyı artırma görevini üstlenir. Her yinelemede, sol taraftaki iki dal hücresi, artışın geçerli sayıya nasıl uygulanacağını belirler ve daha sonra sağ taraftaki dal hücreleri kalan, etkilenmeyen basamakları kopyalar.

Daha önce, makinenin çalışma süresini tahmin etmeye çalıştım, tamamlanmasına izin verilseydi, ancak bu seviyede sadece yineleme sayısıyla gitmek daha mantıklı. Kabaca söylemek gerekirse, bir yinelemenin tamamlanması yaklaşık bir dakika sürer - ancak bir saniye sürse bile, çalışma süresini yalnızca tek bir büyüklükte azaltacaktır.


4
Tamam, pes ediyorum ..
Volatilite

2
Vazgeçme! Bunun hala sadece yüzeyi çizdiğinden şüphem yok. Örneğin, kilometre sayacı mantığının yalnızca bir veya iki hücre tarafından sıkıştırılması, çalışma süresinde büyüklük sırasının artmasına izin verecektir.
breadbox


5
Eğer yardımcı olursa, liderin çok gerisinde olan golf cevaplarını sık sık verdim, çünkü bu farklı bir yaklaşımdı. Bu site hakkında sevdiğim şeylerden biri, cevapların çeşitliliğini koruyor olması.
ekmek kutusu

1
@SimplyBeautifulArt Rakamlar olmak üzere sembol çiftlerine sahip olmak akla yatkın bir şekilde gelişebilir (bu durumda 4'te 3 yerine 16'dan 15'i kullanabilirsiniz). Tabii ki, bunu uygulamaya çalışırken küçük tahta boyutu ile çok zorlanıyorsunuz.
feersum

8

603: 25

Çevrimiçi test

Bugün Manufactoria sorularını yeniden okuyordum ve aniden süreci önemli ölçüde yavaşlatacak bir fikrim vardı: sadece 50 değere sahip olmak ve 3 kez renk değiştirmek yerine, yeni program bunu yapar, ancak bundan sonra, 1 değerini girin ve programın durduğu boş bir bant olana kadar tekrar renk değiştirmeden geçer.

Kuyruk bir seferde 50'den fazla değer depolamaz, bu nedenle banda çok fazla değer aktarmaya çalışmanın bir anlamı yoktur - hemen itilirler. Daha önce olduğu gibi, konveyör bantları bir şeyin çalışması için geçen süreyi en üst düzeye çıkarmayı amaçlamaktadır. Aslında, çalışma süresinde muazzam bir artış elde etmek için en az ince ayar yapıldı.

Yine de breadbox'ın cevabının yakınında hiçbir yer yok .


Çözümlerimizin ne kadar benzer olması ilginç. İkimiz de 9x6 çarpanıyla başladık, şube ve x6 grubunu aynı yere koyduk! Seninki daha zarif - her hücreyi kullandın ve temiz bir bantla bitirdin.
Igby Largeman

5

33:33

Bir süre bu konuda çalıştı ( Volatilite çubuğu oldukça yükseğe koydu), ama 33:33'e çarptığımda durmak için temiz bir zaman olduğunu düşündüm.

Strateji oldukça künt: temelde bandı bir renkle, sonra başka bir renkle, sonra başka bir renkle doldurun ve her yazma (veya yazma grubu) arasında her zaman mümkün olduğunca çok hücreyi geçmeye çalışın.

Eminim bununla daha ileri gidebileceğimiz yollar bulunmalı.

Meşgul Kunduz

Seviye bağlantısı


+1 Onu yenmek için neler yapabileceğimi göreceğim;) (muhtemelen çok fazla ilerlemeyeceğim)
Volatility
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.