58 43 частини
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 ; q12: 10f4; p11: 10f4; c16: 11f1; i15: 11f7; q14: 11f7; q13: 11f7; q12: 11f7; c11: 11f2; r15: 12f3; b14: 12f3; c12: 12f3; c15: 13f0; c14 : 13f0; c13: 13f0; r13: 12f3; y10: 3f3; c10: 4f2; g10: 5f1; q10: 6f4; y11: 3f0; q11: 4f6; r11: 5f3; p11: 6f4; b11: 7f1; i12: 4f7 ; c12: 5f3; q12: 6f0; g12: 2f3; c12: 3f3; p13: 4f6; y13: 3f0; c13: 5f0; c12: 7f3; b12: 8f3; & ctm = Mod7; Input: _binary_number_big_endian._Output_ _tbb_nb7 : | brrr: b | brrrr: br | bb: bb | bbrrb: brr | brrrrb: brb | bbrb: bbr; 13; 3; 1 ;
Ідея Кіта Рандалла про перше перетворення вхідного сигналу в одинарний була досить хорошою, тому я його вкрав. ;-) Зручно, що я просто витратив деякий час на оптимізацію невеликих бінарних перетворень на одинарний перетворювач у Manufactoria , тому просто вибрав одне з моїх майже працюючих рішень * із цього завдання та поєднав його з швидко оптимізованим лічильником mod-7.
Ця конструкція зараз в тій точці, коли для отримання роботів зверху вниз починають вимагати інакше марних додаткових конвеєрів. Будь-яке суттєве зменшення деталей, ймовірно, відбуватиметься завдяки перепроектуванню макета на високий і вужчий.
(* Цей виклик вимагав: а) дизайн повинен бути встановлений на дошці 7 × 7, і b) одинарний вихід має бути червоними маркерами. Якщо ви подивитеся на частину версії бінарного до одинарного перетворювача машини, ви зауважте, що, маючи одну або дві додаткові частини, вона може легко задовольнити будь-яку вимогу, але на жаль, не обидві.)
Ось попередня версія на 58 частин:
http://pleasingfungus.com/Manufactoria/?lvl=32&code=g12:2f3;q13:13f5 ;c14:13f0 ;c15:12f3;c9:6f2;c9:7f1;c9:8f1;c9:9f1;c10 Meridianf3 ; 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; q15: 5f0; c15: 6f3; c15 : 7f3; i15: 8f6; c15: 9f3; q15: 10f7; c15: 11f3; r12: 12f2; p13: 12f7; b14: 12f0; b14: 11f3; b12: 11f3; y14: 10f3; y15: 13f0; & ctm = Mod7 ; Вхід: _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 ;
Як і рішення Яна Дворака , це також базується на 7-державній УБП. Я помітив ворота, що відповідають кожному стану на скріншоті, щоб полегшити його читання. Однак сама державна машина - це справді легка частина; складна частина генерує кінцевий вихід з мінімальною кількістю воріт.
Одним з фокусів, який я вважав корисним, був остаточний цикл копіювання, який барель зміщує все написане перед жовтим маркером до кінця (одночасно знімаючи зелений маркер): це дозволило мені використовувати повторення у вихідних бітах високого порядку на генерування результатів у вигляді:
0: Y ->
1: BY -> B
2: YBR -> BR
3: YBB -> BB
4: RYBR -> BRR
5: BYBR -> BRB
6: RYBB -> BBR
Це дозволяє мені здебільшого поєднувати вихідні шляхи для виходів 2, 4 і 5 (які всі починаються з BR
) та 3 і 6 (які починаються з BB
).