58 43 parça
http://pleasingfungus.com/Manufactoria/?lvl=33&code=c16:9f0;q15:9f3;q14:9f3;q13:9f3;c12:9f3;c16:10f1;r15:10f3;r14:10f3;b13:10f3 ; S12: 10f4; p11: 10f4; C16: 11f1; i15: 11f7; S14: 11f7; S13: 11f7; S12: 11f7; c11: 11f2; R15: 12f3, b14: 12f3; c12: 12f3; C15: 13f0; c14 : 13f0; c13: 13f0; R13: 12f3; Y10: 3f3; c10: 4F2; G10: 5f1; S10: 6f4; Y11: 3f0; S11: 4F6; R11: 5F3; p11: 6f4; B11: 7f1; I12: 4F7 C12: 5F3; S12: 6f0; G12: 2f3; c12: 3f3; p13: 4F6; Y13: 3f0; c13: 5f0; c12: 7F3; b 12: 8f3; ve CTM = Mod7; Girdi: _binary_number_big_endian._Output: _that_binary_number_mod_7; bbb : | brrr: b | brrrr: br | bb: bb | bbrrb: brr | brrrrb: brb | bbrb: bbr; 13; 3; 1 ;
Keith Randall'ın girişi ilk olarak tek başına dönüştürme fikri oldukça iyiydi, bu yüzden çaldım. ;-) Kolayca, sadece Manufactoria küçük ikili-unary dönüştürücüler optimize etmek için biraz zaman harcadı , bu yüzden sadece bu zorluktan neredeyse çalışan çözümlerimi * aldı ve hızlı bir şekilde optimize mod-7 sayacı ile birleştirdi.
Bu tasarım şimdi sadece robotları yukarıdan aşağıya doğru almanın, aksi takdirde işe yaramaz ekstra konveyörler gerektirmeye başladığı noktada. Diğer önemli parça indirimleri, muhtemelen yerleşimin daha uzun ve daha dar olacak şekilde yeniden tasarlanmasından kaynaklanacaktır.
(* Bu meydan okuma a) tasarımın 7 × 7 levhaya sığmasını ve b) tekli çıktının kırmızı işaretlerde olmasını gerektiriyordu. Yukarıdaki makinenin ikili-tekli dönüştürücü kısmına bakarsanız, bir veya iki ekstra parça ile her iki gereksinimi de değil, her iki gereksinimi de kolayca karşılayabileceğini unutmayın.)
Önceki 58 bölümlük sürüm:
http://pleasingfungus.com/Manufactoria/?lvl=32&code=g12:2f3;q13:13f5;c14:13f0;c15:12f3;c9:6f2;c9:7f1;c9:8f1;c9:9f1;c10:4f3 c10: 5F3; i10: 6f5; c10: 7f2; c10: 9f0; B11: 3F2; p11: 4f1; c11: 5f1; p11: 6F2; p11: 7f2; c11: 8f3; p11: 9F3; B11: 10f2; c12 : 3F2; c12: 4F2; c12: 5f0; R12: 6f3; c12: 7F3; I12: 8f1; i12: 9f5; Y12: 10f3; c13: 3F2; c13: 4f3; i13: 5f1; c13: 6f3; c13: 7f2 ; I13: 8f0; c13: 9f1; C14: 3f3; C14: 4F2; p14: 5f5; C14: 6F1; p14: 7f6; p14: 8f7; R14: 9F3; C15: 4f3; S15: 5f0; C15: 6f3; C15 : 7F3; i15: 8F6; C15: 9F3; S15: 10f7; C15: 11f3; R12: 12f2; p13: 12f7, b14: 12f0, b14: 11f3; b 12: 11f3; Y14: 10f3; Y15: 13f0; ve CTM = Mod7 ; Girdi: _binary_number_big_endian._Çıktı: _that_binary_number_mod_7; bbb: | brrr: b | brrrr: br | bb: bb | bbrrb: brr | brrrrb: brb | bbrb: bbr; 13; 3; 1 ;
Gibi Jan Dvorak'ın çözümü , bu da bir 7-devlet FSM dayanmaktadır. Okumayı kolaylaştırmak için ekran görüntüsünde her duruma karşılık gelen kapıları etiketledim. Ancak devlet makinesinin kendisi gerçekten kolay olan kısımdır; zor kısım, minimum çıktıyı az sayıda kapı ile üretiyor.
Yararlı bulduğum bir numara, sarı işaretleyiciden önce yazılan her şeyi sonuna kadar değiştiren son kopya döngüsüydü (aynı zamanda yeşil işaretleyiciyi sıyırırken): bu, yüksek dereceli çıktı bitlerindeki tekrarlamayı kullanmama izin verdi çıktıları şu şekilde üretmek:
0: Y ->
1: BY -> B
2: YBR -> BR
3: YBB -> BB
4: RYBR -> BRR
5: BYBR -> BRB
6: RYBB -> BBR
Bu, çoğunlukla 2, 4 ve 5 (hepsi ile başlar BR
) ve 3 ve 6 (ile başlar BB
) çıkışları için çıkış yollarını birleştirmeme izin verir .