Posts for Bisqwit


Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Sir VG wrote:
Deign wrote:
speaking of steam, Portal is on sale for $2 until end of day tomorrow. If you don't have it, I would advise shelling out the measily $2 for it
That's $2 more than what they were offering it for in May.
A worthwhile offer, in any case. EDIT: http://store.steampowered.com/app/400/ says it's 10,04 €. Guess I had a different definition of "tomorrow" than you.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I liked the motion blur at 2:00. Very cool. I believe much of this could be automated, though. See for example what I did here: http://bisqwit.iki.fi/jutut/nesvpic/other.html Examples such as "Super Mario Bros 2..." and "Rockman: Bombman... (big and long!)" are worth mentioning. Being just animated GIFs, they are without music, of course. The automated process of mine does not know the map beforehand; it only records what was seen in the game, so it doesn't know of rooms that are never visited.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Primality test. I don't even want to try it...
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Pointless Boy wrote:
http://pleasingfungus.com/?ctm=Roboreligion!;
15 parts, 1:47 ― http://bisqwit.iki.fi/kala/snap/manufactoria-roboreligion-machine.gif 38 parts, 1:15, below
Post subject: Fails detected on multiple records
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Nitrodon wrote:
Just to get this level started, here's Metatron in 84 parts (1:40). I haven't tried optimizing it yet.
Fails on brbGb
Judiciary! Least parts: 46 (klmz)
Fails on empty input
Teachers! Least parts: 19 (flagitious)
Fails on brbrb
Seraphim Least parts: 21 (Gunty)
Fails on bbGb
Post subject: Malevolence engine
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
flagitious wrote:
Bisqwit, how did you make those awesome gifs? If it is something something you automated I would like to incorporate in my list (like on mouse over).
Initially I created them by making a dozen screenshots until I've covered all five frames of animation, and then animating them using mogrify and gifsicle. The later ones are created completely using this PHP script (click link). It requires this graphics file, which also indicates the meanings of the numbers used to construct the map. You can also access it directly. Just add the Manufactoria saved-game parameters to it, for example:
http://bisqwit.iki.fi/kala/manufactoria/makemap.php?lvl=27&code=c12:6f3;p12:7f3;r13:8f1;c12:10f3;p13:7f6;c14:8f3;b11:7f2;b13:6f2;r14:6f1;p14:5f0;b14:4f3;c12:4f3;g12:5f3;c14:9f0;c13:9f0;q12:9f0;q13:5f1;r14:7f3;c12:8f3;
P.S. They updated the game, adding a Malevolence Engine which quickly pre-tests the engine and if puts a failing test first, if any!
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Scepheo wrote:
Bisqwit: if you actually managed to move the exit, Robotoast! could be solved in 0 parts. Many solutions could be greatly improved upon so if this is the case, would you be so kind to tell us how?
It is not possible. As I wrote earlier, these are illustrations, and only correct barring transcription errors. I wrote a program that eases the planning of the solutions when they do not immediately fit into the given size grid, or even the largest, 13x13 grid. As part of the ease of planning, the entry and exit points can also be moved. Naturally, when/if I reached the point that the solution would fit in the game's constraints, I'd use that instead of these illustrations. (Though I could still use an illustration instead for artistic purposes.)
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Kanjidict has parts searching feature as well, btw. http://kanjidict.stc.cx/componentsearch But sometimes it is difficult to figure out the parts, too.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Nitrodon wrote:
Bisqwit wrote:
Here's my attempt, below!
This does not behave as expected in the test cases GRRY and GRBRY.
Oops. You're right. I've fixed the image now; reload. I forgot to preserve default-exits when I reduced the map vertically and horizontally. EDIT: You are right. States 4,5,6,7,8,9,A,B,C,D,E fail to accept a following Y/G if entered from a red or blue self-loop. Mea culpa. EDIT 2: Fixed. 152 parts. :)
Post subject: Re: More challenges
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Scepheo wrote:
Bisqwit wrote:
New challenges:
http://pleasingfungus.com/?ctm=Rainbow;Accept_if_input_contains_all_four_colors.;rgbgbrbrbgbrbgrg:x|ygbrg:*|ggrrrbyg:*|ybbbrrbyb:x|:x|brgy:*;13;3;0;
This one might be impossible!
It's possible, but I'm quite sure you don't have enough space.
Alternative reply 1: Hence, impossible. That is what I meant. Alternative reply 2: Well, d'oh! That's what I meant. Here's my attempt, below!
Post subject: More challenges
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
New challenges:
http://pleasingfungus.com/?ctm=Sawdust;Remove_all_one-color_sequences_that_are_just_one_bit_long.;br:|bbrbb:bbbb|brrbbbbbrrbr:rrbbbbbrr|rrbb:rrbb|brrbrrbrbbrbb:rrrrbbbb|b:|brbrbrbrbrbrbrbrbrbrbrbrb:;9;3;0;
It resembles Henke's similar challenge.
http://pleasingfungus.com/?ctm=Sticks;Accept_if_has_one-color_sequence_of_the_same_length_at_the_begin_and_at_the_end.;bbbbrrrr:*|bbr:x|rrrbrrbbb:*|brrrb:*|brbrbrbr:*|bbbbbbrrrrrrb:x|bbbbbbbbrrrrrrrrbrrrrrrrr:*|bbrbb:*;11;3;0;
http://pleasingfungus.com/?ctm=Stakes;Accept_if__input_made_entirely_of_same-length_one-color_strings_of_*any*_color;bryg:*|yyyrrrgggbbb:*|rrr:*|bbyrrgg:x|brry:x|ggggbbbb:*|yyrryy:*|rrrbbbbbrr:x;13;3;0;
http://pleasingfungus.com/?ctm=Rainbow;Accept_if_input_contains_all_four_colors.;rgbgbrbrbgbrbgrg:x|ygbrg:*|ggrrrbyg:*|ybbbrrbyb:x|:x|brgy:*;13;3;0;
This one might be impossible!
Post subject: Re: Henke37's custom puzzles
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Bisqwit wrote:
?ctm=RoboCalculators;Accept:
Only_evenly_divideable_by_three!;bb:*|br:x|brr:x|bbbbr:*|bbbrbrb:*|bbbrbbb:x|bbrrbrbbbbrbb:x;9;3;1;
Ah! That is an useful clue. (A google search revealed what's special about that.) It still requires thinking though. :)
Lesson learned: Don't trust everything you read. Counting the difference between the sums of even and odd bits respectively got me nowhere. I got it now. 0:43, 11 parts.
Post subject: Re: Henke37's custom puzzles
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Pointless Boy wrote:
?ctm=RoboCalculators;Accept:
Only_evenly_divideable_by_three!;bb:*|br:x|brr:x|bbbbr:*|bbbrbrb:*|bbbrbbb:x|bbrrbrbbbbrbb:x;9;3;1;
Oh dear. That requires thinking!
Here's a hint that might help: the divisibility rule for 11 in base 10 also works for 11 (3) in base 2!
Ah! That is an useful clue. (A google search revealed what's special about that.) It still requires thinking though. :)
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
henke37 wrote:
I did on the other hand manage to make a few levels of my own.
Cool!
?ctm=RoboNeedles;Only_legal_input_color_robots.;:*|bry:x|rb:*|ygy:x|rbbbyrb:x|rbrb:*;5;3;0;
Trivial; 5 parts.
?ctm=RoboMixers;Remove_one_from_each_end.;brb:r|rrbb:rb|rbbrb:bbr|br:|rrrbrbbrbrb:rrbrbbrbr;13;3;0;
19 parts, 1:16.
?ctm=RoboWorms;Remove_every_even_color;bbrr:br|brbr:bb|rrbbrrbb:rbrb|rrrbbbrrbb:rrbrb|rrrrrrrrrrbbbbbbbbbb:rrrrrbbbbb;9;3;0;
19 parts, 2:48
?ctm=RoboGuns;OUTPUT:_Remove_all_sequences_longer_than_one_color.;bbbbb:|brbr:brbr|bbr:r|rbrbrbbr:rbrbrr|brrbrrbrrbrrbrrbrr:bbbbbb;13;3;0;
Boy, that's a sneaky challenge. Here's my result, 2:08, 44 parts. ?lvl=36&code=c11:3f3;c11:4f3;i11:5f7;c11:6f0;i12:3f6;i12:5f7;i12:7f6;c13:3f0;c13:6f2;i13:7f2;c12:4f3;g12:2f3;c12:12f3;c13:4f0;c14:3f0;c14:5f1;c15:7f3;c12:11f3;c11:9f2;c11:8f2;c12:10f3;c13:8f1;c14:9f0;c13:9f0;c9:7f3;c9:8f3;c10:7f3;c10:8f2;c10:9f2;c15:8f3;p14:4f4;p14:6f6;p12:6f7;p12:8f7;p10:6f0;r9:9f2;b15:9f0;c9:6f3;c15:6f3;r13:5f3;c10:5f2;b11:7f1;c14:7f0;q12:9f6;&ctm=RoboGuns;OUTPUT:_Remove_all_sequences_longer_than_one_color.;bbbbb:|brbr:brbr|bbr:r|rbrbrbbr:rbrbrr|brrbrrbrrbrrbrrbrr:bbbbbb;13;3;0;
&ctm=RoboModems;ACCEPT:_Only_odd_parity!;brbbr:*|rbrbb:*|rrbbrbb:x|:x|b:*|r:x|bbbrbbbbbrbrbrbrrrb:x|rbbbr:*;7;3;0;
8 parts, 0:52; refreshingly trivial.
?ctm=RoboCalculators;Accept:
Only_evenly_divideable_by_three!;bb:*|br:x|brr:x|bbbbr:*|bbbrbrb:*|bbbrbbb:x|bbrrbrbbbbrbb:x;9;3;1;
Oh dear. That requires thinking!
Post subject: Challenge: RoboticHay!
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I've got a challenge that I think might be rather difficult in Manufactoria: ?ctm=RoboticHay!;Input:_string1_green_string2._Accept_if_string1_is_a_substring_of_string2.;bgb:*|rbgrrr:x|rrbbgrrbbbr:*|bbrbrgbrbr:x|bbrrbgrrbbrrrbbrbb:x|rrbrrgbbbrbbrrbrrbrb:*|rbrbbgbbrbrbrbb:*;13;3;0; EDIT: Renamed; name already used by the first poster.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Seriously though, for 20 % I liked the prank, even though for 80 % I did not. The idea ― make the unbelievable and then stretch some more so it wraps around and is suspiciously credible ― is brilliant, and allowed to explore some topics that get no discussion of that magnitude otherwise. By the way, is this not how TASes work too? Do the unbelievable and then stretch it some more! As I have written previously, “we create perfect movies, and then we beat them”. A giant waste of time; a powerful distraction.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
RinKaenbyou wrote:
The last April Fool's joke was NOT FUNNY D:
That's your 101 in Nach's jokes.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
flagitious wrote:
37 metatron
begin_flagitious
|
G <01-to-01 transcriber> G0 loop2
                            |    
                            0 --> got0
                                  |   
                                  G --> GY <01Y-to-01Y transcriber> G <loop2>
                                  x --> 0 <loop2>
                            1 --> got1
                                  |   
                                  x --> 1 <loop2>
                                  G --> 0, loop3
                                           |
                                           Y -> Y  <loop3> 
                                           G -> 1  <got1> 
                                           1 -> G1 <got1> 
                                           0 -> G0 <loop2> 
                            Y  --> <eat Y> <01-to-10 transcriber> <eat G> <eat 1> <end>
Looks nice. You've even incorporated Nitsuja's bit there. I like particularly how you layouted the exit condition from the main loop.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Suddenly, this game is no longer so stressful! Here is my Metatron (and its textual flowgraph). ;) 117 parts. Verified to work properly, barring transcription errors. Tags: Sacrifices space for entertainment.
begin
|
YG loop1a
   |
   0G --> G loop1b_0
            |                    _
            0x --> 0 <loop1b_0>    \_ transcribe until Y
            1x --> 1 <loop1b_0>   _/
            1Y --> Y1 <01Y-to-01Y transcriber> G <loop1a>   -- 0+1 = 1
            0Y --> Y0 <01Y-to-01Y transcriber> G <loop1a>   -- 0+0 = 0
            Y  --> Y0 <01Y-to-01Y transcriber> G <loop1a>   -- 0+nil = 0
   1G --> G loop1b_1
            |                    _
            0x --> 0 <loop1b_1>    \_ transcribe until Y
            1x --> 1 <loop1b_1>   _/
            1Y --> YY <01Y-to-01Y transcriber> G <loop1a>   -- 1+1 = Y (Y=2)
            0Y --> Y1 <01Y-to-01Y transcriber> G <loop1a>   -- 1+0 = 1
            Y  --> Y1 <01Y-to-01Y transcriber> G <loop1a>   -- 1+nil = 1
   0x --> 0 <loop1a>
   1x --> 1 <loop1a>
   G  --> G loop1b_nul
            |                     _
            0x --> 0 <loop1b_nul>   \_ transcribe until Y
            1x --> 1 <loop1b_nul>  _/                    
            0Y --> Y0 <01Y-to-01Y transcriber> G <loop1a>   -- nil+0 = 0
            1Y --> Y1 <01Y-to-01Y transcriber> G <loop1a>   -- nil+1 = 1
            Y  --> Y0 <01Y-to-01Y transcriber> G <eat G> <eat Y> <loop2>
loop2
|got0
||                _
0x --> 0 <loop2>   \_ transcribe until G/Y
1x --> 1 <loop2>  _/
0G --> 0 <end>                    -- end of loop, no Y remain
1G --> 1 <end>                    -- end of loop, no Y remain
0Y --> 1 <got0>                   -- 0Y = 10
1Y --> Y0 <01Y-to-01Y transcriber> G <loop2>  -- 1Y = Y0 (Y remains, rescan)
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Scepheo wrote:
Finally! You guys stopped updating while I was working on this!
I like Flagitious's list better, it lists authors.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
No Ophanim yet. I ran out of field space. First time this happens. I tried to make this machine without a separate program file. Hmm... (There is duplication on the bottom. The two sides should not be identical, because one is > and one is >=, but I ran out of space.) P.S. Did I mention I hate these conveyer belts?
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Ah. You guys are way out of my league. As I posted earlier. I keep wasting time despite this fact. Maybe I will now stop.
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Nitsuja's algorithm:
begin
|
$ loop1
  |
  Y0 loop2
     |
     1 --> 1 <loop2>
     0 --> YY <01-to-01 transcriber> <eat $> $ <eat Y> <loop1>
     $ --> $  <01-to-01 transcriber> <eat Y> <01-to-10 transcriber> <eat $> <end>
Flagitious':
begin
|
$ <$-to-$ transcriber> $ 0 loop
                           |                 _
                           1x --> 1 <loop>    \_ transcribe until $ 
                           0x --> 0 <loop>   _/ 
                           1$ --> <begin>
                           0$ --> 1 <eat $> <$-to-0 transcriber> <end>
I understand Flagitious's program. Instead of two symbols for eof and carry, it uses one for both, and assumes that all instances of that symbol aside from one mean carry. But not Nitsuja's :) Basically it's sequence of these regexps: s/^/0/ <once> s/$/G/ <once> s/1G/GG/ <repeat while matches> s/G// <once, delete one G> s/0G/10/ <once> s/G/0/g <once, automatically repeats>
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Pointless Boy wrote:
merely indicating at the end of a string that one or more carries has occurred? Consider adding 1 to something like 10111: A hard way: 10111 -> 1011c0 -> 101c00 -> 10c000 -> 11000 An easier way? 10111 -> 1011c -> 101cc -> 10ccc -> 11ccc -> 11000
Wow, that's something I have not considered. With that idea, my machine becomes: [img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine3b.png[/img_right][img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine5.png[/img_right]
begin
|
$0 loop
   |                   _
   0$   --> 1 <end>     \
   0x   --> 0 <loop>     \_ if string ends in red, trivial +1 and done.
   1x   --> 1 <loop>     /  if it ends in blue, handle carry as below.
   1$   --> Y begin2   _/
              |
              $ loop2
                |                    _
                0x --> 0 <loop2>      \_ transcribe until Y
                1x --> 1 <loop2>     _/
                0Y --> 10 <Y-to-0 transcriber> <eat $> <end>
                1Y --> YY <Y-to-Y transcriber> <eat $> <begin2> --advance carry
