## Manufactoria

A friend of mine just pointed me to a most excellent puzzle game, Manufactoria, wherein you build little machines to test robots. For now I won’t give away the secret of what real math/computer science topic the game teaches you, but I’ll write more about it later. For now, just have fun playing the game! =)

Associate Professor of Computer Science at Hendrix College. Functional programmer, mathematician, teacher, pianist, follower of Jesus.
This entry was posted in games, links, logic, programming, puzzles and tagged , , . Bookmark the permalink.

### 17 Responses to Manufactoria

1. Niels Egberts says:

Yeah that game is awesome. In a few weeks I’ve got an exam about computation so this is perfect procrastination.

2. Tom says:

Mmm…first to comment.

I reckon we can propose a relationship between the addictiveness of the links in a post and the rate at which comments come in. I know for one I intended to say how cool this little game was last night, but I couldn’t resist solving a few more levels, and, well, I never quite got to commenting 🙂

Personally I’m stuck on one of the earlier levels, the “number of blue and then same number of reds” one. It’s blocking the whole field 😦

Anyway, thanks for the fun, and this is a very cool blog.

3. Rocket says:

A flat line of b/r gates, solves that. I just started “put a yellow dot in the middle of a string”… Tough stuff.

4. Tom says:

haha, didn’t realise guys can enter gates from the sides!

I do feel a bit cheap solving it that way though (with the horizontal line of b/r gates), cause it won’t work for any length of blues/reds, just for as long as you sideways chain goes…I wonder if there’s a way to loop it so that it could theoretically run a million blues then back a million reds…

5. Brent says:

Rocket: I guess that happens to work on the test cases the game uses, but wouldn’t it fail on something like BBBRBRRR? (That is, it would accept that string when in fact it should not?) It also doesn’t work for the reason Tom says. Looping it wouldn’t work since if your loop is n units long then you can’t tell the difference between any two numbers that have the same remainder when divided by n.

6. Tom says:

I wonder if you could solve it by re-writing the whole code, but leaving off the first blue and the first red you meet, and then running that process again, so the code loses a blue and a red each cycle…that way the whole code would continually reduce itself so that (if it’s legitimate) there’ll be just one blue and one red at the end…and you might somehow be able to tell that it has been reduced as such.

7. Brent says:

Tom: that’s exactly how I solved it!

8. Tom says:

Hahahaha, the sheer elegance to the simplest solution for ‘with blue as 1 and red as 0, multiply by 8’ almost knocked me over just now 🙂

9. Brent says:

Tom: hehe, nice, you have just discovered the “bit shift” operation. =) Almost all modern CPUs can do this as a special case so that multiplying by powers of two is much faster than multiplication in general.

10. Ryan says:

This is a really interesting game. I’ve never done any programming, and I haven’t taken any computer science courses yet, but I find this game very enjoyable. Thanks for the link!

11. Angus McAngle says:

Nice game! I just have a few levels left. The only concern I have about it is that they should have put more thought into their test cases (or problem descriptions). Cause there are very simple test cases that break some of my accepted machines.

• Brent says:

Yes, I agree with you re: test cases!

12. K-Cube says:

Have you tried playing manufactoria now? There is now a ‘Malevolence Engine’ which works out if the machine is flawless and if it isnt it shows you the simplest R/B combo which is wrongly accepted or rejected 🙂

• Brent says:

Ah, very nice!

13. K-Cube says:

you have to play on specific sites for that though; i use kongregate.com 🙂

14. ignatius says:

> a ‘Malevolence Engine’ which works out if the machine is flawless

That would be equivalent to solving the halting problem – I guess that it uses some scripted heuristics, such as to check if loops are used, probes the complexity behaviour or simply tries strings which are too long to accommodate with a feed-forward network.

> you have to play on specific sites for that though

You can also download the Manufactoria.swf and play with the standalone flashplayer.

> I just have a few levels left.

If you’ve finished, you might check out one of those (playtested, but cannot check the links here):

Robojournalists!
Our robotic investigators bring you today the news of tomorrow – and for all other days, too.

Roboeditors!
ROX News, the Robotic Objective eXaminer. fair & balanced [tm] and 100% cognitive consonant.

Robolawyers!
RAG, the robotic advocate corps, for child molesters, bankers and YOU. Now with 100% less ethics!

15. Tab Atkins says:

@Ignatius: Nah, the Malevolence Engine doesn’t do anything so complicated. It just does total-coverage testing for all tapes up to 6-12 dots long (the amount of total-coverage depends on the expected running-time of the machine – early ones do all tapes up to 12 dots, the last ones only go up to 6). It then tests several randomly-generated longer tapes. I think that Robochildren also specifically tests a maximum-length tape filled with half one color then half the other, to break naive machines just using chained branches.

Also, as part of the XKCD message board’s obsession with the game, I wrote a Manufactoria emulator in js at http://www.xanthir.com/manufactoria. Check it out – it’s good for testing out the really slow machines at the end, because it can execute long strings enormously faster than the flash version does with its animations.