Active player (487)
Joined: 2/19/2007
Posts: 114
Nitrodon wrote:
This can be done faster. Specifically, my solution is O(n^2) instead of O(n^3). Rocket Planes in 1:37 using 19 parts: ?lvl=27&code=g12:4f3;c11:9f3;c11:10f3;q11:11f3;r10:8f2;c11:7f3;p11:8f7;p12:6f7;c12:7f0;b13:6f0;c12:5f3;c12:8f2;c14:8f1;r13:9f1;p13:8f6;b13:7f3;q14:6f1;g14:7f1;r11:6f3;
I had a play optimising for speed rather than parts and got 1:11 in 34 parts: ?lvl=27&code=c10:4f3;c10:5f3;c10:6f3;c10:7f3;c10:8f3;p11:4f0;c11:5f3;c11:6f3;c11:7f2;b11:8f2;c11:10f2;b12:5f3;p12:6f0;c12:7f3;p12:8f3;q13:5f6;g13:6f0;b13:7f2;p13:8f6;r13:9f1;r14:5f0;r14:6f1;p14:7f5;r14:8f3;r14:9f3;c14:10f0;r15:7f0;b11:3f3;g12:4f0;r12:9f3;q12:10f6;c13:10f0;c10:9f3;c10:10f2; I suspect it could be faster still using even more parts.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4045
Yeah, I'm really thinking about writing in a non-manufactoria code for the later problems when I try to tackle them. It requires too many complex mechanisms to do tasks to fit in your head at once.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Player (146)
Joined: 7/16/2009
Posts: 686
I'm gonna write a java class Robot.java now, that actually simulates the robots from the game. So they can be created, have a dot-string, you can read from them and stuff. I'm also thinking of making an (abstract) class Solution.java, which you can feed a series of robots (and outcomes) to see if your solution works.
Post subject: Generals! And Robotanks, Robospies. And Police!, Judiciary
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Bisqwit wrote:
Officers!
Generals! is very similar: 0:52, 33 parts ?lvl=14&code=i12:3f5;g12:2f3;i12:4f5;i12:6f1;c12:12f3;y13:3f1;c13:2f0;q11:2f5;q11:3f3;c11:5f1;c13:5f3;y10:3f1;c11:1f3;c12:9f3;c12:10f3;q13:8f1;c13:7f3;c12:7f2;c12:11f3;b10:2f1;p10:1f2;r12:8f3;r14:8f3;b14:9f0;p13:9f7;p12:5f7;b11:6f1;b14:6f0;p13:6f7;p11:4f1;r13:4f3;r10:4f2;q13:10f1; This test does not seem to require removing leading zeros, but if you want it, it's here. Slightly longer, of course, at 1:08 and 37 parts. ?lvl=14&code=i12:3f5;g12:2f3;i12:4f5;i12:6f1;y13:3f1;c13:2f0;q11:3f3;c11:5f1;c13:5f3;y10:3f1;c12:9f3;q13:8f1;c13:7f3;c12:7f2;b10:2f1;p10:1f2;r12:8f3;r14:8f3;b14:9f0;p13:9f7;p12:5f7;b11:6f1;b14:6f0;p13:6f7;p11:4f1;r13:4f3;r10:4f2;q11:1f6;c11:2f2;q13:10f1;r11:13f1;p11:12f6;b11:11f3;p12:11f3;g12:10f3;c13:11f0;q12:12f0; Parts optimization 0:39, 28 parts on Robotanks (where Patashu has "optimized for speed" record): ?lvl=15&code=c13:3f0;p12:3f5;c11:12f2;c13:12f0;p12:10f3;c11:11f3;c11:10f3;c13:10f3;c13:11f3;p12:8f3;c11:8f3;c13:8f3;c12:9f3;c11:9f2;c13:9f0;c11:3f3;p11:4f3;c12:4f3;c10:4f3;c10:5f2;c11:6f3;c13:6f3;c12:7f3;c11:7f2;c13:7f0;c12:5f3;p12:6f3;c11:5f2; Here's 0:17, 12 parts if you can cheat (needs luck manipulation too): ?lvl=15&code=c13:3f0;c12:9f3;c11:3f3;c12:7f3;c12:5f3;p12:3f5;p11:4f3;c12:4f3;p12:8f0;p12:10f0;c12:11f3;p12:6f0; Speed optimization, 0:20, 9 parts on Robospies (where Patashu has "optimized for parts" record): ?lvl=16&code=p12:4f2;c12:5f3;c12:7f3;c12:8f3;c12:9f3;c12:10f3;p12:6f7;p11:6f4;c11:5f2;
Gunty wrote:
Does anyone have an elegant solution for "Police!"? The best I got is 3:14 using 51 parts, but I have a feeling that's not very optimal.
I got 3:07, 42 parts, on "Police!". I admit that my algorithm, too, is very basic. It just does its stuff. And it's got plenty of repeaters. ?lvl=19&code=r11:3f2;y12:2f3;b13:3f0;b11:6f2;g12:5f3;p12:6f3;r13:6f0;y12:4f3;i11:9f1;q12:7f5;c11:7f3;c12:8f3;p12:3f7;r12:9f0;b10:8f3;p11:8f3;q9:7f7;q7:7f3;c8:8f1;y10:7f1;c9:9f0;c10:9f0;y8:9f1;y6:7f1;c10:5f2;c7:6f2;c6:6f2;q9:5f5;c11:5f2;b10:6f0;r8:6f2;p9:6f1;p8:7f1;b9:8f0;r7:8f2;b10:11f2;y10:12f2;p11:11f3;r12:11f0;c12:12f3;c11:10f3;q11:12f5; In the same breath, here is my Judiciary; 3:35, 62 parts. You may notice the modular structure. ?lvl=20&code=y14:2f3;y12:2f2;c9:5f2;q9:6f3;r9:7f2;r10:5f2;p10:6f1;c10:7f1;y10:8f1;q11:4f5;p11:5f1;q11:6f7;b11:7f0;c11:8f0;c12:4f2;b12:5f0;y12:6f1;b12:7f3;c12:8f0;c13:4f2;b13:5f2;c13:6f3;p13:7f3;i13:8f1;g14:4f3;p14:5f3;q14:6f5;c14:7f3;r14:8f0;r15:5f0;c14:3f3;q10:12f7;c11:10f2;q12:10f7;y12:11f3;p12:12f3;c13:10f0;r13:11f3;p13:12f2;b13:13f1;q14:12f3;c13:9f3;p9:10f1;c9:11f1;g9:12f1;b14:9f3;p14:10f0;r14:11f1;p15:10f1;c15:11f1;g15:12f1;r11:11f3;r10:11f1;b11:13f1;b10:9f3;p10:10f6;p11:12f4;y8:5f2;c8:6f1;b13:3f1;r13:1f3;p13:2f2; I also tried to make these maximally aesthetic. Means things such as no air-hanging conveyer belt ends (where possible within goals), and maximal symmetry in adjacent writer colors.
Post subject: Re: Generals! And Robotanks, Robospies. And Police!, Judiciary
Player (199)
Joined: 12/3/2006
Posts: 151
Bisqwit wrote:
I got 3:07, 42 parts, on "Police!". I admit that my algorithm, too, is very basic. It just does its stuff. And it's got plenty of repeaters.
I improved my solution to "Police!" to 2:50, using 35 parts. I think it uses the same algorithm as your solution, in a more compact layout: ?lvl=19&code=c12:11f3;g12:3f3;y12:2f3;y12:6f3;c12:4f3;c12:5f3;b11:8f2;r13:8f0;c12:8f3;p12:9f3;q11:9f5;q13:9f1;c12:10f3;c14:5f0;c15:9f1;r15:8f1;p15:7f0;c14:6f1;b15:6f3;b13:6f0;r13:4f0;p13:5f4;y10:9f1;b10:8f1;c10:7f2;c11:7f2;i12:7f7;c13:7f2;q14:7f6;g14:8f1;y14:9f2;q12:12f6;p13:12f4;r13:11f3;b13:13f1;
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Gunty wrote:
Bisqwit wrote:
I got 3:07, 42 parts, on "Police!". I admit that my algorithm, too, is very basic. It just does its stuff. And it's got plenty of repeaters.
I improved my solution to "Police!" to 2:50, using 35 parts. I think it uses the same algorithm as your solution, in a more compact layout:
Interesting. In my program, the "basic" structure of the buffer at the start of every iteration is "nnYremainderYnnG". In yours, it is "remainderYnnGnnY". My program goes "find first Y -> move it forward -> find next Y -> move it backward -> find G -> start again". Your program goes "find next Y -> move it backward -> find next Y (observe G in the middle) -> move it forward -> start again". Very cool! Congratulations. EDIT: With affectionate apologies to Gunty, here's Judiciary revised; 3:42, 60 parts. :( ?lvl=20&code=p12:12f3;p11:12f4;p13:12f2;p10:10f6;p9:10f1;p14:10f0;p15:10f1;r11:11f3;r13:11f3;r14:11f1;r10:11f1;c9:11f1;c11:10f2;c13:10f0;q12:10f3;c15:11f1;b11:13f1;b13:13f1;b10:9f3;b14:9f3;g12:11f3;y9:12f1;y15:12f1;q10:12f3;q14:12f7;b11:9f2;p12:9f3;r13:9f0;q12:8f2;b10:5f2;c10:6f1;y10:7f1;c11:5f2;b11:6f2;q11:7f5;y12:4f3;i12:5f7;c12:6f3;p12:7f3;c13:5f2;r13:6f0;q13:7f1;g12:3f3;y12:2f3;c15:4f1;q15:5f6;g15:6f1;b16:4f3;p16:5f0;r16:6f1;c14:5f2;c13:4f0;c13:2f3;c13:3f3;b14:4f0;r14:2f0;p14:3f4;c15:3f0;y14:7f1;r14:6f1; Here's the speed-optimized version. 3:27, 69 parts: ?lvl=20&code=p12:12f3;p11:12f4;p13:12f2;p10:10f6;p9:10f1;p14:10f0;p15:10f1;r11:11f3;r13:11f3;r14:11f1;r10:11f1;c9:11f1;c11:10f2;c13:10f0;q12:10f3;c15:11f1;b11:13f1;b13:13f1;b10:9f3;b14:9f3;g12:11f3;y9:12f1;y15:12f1;q10:12f3;q14:12f7;b11:9f2;p12:9f3;r13:9f0;q12:8f2;b11:6f2;q11:7f5;c12:6f3;p12:7f3;r13:6f0;q13:7f1;g12:3f3;y12:2f3;q15:5f6;g15:6f1;b16:4f3;p16:5f0;r16:6f1;c15:7f2;c14:7f2;y16:7f1;c10:7f0;c9:7f0;y8:7f1;b8:6f1;r8:4f3;p8:5f2;q9:5f0;g9:6f1;c9:4f2;r10:3f2;p10:4f2;b10:5f2;c11:3f3;c11:4f3;c11:5f2;c13:3f3;c13:4f3;c13:5f0;r14:3f0;p14:4f4;b14:5f0;c15:4f0;y12:5f3;c12:4f3; EDIT: In the same train of thought, here's the speed-optimized version of Police!, 2:38, 40 parts: ?lvl=19&code=c12:11f3;g12:3f3;y12:2f3;y12:6f3;c12:4f3;c12:5f3;c12:10f3;c14:5f0;q12:12f6;p13:12f4;r13:11f3;b13:13f1;c10:5f2;q14:6f6;g14:7f1;c14:8f2;b15:5f3;p15:6f0;r15:7f1;y15:8f1;r9:5f3;p9:6f2;b9:7f1;y9:8f1;q10:6f0;g10:7f1;c10:8f0;b11:7f2;q11:8f5;c12:7f3;p12:8f3;r13:7f0;q13:8f1;c12:9f3;r11:4f2;b11:6f2;p11:5f2;r13:4f0;b13:6f0;p13:5f4;
Player (201)
Joined: 7/6/2004
Posts: 511
Bisqwit wrote:
arflech wrote:
I didn't realize that you could enter the branches from any direction; that certainly makes some levels easier...
That, and also, I didn't learn of bridges until in RoboMechas, where I absolutely needed them.
I too didn't know about bridges for a long time, but I did get past RoboMechas before learning about them: url It is interesting to try to solve with as few as parts as possible (for all possible inputs), basically it is like trying to code golf a weak version of befunge. But it doesn't really make sense to optimize for speed because only hard coded inputs are used (which can easily be exploited). Although I do like Nitrodon for bringing asymptotic notation into this :)
g,o,p,i=1e4,a[10001];main(x){for(;p?g=g/x*p+a[p]*i+2*!o: 53^(printf("%.4d",o+g/i),p=i,o=g%i);a[p--]=g%x)x=p*2-1;}
Banned User
Joined: 6/18/2010
Posts: 183
flagitious wrote:
Bisqwit wrote:
That, and also, I didn't learn of bridges until in RoboMechas, where I absolutely needed them.
I too didn't know about bridges for a long time, but I did get past RoboMechas before learning about them
Interestingly, you can complete all of the levels without using a bridge. Another interesting restriction you can impose is to not allow flipping of branches -- that is, the "readers" must all have the same orientation up to rotation. There are a few levels where I haven't found a solution with both those restrictions but they all may be possible.
Bisqwit wrote:
I first coded this in C++, then translated it into Manufactoria. The first revision was 66 parts long and took 2:41 to execute. Then I optimized it progressively.
This is surprising to me, though congratulations for finding a nontraditional solving method that exploits your personal strengths. One weakness your method may have in general, though, is that you don't stumble upon "intelligent" methods of optimization you might naturally find if you weren't constructing your solutions so mechanically. I'll try to show you what I mean in my next post.
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Pointless Boy wrote:
Bisqwit wrote:
I first coded this in C++, then translated it into Manufactoria. The first revision was 66 parts long and took 2:41 to execute. Then I optimized it progressively.
This is surprising to me, though congratulations for finding a nontraditional solving method that exploits your personal strengths. One weakness your method may have in general, though, is that you don't stumble upon "intelligent" methods of optimization you might naturally find if you weren't constructing your solutions so mechanically. I'll try to show you what I mean in my next post.
I will be interested to see what you mean. For reference, here's the C++ code I wrote for the "Officers!" stage. Apologies about the shoddy indents and row spacing; I tightened it a bit to make it fit on screen for a screenshot (which takes less visual space on the forums than a code paste does).
Active player (315)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
spoilers! anyway, I'm still trying to find a way to find out what's the last element in a string. hints? I"m not a programmer, you see. I'm not used to make algorithms so this is being mostly intuitive play.
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Post subject: Re: Last element in a string
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
pirate_sephiroth wrote:
I'm still trying to find a way to find out what's the last element in a string. hints?
Insert a delimiter at the beginning of the program (it goes to the end of the string), and search for the delimiter. The element right before the delimiter is the last element.
Banned User
Joined: 6/18/2010
Posts: 183
Robomecha! (Level 28) Algorithm and Part Optimization Walkthrough The task: take an input string of only red and blue symbols and output an otherwise identical string with the last symbol moved to the front. Generally I find Manufactoria levels to be easier if you try to come up with a basic algorithm on paper, which you bit by bit translate into Manufactoria-compatible components.
[Algorithm v1.0]

