58 43 phần
http://pleasefungus.com/Man producoria /? lvl = 33 & code = c16: 9f0; q15: 9f3; q14: 9f3; q13: 9f3; c12: 9f3; c16: 10f1; r15: 10f3; r14: 10f3; ; q12: 10f4; p11: 10f4; c16: 11f1; i15: 11f7; q14: 11f7; q13: 11f7; q12: 11f7; c11: 11f2; r15: 12f3; b14: 12f3; : 13f0; c13: 13f0; r13: 12f3; y10: 3f3; c10: 4f2; g10: 5f1; q10: 6f4; y11: 3f0; q11: 4f6; r11: 5f3; p11: 6f; ; i12: 5f3; : | brrr: b | brrrr: br | bb: bb | bbrrb: brr | brrrrb: brb | bbrb: bbr; 13; 3; 1; ;
Ý tưởng đầu tiên của Keith Randall về việc chuyển đổi đầu vào thành unary là khá tốt, vì vậy tôi đã đánh cắp nó. ;-) Thuận tiện, tôi chỉ dành một chút thời gian để tối ưu hóa các bộ chuyển đổi nhị phân nhỏ sang đơn nguyên ở Vendoria , vì vậy chỉ cần chọn một trong những giải pháp gần như hoạt động của tôi * từ thử thách đó và kết hợp nó với bộ đếm mod-7 được tối ưu hóa nhanh chóng.
Thiết kế này hiện đang ở điểm mà việc đưa các robot từ trên xuống dưới bắt đầu yêu cầu các băng tải bổ sung vô dụng. Bất kỳ sự giảm bớt bộ phận đáng kể nào có thể sẽ đến từ việc thiết kế lại bố cục để cao hơn và hẹp hơn.
(* Thách thức đó đòi hỏi a) thiết kế phải phù hợp với bảng 7 × 7 và b) đầu ra đơn nguyên phải ở trong các điểm đánh dấu màu đỏ. Nếu bạn nhìn vào phần chuyển đổi nhị phân sang đơn nhất của máy ở trên, bạn sẽ lưu ý rằng, với một hoặc hai phần phụ, nó có thể dễ dàng đáp ứng một trong hai yêu cầu, nhưng than ôi, không phải cả hai.)
Đây là phiên bản 58 phần trước:
http://pleasefungus.com/Man producoria/?lvl=32&code=g12:2f3;q13:13f5;c14:13f0;c15:12f3;c9:6f2;c9:7f1;c9:8f1;c9:9f1; ; c10: 5f3; i10: 6f5; c10: 7f2; c10: 9f0; b11: 3f2; p11: 4f1; c11: 5f1; p11: 6f2; p11: 7f2; c11: 8f3; p11: 8 : 3f2; c12: 4f2; c12: 5f0; r12: 6f3; c12: 7f3; i12: 8f1; i12: 9f5; y12: 10f3; c13: 3f2; c13: 4f3; i13: 5f3; ; i13: 8f0; c13: 9f1; c14: 3f3; c14: 4f2; p14: 5f5; c14: 6f1; p14: 7f6; p14: 8f7; r14: 9f3; c15: 4f3; c15: 4 : 7f3; i15: 8f6; c15: 9f3; q15: 10f7; c15: 11f3; r12: 12f2; p13: 12f7; b14: 12f0; b14: 11f3; b12: 11f3; y14: 10f3; ; Input: _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 ;
Giống như giải pháp của Jan Dvorak , điều này cũng dựa trên FSM 7 trạng thái. Tôi đã gắn nhãn các cổng tương ứng với từng trạng thái trong ảnh chụp màn hình để dễ đọc hơn. Tuy nhiên, bộ máy nhà nước thực sự là một phần dễ dàng; phần khó khăn là tạo ra đầu ra cuối cùng với số lượng cổng tối thiểu.
Một mẹo tôi thấy hữu ích là vòng lặp sao chép cuối cùng giúp chuyển mọi thứ được viết trước điểm đánh dấu màu vàng đến hết (đồng thời tước bỏ điểm đánh dấu màu xanh lá cây): điều này cho phép tôi sử dụng sự lặp lại trong các bit đầu ra bậc cao bằng cách tạo đầu ra dưới dạng:
0: Y ->
1: BY -> B
2: YBR -> BR
3: YBB -> BB
4: RYBR -> BRR
5: BYBR -> BRB
6: RYBB -> BBR
Điều này cho phép tôi chủ yếu kết hợp các đường dẫn đầu ra cho đầu ra 2, 4 và 5 (tất cả bắt đầu bằng BR
) và 3 và 6 (bắt đầu bằng BB
).