Hmm. That's not as much a change as I imagined. In fact, pretty much nothing was changed compared to before (on the far right). It's now 31 parts. Here's the version without first loop: [img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine6.png[/img_right]
begin
|
$0 loop
   |                   _
   0x   --> 0 <loop>    \_ transcribe until $/Y
   1x   --> 1 <loop>   _/
   0$   --> 1                                 <end>     --trivial +1 and done.
   1$   --> Y                                 <begin>   --make carry
   0Y   --> 10 <Y-to-0 transcriber>   <eat $> <end>     --carry mixed safely
   1Y   --> YY <Y-to-Y transcriber>   <eat $> <begin>   --advance carry
?lvl=13&code=q12:12f7;q12:11f7;q12:10f7;y9:4f2;c9:5f1;y9:6f1;q10:4f5;b10:5f2;q10:6f5;c10:7f1;g11:4f2;i11:5f3;y11:6f1;c11:7f0;c12:4f3;c12:5f3;c12:6f3;p12:7f3;c13:5f0;c13:6f2;q13:7f6;b13:8f3;r14:5f0;i14:6f3;c14:7f1;q14:9f7;b15:6f3;c15:7f3;c15:8f3;r15:9f0;r12:3f3;g12:2f3;c13:9f0;q12:9f7; So thanks for the hint, but I'm still missing something obvious :) This is by the way the language in which I've designed the puzzle solutions I used C++ for. I used C++ for testing and debugging, but design was done in lists like this. [img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine3b.png[/img_right][img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine5.png[/img_right][img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine7.png[/img_right]EDIT: Hmm, with the carry-stream idea you gave, the $ delimiter in the carry loop becomes unnecessary.
begin
|
$0 loop
   |                   _
   0$   --> 1 <end>     \
   0x   --> 0 <loop>     \_ if string ends in red, trivial +1 and done.
   1x   --> 1 <loop>     /  if it ends in blue, propagate carry as below.
   1$   --> Y loop2     _/    
              |
              0x --> 0 <loop2>      \_ transcribe until Y
              1x --> 1 <loop2>     _/ 
              0Y --> 10 <Y-to-0 transcriber> <end>          
              1Y --> YY <Y-to-Y transcriber> <loop2> --propagate carry
Not that this changed anything. The space is still taken by those nasty conveyer belts. Still 31 parts. The same idea cannot be used in the one-loop version because there's no carry necessarily there. Alt. layout for the above: ?lvl=13&code=c12:9f3;c12:11f3;c12:10f3;c12:12f3;c12:8f3;c9:1f2;q9:2f6;p9:3f0;q9:4f2;c10:1f2;b10:2f3;c10:3f0;r10:4f1;y11:1f3;y11:2f3;q11:3f0;g12:2f2;y12:3f0;q12:4f4;p12:5f6;c13:3f3;c13:4f3;c9:5f3;r13:5f0;c13:2f3;b11:5f2;c11:4f3;q12:6f6;c13:6f1;b12:7f3;c11:8f2;b9:7f2;r10:7f3;q10:8f6;c9:6f3;
Post subject: More Officers! And Re: Academics!
Editor, Experienced Forum User, Published Author, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
[img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine2.png[/img_right]Sleeping over the night, I thought of an optimization to Officers! that allows me to reduce the number of functional components in the scene. However, as it turned out, the change was over-compensated by the explosion in the number of conveyer belts needed. You need tons of conveyer belts if you want two ends of the branch to go in same target. Bleh. I hate this game. Result shown on the right. ?lvl=13&code=c12:11f3;c12:12f3;g12:2f3;c12:3f3;c13:2f0;q14:2f1;b14:3f0;q14:4f1;p15:2f0;r15:3f1;y15:4f1;r10:4f2;c11:4f2;c11:5f3;c12:4f3;p12:5f7;c14:5f1;i13:3f2;y13:4f1;c13:5f2;c10:5f1;c12:10f3;c10:6f1;c10:7f1;c10:8f1;c11:6f2;b11:7f3;i11:8f1;c11:9f2;c12:6f3;q12:7f7;c12:8f0;q12:9f7;b13:7f3;r13:8f3;p13:9f4; Here is the description of the algorithm used above. This is all spoilers, of course. It is described as a substring replacing engine resembling regular expressions.
1 is blue
0 is red
$ means end, indicated by green symbol
Y means 2 ("carry", indicated by yellow symbol).
x means red or blue (not Y or $)
vertical line indicates a point of entry (top: label; bottom: actions)

begin
|
$ loop                                                    
  |                   _
  0x   --> 0 <loop>    \_ transcribe until $/Y
  1x   --> 1 <loop>   _/
  0$   --> 1                                 <end>     --trivial +1 and done.
  1$   --> Y                                 <begin>   --make carry
  0Y   --> 10 <red-only transcriber> <eat $> <end>     --carry mixed safely
  1Y   --> Y0 <red-only transcriber> <eat $> <begin>   --propagate carry   
  $    --> 1                                 <end>     --string is empty 
  Y    --> 10 <red-only transcriber> <eat $> <end>     --string begins with Y; add 1 decimal
The previous version of this parsed "x" by using the red-blue branch (which eats the symbol), necessiting complicated jumps directly to the second part of the loop. In this version, the "x" condition is detected as the default branch of the yellow-green branch. [img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine3.png[/img_right]Now as I think of it (again, teaching is the best way to learn), I think it can be rewritten by doing the parsing in two parts. This allows to discard checking for green value in loop2, because now the main loop is all about getting rid of carry. We can assume that as long as the loop runs, carry exists:
begin
|
$0 loop
   |                   _
   0$   --> 1 <end>     \
   0x   --> 0 <loop>     \_ if string ends in red, trivial +1 and done.
   1x   --> 1 <loop>     /  if it ends in blue, propagate carry as below.
   1$   --> Y begin2   _/
              |
              $ loop2
                |                    _
                0x --> 0 <loop2>      \_ transcribe until $/Y
                1x --> 1 <loop2>     _/
                0Y --> 10 <red-only transcriber> <eat $> <end>    --carry mixed safely
                1Y --> Y0 <red-only transcriber> <eat $> <begin2> --propagate carry
            //  Y  --> 10 <red-only transcriber> <eat $> <end>    --string begins with Y; add 1 decimal (this rule is not needed because of explicitly added leading zero in the beginning)
Result shown on the right. ?lvl=13&code=g12:2f3;p7:5f6;r7:6f1;y7:7f1;q8:5f5;b8:6f2;q8:7f5;y9:4f3;g9:5f3;c9:6f3;p9:7f3;b10:3f2;q10:4f1;r10:6f0;q10:7f1;c11:3f3;p11:4f5;r12:3f0;q12:4f5;c12:9f3;c12:10f3;c12:11f3;c13:5f3;c13:6f3;c13:7f3;q12:12f3;r11:6f2;p12:6f7;c12:8f3;c13:8f0;b13:4f3;q12:7f6;b11:7f1; It is better than the second version (above), but still not as good as the attempt in my previous post. Hmpf. Next I consider this change in order to merge all the red-only transcribers together, taking advantage of the fact that the main loop is all about carry removal; as long as a carry is found, the loop is not complete. If EOF marker (green) is found, it is to be terminated. But reintroducing the green checks actually makes everything worse, again: [img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine4.png[/img_right]
begin
|
$ loop
  |                   _
  0$   --> 1 <end>     \
  0x   --> 0 <loop>     \_ if string ends in red, trivial +1 and done.
  1x   --> 1 <loop>     /  if it ends in blue, propagate carry as below.
  1$   --> Y begin2   _/
             |
             $ loop2
               |                    _
               0x --> 0 <loop2>      \_ transcribe until $/Y
               1x --> 1 <loop2>     _/
               0Y --> 10 <red-only transcriber> <eat $> <begin2> --carry mixed safely     
               1Y --> Y0 <red-only transcriber> <eat $> <begin2> --propagate carry
               Y  --> 10 <red-only transcriber> <eat $> <begin2> --string begins with Y
               0$ --> 0 <end>
               1$ --> 1 <end>
?lvl=13&code=q11:9f0;g12:5f3;i12:6f7;c12:8f3;p12:9f3;q13:9f6;y11:7f1;b13:7f1;i11:8f4;i13:8f0;q12:7f7;c11:10f2;b12:10f3;c12:11f3;i13:10f6;r13:11f0;c14:10f0;c12:12f3;c15:4f3;c15:5f3;c15:6f3;c15:7f3;c15:8f3;c15:9f3;c15:10f0;b10:8f2;r14:8f0;c10:9f1;c14:9f1;y11:4f3;b12:3f2;q12:4f1;g13:2f3;c13:3f3;p13:4f5;r14:3f0;q14:4f5;c12:2f2;c11:5f2;c11:6f2;q13:5f1;p14:5f0;r14:6f1;c13:6f2; [img_right]http://bisqwit.iki.fi/kala/snap/manufactoria-officers-machine3b.png[/img_right]EDIT: Thanks for the Academics! guide Pointless Boy. I could not figure out the merging those two types of repeaters. But at least I know you can remove the green-eater before the last repeater in the bottom of your final solution. Seeing as how the yellow-eater that follows it does the very same thing. It does not reduce the number of parts, though. Annoying conveyer belts. EDIT 2: Conveyer belts can sometimes be substituted with other items. Here's Officers! in 32 parts. Not something to be proud of, though! It is a variant of version 3. ?lvl=13&code=g12:2f3;p7:5f6;r7:6f1;y7:7f1;q8:5f5;b8:6f2;q8:7f5;y9:4f3;g9:5f3;c9:6f3;p9:7f3;b10:3f2;q10:4f1;r10:6f0;q10:7f1;c11:3f3;r12:3f0;q12:4f5;r11:6f2;p12:6f7;b13:4f3;b11:7f1;q12:8f3;p11:4f3;q12:9f3;q12:12f3;q12:11f3;q12:10f3;q13:5f3;q13:6f3;q12:7f3;q13:7f0;