1. Read the last symbol
2. Move it to the front
Since we've all played the game a bit, we realize we can't just up and read the last symbol. Our tape is a LIFO stack. The only element on the tape we can read is the first one, by popping it off the stack. (It's also important to note the very act of positively identifying a symbol is destructive, which comes into play when we need to preserve some or all of the input.) The only way we can write an element to the tape is by pushing it onto the stack -- we can only append. This necessitates some modifications to our algorithm.
[Algorithm v2.0]

1. Transcribe symbols until the last one is reached.
2. Write the last symbol.
3. Transcribe the remainder of the string from the beginning again.
Though still very rough, we are starting to reach a point where we can translate our algorithm in to Manufactoria components. For example, we have a basic transcriber: Of course, a R/B-only string will never leave such a device, so we use the trick of first marking the end of the input string with a different color: That's almost useful, but how do we know when we've reached the last symbol? Just a little ingenuity allows us to modify the transcriber to "record" the last symbol for us by having a separate branch for each option: If the last symbol is blue, we head off to the left. If the last symbol is red, we head off to the right. Now that we've modified the transcriber into something useful for our task, let's get back to the paper algorithm and refine it further.
[Algorithm v3.0]

1. Write Y to mark the end of the string.

Loop
2. Read R/B
3. Attempt to read Y
3a. Y: Exit loop and follow appropriate branch.
3b. Not Y: Write R/B and continue loop.
End Loop

Blue Branch
4. Write blue.
5. Transcribe the rest of the string.

Red Branch
4. Write red.
5. Transcribe the rest of the string.
Let's try to translate those branches back into Manufactoria: We run into a familiar problem with this naive attempt, namely we've forgotten we always need a way to exit a transcriber. We solved this problem last time by using a Y marker, let's try that again: We're almost there! We've made all the needed modifications to the string, we'll just have a leftover yellow marker whenever the last transcription is done, or if the string is blank. Let's get rid of it: And that's it. This device will accept any R/B string, move the last symbol to the front, and have the string ready to be sent to the exit whenever the robot passes through any of the three downward pointing G/Y branches. For a task this simple it's pretty clear we probably can't do any better from an algorithmic standpoint. Can we reduce the number of parts we are using in Manufactoria, though? One of the first things to look for when trying to reduce part usage is duplicated components. Do we have any of those here? Well, we have three transcribers in our device. One of them is a special transcriber that recognizes the last component in a string, so we probably can't get rid of that one. The other two are just normal transcribers though. Do we really need both of them? Though we don't realize any immediate gains, let's use conveyors to get rid of one of the transcribers: Another thing to look for when trying to reduce part usage is branches that allow for what I call "redundant passthrough." In the above picture we had to do some pretty ugly gymnastics with conveyors to allow for a blank string (which is actually one of the tests!) But let's think about what really happens when we get a blank string. It just goes straight down, failing to be redirected by any R/B branch. If that's the case, a blank string could pass through as many R/B branches as we wanted without issue. Why not send it through the second transcriber to get rid of some conveyors? Now we're talking! That's starting to look really slick. Can we do even better? Here's where we really need to start thinking outside the box. So far we've been stuck thinking about a transcriber as a device we enter through a R/B branch. But in truth you can enter any single part from any direction, and any multi-part component through any of its external pieces. What happens if we enter a transcriber through one of the writing parts? We end up writing an extra symbol of a particular color. But wait ... isn't that what our algorithm is doing just before we go to the last transcription step? We write an extra symbol of a particular color, then transcribe the rest of the string. What if instead of explicitly writing the extra symbol, we let the transcriber do it by entering it from a different direction? Wow! Add in to- and from-conveyors and we get the final, fully optimized solution: Or if you prefer the level code:
?lvl=28&code=c10:7f2;b11:5f2;b11:7f2;c12:5f3;p12:6f3;p12:7f3;r13:5f0;r13:7f0;c14:7f0;y12:4f3;y10:6f3;y14:6f3;q11:6f5;q13:6f1;q12:8f2;c12:3f3;c12:9f3;c12:10f3;c12:11f3;
I hope you folks found this informative. If you'd like me to make walkthroughs for any other levels, just ask. Most of my solutions are very well optimized, and I remember the steps I went through to get there.
Active player (315)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
GODAMMIT, FRED! Thankfully I'm easily distracted and I didn't pay attention to your pictures.
Bisqwit wrote:
Insert a delimiter at the beginning of the program (it goes to the end of the string), and search for the delimiter. The element right before the delimiter is the last element.
yeah easier said then done... heheh
Pointless Boy wrote:
If the last symbol is blue, we head off to the left. If the last symbol is red, we head off to the right.
yeah that's what I'm trying to achieve
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Emulator Coder, Skilled player (1311)
Joined: 12/21/2004
Posts: 2687
I got a better parts record on Robo-Children: 17 parts. I shuffled that around to get something even simpler but due to the board size it's still 17 parts (On a 6x6 board it would only take 12 parts). Somewhat disappointingly, I did a search for records others have posted, and found that somebody else posted exactly the same solution as that second one elsewhere (though the code URL looked different) an hour or so ago, so I can't claim to probably be the first to discover a 17-part solution to this.
Post subject: Teachers!, Academics!, Engineers!
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Here's "Teachers!" in 0:59, 26 parts assuming that X may also be zero. ?lvl=21&code=p12:2f3;c12:9f3;c12:10f3;c12:11f3;c12:12f3;c12:8f3;q12:7f7;p13:2f2;r13:1f3;c12:6f3;p12:5f3;c12:4f3;c12:3f3;y11:2f2;c13:3f2;i13:4f2;p13:5f6;r13:6f1;b15:2f3;p15:3f6;i15:4f1;q16:3f2;q16:4f4;y16:5f1;c14:3f2;c14:4f0; EDIT: Replaced with a version that has no bugs. Speaking of bugs, Patashu, your 12-part Robobugs, below, fails on input 00001. ?lvl=5&code=c12:9f3;c12:10f3;c11:5f3;c12:4f3;p12:5f3;c13:5f3;c13:6f0;p11:6f3;p12:6f3;c11:7f2;c12:7f3;c12:8f3; Here's Robobugs in 0:28, 13 parts with no bugs. ?lvl=5&code=p11:6f7;p12:6f7;p12:4f7;c11:4f3;c11:5f3;c13:4f3;c13:5f0;c12:5f3;c11:7f2;c12:7f3;c12:8f3;c12:9f3;c12:10f3; Also, Academics! in 3:21, 31 parts ?lvl=23&code=y12:2f3;q11:3f5;q13:3f1;r11:5f3;p11:6f4;b11:7f1;c12:5f3;p12:6f7;c12:7f3;b13:5f3;p13:6f6;r13:7f1;q10:6f6;q14:6f0;r10:4f1;y10:5f1;b14:4f1;y14:5f1;r14:2f3;p14:3f4;b10:2f3;p10:3f6;g12:3f3;c12:4f3;b11:9f2;p12:9f3;q12:10f0;c12:11f3;r13:9f0;c12:8f3;c12:12f3; Another C++ translation. C++ helps because it saves the trouble of having to rewrite the conveyer belts / arrow directions again and again while optimizing branches. Also, Engineers! in 1:16, 39 parts Source code withheld. It was rather trivial at this point, though. Achievement unlocked: Epilog.
Banned User
Joined: 6/18/2010
Posts: 183
Bisqwit wrote:
I will be interested to see what you mean.
It's very exciting and interesting for me to see how you have taken bits and pieces in Manufactoria, translated them into C++, and then constructed entire solutions to problems outside of the game itself. Now that you have seen my solution to Robomecha (28) though, I think you can see what I mean. You somewhat lose touch with the artistry of the game using your approach. You've correctly realized that Manufactoria is a complete computer, and given a large enough construction space, can do anything you can do with C++. Manufactoria is also a beautiful set of specific rules and restrictions, though. When used in an elegant way, like the artificial restrictions people impose when writing poetry, Manufactoria solutions can become just as artful as poetry. Note that I make no judgments as to which method of solving is better than any other. The game is more interesting to me the more ways I see people have explored it.
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Pointless Boy wrote:
Now that you have seen my solution to Robomecha (28) though, I think you can see what I mean.
Thank you for the informative posting. Incidentally, your post describes more or less exactly the manner in which I solved that particular stage, except that I do merging continuously instead of lastly. Naturally, the result is almost identical too. The only difference is that my red/blue colors are a mirror image to yours, and that my engine starts one step higher. I've used the C++ method only with the more complicated engines where I need to make notes to begin with.
Banned User
Joined: 6/18/2010
Posts: 183
Bisqwit wrote:
Thank you for the informative posting. Incidentally, your post describes more or less exactly the manner in which I solved that particular stage, except that I do merging continuously instead of lastly. Naturally, the result is almost identical too. The only difference is that my red/blue colors are a mirror image to yours, and that my engine starts one step higher. I've used the C++ method only with the more complicated engines where I need to make notes to begin with.
I naturally tend to optimize on the fly as well, though for the purposes of the walkthrough I went step by step. I used Robomecha as an example because I didn't want to ruin finding a pretty solution to Officers for you, but they are very quite similar, so it's hopefully still instructive. Coincidentally, someone asked about Robomecha while I was writing the walkthrough.
Post subject: Re: Teachers!, Academics!, Engineers!
Active player (487)
Joined: 2/19/2007
Posts: 114
I've got "Teachers!" in 0:52 with 19 parts (also allowing X=0). Edit: Though it seems my interpritation of the problem was different to Bisquit's. ?lvl=21&code=p12:7f7;c12:4f3;c12:8f3;c12:9f3;c12:10f3;c12:11f3;c12:12f3;c12:3f3;c12:2f3;p13:7f2;b13:8f1;p13:6f5;r14:6f0;i12:6f1;q11:6f4;p10:6f2;b10:7f1;g12:5f3;c11:5f2; And Robobugs can be done in 11 (0:26) (also without bugs I hope!) ?lvl=5&code=c12:8f3;c12:9f3;c12:10f3;p12:5f3;c12:7f3;p13:5f4;c12:6f3;p11:5f6;p11:6f6;p13:6f4;c12:4f3;
Post subject: Re: Teachers!, Academics!, Engineers!
Banned User
Joined: 6/18/2010
Posts: 183
Bisqwit wrote:
Also, Academics! in 3:21, 31 parts ?lvl=23&code=y12:2f3;q11:3f5;q13:3f1;r11:5f3;p11:6f4;b11:7f1;c12:5f3;p12:6f7;c12:7f3;b13:5f3;p13:6f6;r13:7f1;q10:6f6;q14:6f0;r10:4f1;y10:5f1;b14:4f1;y14:5f1;r14:2f3;p14:3f4;b10:2f3;p10:3f6;g12:3f3;c12:4f3;b11:9f2;p12:9f3;q12:10f0;c12:11f3;r13:9f0;c12:8f3;c12:12f3; Another C++ translation. C++ helps because it saves the trouble of having to rewrite the conveyer belts / arrow directions again and again while optimizing branches.
Very nice. You can cut the number of transcribers in the main portion in half, though :)
Post subject: Re: Teachers!, Academics!, Engineers!
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Pointless Boy wrote:
Bisqwit wrote:
Also, Academics! in 3:21, 31 parts ?lvl=23&code=y12:2f3;q11:3f5;q13:3f1;r11:5f3;p11:6f4;b11:7f1;c12:5f3;p12:6f7;c12:7f3;b13:5f3;p13:6f6;r13:7f1;q10:6f6;q14:6f0;r10:4f1;y10:5f1;b14:4f1;y14:5f1;r14:2f3;p14:3f4;b10:2f3;p10:3f6;g12:3f3;c12:4f3;b11:9f2;p12:9f3;q12:10f0;c12:11f3;r13:9f0;c12:8f3;c12:12f3; Another C++ translation. C++ helps because it saves the trouble of having to rewrite the conveyer belts / arrow directions again and again while optimizing branches.
Very nice. You can cut the number of transcribers in the main portion in half, though :)
I know. I just couldn't figure out a way that doesn't actually increase the number of parts. Conveyer belts count towards the cost, too. See here: ?lvl=23&code=c10:9f3;r9:1f2;y9:2f1;p10:1f7;q10:2f0;g10:3f3;c10:4f3;p10:5f7;c10:6f3;b11:1f0;y11:2f1;i11:3f0;c11:4f1;q11:5f6;b12:4f3;p12:5f0;r12:6f1;c12:2f3;y12:3f0;c10:7f3;c10:8f3;r8:4f3;p8:5f2;b8:6f1;c9:4f1;q9:5f0;c9:3f1;c10:13f2;c11:13f2;r9:11f2;p10:11f7;q10:12f0;b11:11f0;c10:10f3; I know that you know the way around this problem. It's just that I don't :) (I was able to make it better, reaching 31 parts again, but it was slower, and then I accidentally erased it as I've done many times. Whose idea was it to make the eraser the default tool?) Also, Seraphim! in 0:42, 31 parts. The very same problem applies in this table.
Editor, Emulator Coder, Expert player (2159)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
Scepheo wrote:
I consider this to be quite an interesting solution for robot children, despite not being as small: http://pleasingfungus.com/?lvl=18&code=c10:4f2;r10:5f1;c11:4f2;p11:5f7;y12:3f3;c12:4f3;p12:5f7;y12:6f3;p13:5f7;b14:5f1;q12:7f4;q12:8f4;c12:9f3;c12:10f3;c12:11f3;c14:4f0;c13:4f0;c9:6f1;c9:5f1;c9:4f2;c11:8f0;c10:8f0;c9:8f1;c9:7f1;
My more interesting (0:30 with 23 parts, faster and smaller, but neither the fastest nor the smallest) solution for Robo-children: ?lvl=18&code=y12:3f3;p12:5f3;c10:6f1;r14:5f1;b10:5f1;c10:4f2;c12:4f3;c14:4f0;p13:7f3;p12:7f3;c12:11f3;q12:6f2;p11:7f3;c14:6f1;y14:7f1;y10:7f1;c12:10f3;p11:5f3;p13:5f3;c11:4f2;c13:4f0;c12:8f3;c12:9f3;
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Post subject: Performance analysis
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
This game is one of those means to find out exactly where you rank in a particular scale. And I'm not surprised of the result. I'm "okay", as in I can solve the levels, and I understand the principles of optimization, but I'm nowhere near the "stunning and cunning" class where people bring up solutions that are half shorter than mine and often half faster too. Exactly where I need to be. Sometimes it gets frustrating that this applies in nearly every possible area of life, but I guess there's a blessing in that, too.
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
klmz wrote:
My more interesting (0:30 with 23 parts, faster and smaller, but neither the fastest nor the smallest) solution for Robo-children: ?lvl=18&code=y12:3f3;p12:5f3;c10:6f1;r14:5f1;b10:5f1;c10:4f2;c12:4f3;c14:4f0;p13:7f3;p12:7f3;c12:11f3;q12:6f2;p11:7f3;c14:6f1;y14:7f1;y10:7f1;c12:10f3;p11:5f3;p13:5f3;c11:4f2;c13:4f0;c12:8f3;c12:9f3;
This is indeed interesting because you can chain it: ?lvl=18&code=y12:3f3;p12:5f3;c12:4f3;p13:7f3;p12:7f3;c12:11f3;q12:6f2;p11:7f3;c12:10f3;p11:5f3;p13:5f3;c11:4f2;c13:4f0;c12:8f3;c12:9f3;c7:4f2;b7:5f1;c7:6f1;y7:7f1;c17:4f0;r17:5f1;c17:6f1;y17:7f1;p10:5f3;p8:5f3;p9:5f3;p10:7f3;p9:7f3;p8:7f3;p14:7f3;p15:7f3;p16:7f3;p14:5f3;p15:5f3;p16:5f3;c8:4f2;c9:4f2;c10:4f2;c14:4f0;c15:4f0;c16:4f0;