Manufactoria - Make Turing Machines with Conveyor Belts

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

Axidos
Posts: 167
Joined: Tue Jan 20, 2009 12:02 pm UTC
Location: trapped in a profile factory please send help

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Axidos » Sun Jun 20, 2010 2:28 pm UTC

@Xanthir:
Using Steve496's code from the quote below I'm getting broken images.
Image
The broken images all seem to be prefixed with w/W and R.


Steve496 wrote:tehtml's Robo-children solution allows a faster 23-part Politicians to be constructed:

Code: Select all

?lvl=22&code=p12:4f3;r13:4f0;c12:3f3;p11:4f0;r11:5f1;b11:3f2;g12:2f3;b13:5f3;p13:6f4;r13:7f1;c13:8f1;q12:6f6;g12:7f3;p12:8f7;c12:9f3;c11:6f2;c11:7f1;p11:8f0;b11:9f1;c12:10f3;c12:11f3;c12:12f3;c12:5f3;

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Sun Jun 20, 2010 3:18 pm UTC

Axidos wrote:@Xanthir:
Using Steve496's code from the quote below I'm getting broken images.
The broken images all seem to be prefixed with w/W and R.

Ah, sorry about that. The writers were capitalizing part of their filenames incorrectly. I didn't notice this while it was on my local machine, because I run windows which is case-insensitive. Fixed.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

asdfex
Posts: 12
Joined: Wed Jul 02, 2008 10:14 pm UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby asdfex » Sun Jun 20, 2010 3:32 pm UTC

Thanks for the JS evaluation tool! I think there is a bug in the code that marks strings as incorrectly rejected. E.g. this code

Code: Select all

?lvl=18&code=r10:2f3;q11:3f3;p10:3f2;r13:4f3;p12:4f3;b11:4f3;b10:4f1;c13:5f0;i12:5f6;c12:6f3;c12:7f3;c12:8f3;c12:9f3;c12:10f3;c12:11f3;c9:4f1;g8:5f1;q8:6f4;b9:5f3;p9:6f0;r9:7f1;c8:4f2;c10:5f3;p10:6f3;p9:3f5;b8:3f2;r11:6f0;g11:5f0;c12:3f3;

gives a "incorrectly rejected" for the sequence "R" - which has to be rejected according to the levels rules "equal number of blue and red".

Firefox can't show the svg graphics, it gives an XML-error "No element found" in line 1, column 1 for each of the graphics. I'm not sure why this happens.

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Sun Jun 20, 2010 5:07 pm UTC

Ah, indeed there was. To check that level, I iterated through the tape and incremented blue and red counters, then compared them at the end. However, the iteration method I used went through *all* properties of the tape, not just the indexes. In particular, it went through .length, which happens to be 1 for [R], which also happens to be the internal representation for B. So it was adding an extra B to the count when the tape had only a single color.

Anyway, fixed. Also, fixed the longstanding bug where it would claim you "correctly rejected" a tape on the output levels if you dumped it while it happened to not match the output condition (on output levels, all rejections should be incorrect).

Also also, added graphics for the entrance and exit tiles.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

Nabb
Posts: 10
Joined: Fri Apr 24, 2009 3:12 pm UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Nabb » Mon Jun 21, 2010 7:35 am UTC

SLOW.

Spoiler:
Image


Code: Select all

?lvl=23&code=y12:2f0;g11:1f0;y11:2f1;b10:8f2;q11:6f2;y11:7f3;p11:8f3;b11:9f2;p12:6f0;b12:7f2;r12:8f0;c12:9f2;c13:5f3;c13:6f0;c13:7f2;y13:8f3;c13:9f2;p14:6f3;i14:7f5;q14:8f3;q14:9f2;c14:10f3;q14:11f7;c14:12f3;c14:13f0;c15:6f2;c15:7f1;r15:10f3;p15:11f2;b15:12f1;c15:13f0;q16:11f7;c13:13f0;y13:11f3;g13:12f0;q12:12f5;c10:7f1;c10:6f1;c14:4f3;g10:1f0;g9:1f0;c15:8f0;g8:1f0;g7:1f0;g6:1f3;c11:10f0;c12:10f0;c12:11f1;c13:4f2;c11:4f2;g6:5f2;c8:6f2;c9:6f2;b12:5f2;c12:4f2;q9:7f6;c10:5f2;c11:5f1;g6:2f3;g6:3f3;g6:4f3;g7:5f2;g8:5f2;g9:5f1;g9:4f0;g8:4f0;g7:4f1;g7:3f1;g7:2f2;g8:2f3;g8:3f2;g9:3f1;g9:2f2;g10:2f3;g10:3f2;g11:3f2;g12:3f2;p16:6f6;i14:5f1;r16:5f0;c15:5f0;g13:3f1;g13:2f1;g13:1f2;r16:7f0;q17:6f2;y17:7f3;c14:3f3;i8:7f4;i8:8f0;i7:7f3;g9:8f0;r16:12f3;p17:12f7;b18:12f3;c17:11f3;c18:13f0;c17:13f0;c16:13f0;b16:8f3;p16:9f0;r16:10f1;c17:8f3;c17:9f0;y8:11f2;q8:12f5;q8:13f4;i9:11f4;y9:13f0;c10:11f1;q10:12f2;y10:13f0;b11:11f3;p11:12f0;r11:13f1;c10:10f1;c10:9f0;i9:9f2;c8:9f1;r15:9f0;g14:2f3;g14:1f3;c9:12f1;c9:10f1;q8:10f4;q13:10f2;p17:10f7;p18:11f4;p18:10f4;r18:9f3;p18:6f4;r18:5f0;c17:5f1;p17:4f5;r18:4f0;b16:4f2;c15:3f0;p15:4f7;q10:4f3;p17:2f5;c17:1f0;c16:1f0;c15:1f3;c15:2f3;p18:1f0;c18:3f1;r18:2f1;q17:3f2;b16:2f3;c16:3f2;c18:7f3;b18:8f0;i7:8f2;c6:8f3;c6:9f3;c6:10f3;c6:11f3;c6:12f3;c6:13f2;c7:13f1;c7:12f1;c7:11f1;c7:10f1;c7:9f1;c7:6f0;c6:6f3;c6:7f2;


The obvious slowness increase would be changing the unary to binary...
Last edited by Nabb on Sat Jun 26, 2010 12:41 pm UTC, edited 1 time in total.

Nix
Posts: 93
Joined: Mon Mar 09, 2009 8:14 am UTC

Re: Manufactoria / record solutions

Postby Nix » Mon Jun 21, 2010 5:02 pm UTC

The record score table was here, now moved to the new page. I'm leaving the edit history behind.


Updates since moving to this page:

Not a huge improvement but I made Metatron in 63 parts, one less than tehtmi's record and faster too. I'm not very surprised if it shrinks another 5 parts or so.


2010-06-23

J.P. convinced me to allow impractically slow and tape-hogging solutions on the list, and set it off with a 46-part Metatron he sent some days ago. It's a faster version of the one without moving parts that he posted. I'm still listing the smallest practical solution as well, which here is considerably larger at 63 parts.


2010-06-25

Nabb's Robo-children solution was disqualified when it was found that it doesn't work with all long inputs. This prompted me to make a fast Robo-children myself. The result is not quite as fast as Nabb's flawed solution (28.0k), but at 28.8k still comfortably ahead of Berengal's old record.

I also made a speedy Politicians, beating Steve496's 57k by 2458 steps, using 20 parts more (67).


2010-06-26

My speed records from yesterday didn't stay long. Robo-children was taken by turingnow who posted the faster solution, a nice 3002 steps off 29k adding 10 parts. My Politicians was improved by q00u, eliminating 1944 steps from 55k without changing the part-count.

(edit 1) Nabb took back Robo-children by posting a smaller solution with the same speed. I took the liberty to shrink Nabb's entry by four parts to improve the record with my program. The change loses speed with longer inputs but keeps it equal in the step-counted set.

After inadvertently seeing Nabb's solution I also looked at q00u's twerk to my Politicians, combined both tricks and added a new one of my own, finishing with 45.6k steps for Politicians, down from 52.7k and also using 66 instead of 67 parts.

(edit 2) On a quick read through the Manufactoria thread on TASVideos that Patashu linked to, the only improvement that caught my eye was klmz's Police in 32 parts, one off my 33-part record, although slower.


2010-06-27

Jareds sent an improvement to his speed record in Academics, going from 303k to 286k.

He also sent a faster 20-part Officers to replace J.P.'s, but had to settle for an intermediate record after I added the records I had missed from the TASVideos thread: flagitious has an 18-part Officers beating the 20 and a 17-part Generals to beat J.P.'s 18. Their Metatron fails on a lone green input (implied 0 + 0), as does yaichi's from Kongregate forums, mentioned on TASVideos. Yaichi's Ophanim also hangs on BG (1 + implied 0), but their Police in 29 parts is even better than klmz's 32 I added yesterday.


2010-06-28

Quick speed improvements to the size records I added yesterday: jareds found much faster solutions for both Officers and Generals in the same sizes of 18 and 17 parts, replacing the records of flagitious from TASVideos.


2010-06-29 Moved the updated table and scores.txt to the new page. Edit history continues there.
Last edited by Nix on Tue Jun 29, 2010 6:49 pm UTC, edited 14 times in total.

J.P.
Posts: 2
Joined: Thu Jun 03, 2010 11:58 pm UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby J.P. » Tue Jun 22, 2010 3:44 am UTC

Here's an "obfuscated code" entry: a 46-part Metatron with no moving parts (i.e. no bridges or conveyors)

Code: Select all

?lvl=31&code=y11:6f2;r12:3f3;p12:4f2;b12:5f1;g13:3f3;q13:4f4;p13:6f7;g14:3f0;q14:4f2;p14:5f4;q14:6f6;q14:8f3;g14:9f0;r15:4f3;b15:6f1;b15:8f0;y12:2f3;y13:5f3;q11:7f1;r12:7f0;g12:8f0;b11:8f1;r12:9f3;b12:11f1;p11:10f4;q11:9f6;q11:11f2;y11:12f0;y10:12f1;g10:10f2;q10:11f4;p9:11f6;r9:12f1;b9:10f3;r14:7f3;p13:12f4;r13:11f3;b13:13f1;q12:12f4;q13:9f0;r13:10f3;r13:7f3;q12:10f0;q15:5f0;r12:6f2;p13:8f7;

User avatar
bocochoco
Posts: 317
Joined: Thu Aug 06, 2009 8:22 pm UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby bocochoco » Wed Jun 23, 2010 8:05 pm UTC

This game is great. I wish there were more levels. I just beat Politicians. Probably the least efficient way possible, but it worked.

Code: Select all

?lvl=22&code=g12:2f3;p12:4f3;b11:4f2;r13:4f1;r13:3f0;c12:3f3;c12:9f3;c12:10f3;c12:11f3;c12:12f3;q12:5f6;g12:6f3;c11:8f0;c11:6f2;q10:6f5;r11:7f0;p10:7f5;b9:7f2;c12:7f3;p12:8f7;p10:8f0;p14:8f2;r10:9f1;r15:7f0;b13:7f2;b14:9f1;p14:7f5;q14:6f1;c13:6f0;c13:8f2;


30 parts, 1:21

Explanation
Spoiler:
Replace R with RR at the beginning so you end up with the same input with twice as many Red's, then remove one red and one blue at a time. if you ever don't find one of each, get rid of it. When you end up with nothing left, accept!
Image

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Wed Jun 23, 2010 8:48 pm UTC

Spoiler:
Actually, that's the basis of the current most efficient solution, too. It just does it in reverse - it removes every second blue, then checks for equal red/blue.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

mike-l
Posts: 2758
Joined: Tue Sep 04, 2007 2:16 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby mike-l » Wed Jun 23, 2010 11:03 pm UTC

This game is an absolute blast!

I hate metatron so much right now, I keep running out of space. My basic algorithm is
Spoiler:
If the tape starts as A g B (capitals are numbers, lower case are colors), change it to A g B g g, and then at the start of every loop, the tape reads [A/2^n] g [(B+ (A mod 2^n))/2^n] g (A+B mod 2^n)

1) Change to A g B g g
2a) If A ends in 0, move 2nd g left 1
2b) If A ends in 1, add 1 to B and move 2nd g left 1
2z) If A is empty, goto 5
3) Call new tape A g B g C g
4) goto 2
5) remove all g and exit

The main things causing me to run out of space are in 2b, dealing with the fact that I don't know whether the next symbol when adding is going to be a R/B or a G. I think I'm going to rectify this by changing 1 to 1) Change to A g B r g, and 5 to 5) remove all g and last r. This will be the 4th time I basically start from scratch though... at least I've found some ways to make some other parts smaller.


My last attempt really didn't need much more space at all, maybe 1 extra row/column. I guess I need to work on efficiency. (That or do the really bad solution of:
Spoiler:
1) If A is 0, remove 0 and return B
2) Subtract 1 from A
3) Add 1 to B
4) Goto 1

)*

*A spoiler in parentheses!
addams wrote:This forum has some very well educated people typing away in loops with Sourmilk. He is a lucky Sourmilk.

Tirian
Posts: 1891
Joined: Fri Feb 15, 2008 6:03 pm UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Tirian » Wed Jun 23, 2010 11:54 pm UTC

I found Metatron to be much easier than Ophanim. Here's the gist of my solution.

Spoiler:
Write a full adder, allowing the character after B to be G/Y to represent the carry flag.


Huh. Now that I've written that, I wonder if Ophanim shouldn't be solvable with small and obvious tweaks to that machine.

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Thu Jun 24, 2010 12:16 am UTC

Hahaha, the kongregate version (and presumably the pleasingfungus version) now contains a "malevolence engine" that "sees all weakness". Looks like it does total-coverage checking up to length 12, and then immediately shows you a failing example if it found one.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

User avatar
jestingrabbit
Factoids are just Datas that haven't grown up yet
Posts: 5963
Joined: Tue Nov 28, 2006 9:50 pm UTC
Location: Sydney

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby jestingrabbit » Thu Jun 24, 2010 12:20 am UTC

Tirian wrote:I found Metatron to be much easier than Ophanim. Here's the gist of my solution.

Spoiler:
Write a full adder, allowing the character after B to be G/Y to represent the carry flag.


That's the guts of my algorithm too.
ameretrifle wrote:Magic space feudalism is therefore a viable idea.

mike-l
Posts: 2758
Joined: Tue Sep 04, 2007 2:16 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby mike-l » Thu Jun 24, 2010 12:31 am UTC

Tirian wrote:I found Metatron to be much easier than Ophanim. Here's the gist of my solution.

Spoiler:
Write a full adder, allowing the character after B to be G/Y to represent the carry flag.


Huh. Now that I've written that, I wonder if Ophanim shouldn't be solvable with small and obvious tweaks to that machine.


Interesting. I'm not sure how you deal with some things, I'll have to look at some other solutions once I finally cram mine in.
Edit: I think I understand what you're saying now, definitely more efficient than mine. I think I'll still find a way to get mine going though.


Ophanim I found pretty easy
Spoiler:
I compared the start of the string bitwise, and once they disagreed I either added or didn't add a character to one of the strings, then compared length.


As for the Malevolence Engine, anyone know why it's telling me I cheated when I use Berengal's solution to Robo-Children?
addams wrote:This forum has some very well educated people typing away in loops with Sourmilk. He is a lucky Sourmilk.

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Thu Jun 24, 2010 1:03 am UTC

mike-l wrote:As for the Malevolence Engine, anyone know why it's telling me I cheated when I use Berengal's solution to Robo-Children?

That level in particular is prone to being solved by "cheating" and just using a long string of br readers. That isn't a general solution, though - it only works as long as the imbalance between blue and red never gets too great. I'll bet that the Malevolence Engine just checks to see if the solution uses a whole bunch of br readers and declares you a cheater automatically.

Berengal's solution isn't actually prone to this - I think it can correctly solve any arbitrary string. But the Malevolence Engine doesn't seem to be smart enough to figure that out.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

mike-l
Posts: 2758
Joined: Tue Sep 04, 2007 2:16 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby mike-l » Thu Jun 24, 2010 8:15 am UTC

Xanthir wrote:
mike-l wrote:As for the Malevolence Engine, anyone know why it's telling me I cheated when I use Berengal's solution to Robo-Children?

That level in particular is prone to being solved by "cheating" and just using a long string of br readers. That isn't a general solution, though - it only works as long as the imbalance between blue and red never gets too great. I'll bet that the Malevolence Engine just checks to see if the solution uses a whole bunch of br readers and declares you a cheater automatically.

Berengal's solution isn't actually prone to this - I think it can correctly solve any arbitrary string. But the Malevolence Engine doesn't seem to be smart enough to figure that out.


I agree it works on any string, though I've seen solutions that look 'like' his that don't, so I guess that makes sense. I tried it with reduction by 2s instead of 5s and it still called me a cheater :(

I also got a Metatron to pass the malevolence engine, even though it will fail on inputs where the 2nd number is sufficiently longer than the first
Spoiler:
?lvl=31&code=c6:6f2;c6:7f1;c6:8f1;c6:9f1;c6:10f1;c6:11f1;r7:4f2;c7:6f2;c7:9f2;b7:10f1;r7:11f0;q8:3f5;p8:4f1;c8:5f1;c8:6f1;b8:7f1;g8:8f1;i8:9f3;q8:10f4;g8:11f0;c9:3f2;b9:4f0;c9:5f3;i9:6f1;g9:7f3;r9:8f3;c9:9f3;p9:10f3;c9:11f0;c10:5f0;c10:6f0;b10:7f1;y10:8f1;i10:9f2;q10:10f6;c10:11f0;c11:3f2;b11:4f2;q11:5f1;b11:7f2;c11:9f0;r11:10f1;c12:4f3;p12:5f3;q12:6f6;p12:7f3;c13:3f0;r13:4f0;q13:5f5;r13:7f0;c13:9f2;r13:10f1;c14:5f2;c14:6f2;r14:7f1;y14:8f1;i14:9f3;q14:10f0;c14:11f2;b15:4f2;c15:5f3;i15:6f5;g15:7f3;r15:8f3;c15:9f3;p15:10f7;c15:11f2;q16:3f1;p16:4f5;c16:5f1;c16:6f1;r16:7f1;g16:8f1;i16:9f2;q16:10f2;y16:11f2;r17:4f0;c17:6f0;c17:9f0;b17:10f1;b17:11f2;c18:6f0;c18:7f1;c18:8f1;c18:9f1;c18:10f1;c18:11f1;c12:8f3;c12:9f3;c12:10f3;q12:11f7;b11:11f3;r13:11f3;q12:12f0;p11:12f6;r11:13f1;b13:13f1;p13:12f4;y12:2f2;g10:3f2;g15:3f0;c12:3f3;c14:3f0;g13:2f1;r13:1f2;r14:1f2;r15:1f2;r16:1f2;r17:1f2;r18:1f3;r18:2f0;r17:2f0;r16:2f0;r15:2f0;r14:2f3;


It can be corrected by changing the end where the carry is changed to a 1/0 to actually adding it, but I had space problems yet again, so I just guaranteed that for inputs of size <13 that everything in front of the last carry was 0.
addams wrote:This forum has some very well educated people typing away in loops with Sourmilk. He is a lucky Sourmilk.

PleasingFungus
Posts: 10
Joined: Mon Oct 19, 2009 5:28 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby PleasingFungus » Fri Jun 25, 2010 8:46 am UTC

Xanthir wrote:Hahaha, the kongregate version (and presumably the pleasingfungus version) now contains a "malevolence engine" that "sees all weakness". Looks like it does total-coverage checking up to length 12, and then immediately shows you a failing example if it found one.

Only covers up to 12 for the faster-running levels, actually; goes down to a mere 6 for the slowest ones. I'm still twerking it.

(Thus mike-l's success with Metatron - testing for longer strings takes inordinately long. Exponential growth, etc... (3^n, in this case.))

Xanthir wrote:
mike-l wrote:As for the Malevolence Engine, anyone know why it's telling me I cheated when I use Berengal's solution to Robo-Children?

That level in particular is prone to being solved by "cheating" and just using a long string of br readers. That isn't a general solution, though - it only works as long as the imbalance between blue and red never gets too great. I'll bet that the Malevolence Engine just checks to see if the solution uses a whole bunch of br readers and declares you a cheater automatically.

Berengal's solution isn't actually prone to this - I think it can correctly solve any arbitrary string. But the Malevolence Engine doesn't seem to be smart enough to figure that out.

People keep guessing that! ("..the Malevolence Engine just checks to see if the solution uses a whole bunch of br readers...") No, what it's actually doing is running a 120-length string through, after the rest of the testing is completed, and checking to see if that works. If it doesn't, it figures you're using the daisy-chained-br-reader solution!

It's been a bit overaggressive, though. The problem you mentioned was a very stupid bug that meant that strings greater than length 50 didn't actually work. Not sure how I let that one slipped through. It's fixed now, but...

...I've just spent the last twenty minutes or so looking at Nabb's solution to the level. It's very interesting, but as far as I can tell, the center mechanism is equivalent to 'If there were more than 14 in a row of a color, reject'. Which... doesn't even make sense with the fixed tape length. (Maximum length is 50.)

If so, the Malevolence Engine is entirely right! (Though, arguably, perhaps somewhat overaggressive in calling him a 'cheater'.)

(If I'm wrong, please tell me. I don't like leaving bugs like this lying around.)

User avatar
phlip
Restorer of Worlds
Posts: 7543
Joined: Sat Sep 23, 2006 3:56 am UTC
Location: Australia
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby phlip » Fri Jun 25, 2010 9:14 am UTC

Yeah, I don't think Nabb's solution works... for one, I think it'll accept B27... it'll read the 27 blues and end up back at the top of the loop, at which point the tape will read GR, and then it'll go into the middle, read the G, read the R, write R and go out the exit.

What the bit in the middle seems to do is, effectively:

Code: Select all

take a string that's G followed by a string of R and B; remove the G
if string contains a red, or is empty:
   accept
else:
   infinite loop
Whereas I think it should be doing:

Code: Select all

take a string that's G followed by a string of R and B; remove the G
if the string is empty:
   accept
else:
   go back to the very start of the level do it again, or maybe pack in a more compact robo-children solution in the middle there, or something
since when it gets into the middle, it should accept iff the string has an equal number of reds and blues... (and the length of the string is strictly less than the length of the original string, by at least 26, so this process must end eventually).

[edit]
Wait, no, disregard all that.

Xanthir: I'd like to make a bug report: directly below the br switch in the dead centre of the grid is an East-over-South Bridge... your JS viewer thing is showing that as a simple South Conveyor. Also, Firefox doesn't show any of the SVGs and I always forget I have to load up Chrome to view it, though I guess that's more a bug report for my memory.

Then yeah, I think it's not working in a different way - if it gets into the middle of the grid with an empty string it'll go through, but if it has any reds or blues (ie if it made it past the bottom of the big ring when it was doing the first stage) then it'll fail.

An example of a string it rejects when it should accept is B14R14 - it goes into the middle with GRB. Reads the G, then reads and writes the R, moving that to the end (so it's now BR). Then it writes Y, and moves all the R/B to the end (YBR). Then it writes a G, reads the Y, tries to read the G and fails.

[edit again]
Here's a change to Nabb's solution that should work:

Code: Select all

?lvl=18&code=g12:3f3;p12:4f7;i12:11f1;p9:4f7;p8:4f0;p8:5f0;p8:6f0;p8:7f0;p8:8f0;c8:3f2;c9:3f3;p8:10f3;p9:10f3;c7:10f1;p8:9f6;c7:9f2;i12:10f5;p11:4f1;p10:4f1;p16:6f2;p16:7f2;p16:8f2;p16:9f2;p16:10f4;p16:11f3;c17:10f0;c17:11f1;p15:11f3;b13:10f3;p13:11f3;p14:11f3;c12:9f3;p11:10f5;r11:11f1;p10:10f3;p13:4f1;c15:4f3;p15:5f7;c16:4f0;p16:5f2;c13:5f1;i14:4f4;i14:5f0;c14:3f0;i13:3f0;b11:6f3;c11:7f2;q12:5f0;p12:6f3;i12:7f7;r13:6f2;c13:7f2;c14:6f1;c14:7f1;c12:8f3;


[edit yet again]
PleasingFungus: it looks like http://www.pleasingfungus.com/ is still using a pre-Malevolence version of the game... did you miss it while updating?

Code: Select all

enum ಠ_ಠ {°□°╰=1, °Д°╰, ಠ益ಠ╰};
void ┻━┻︵​╰(ಠ_ಠ ⚠) {exit((int)⚠);}
[he/him/his]

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Fri Jun 25, 2010 6:13 pm UTC

phlip wrote:Xanthir: I'd like to make a bug report: directly below the br switch in the dead centre of the grid is an East-over-South Bridge... your JS viewer thing is showing that as a simple South Conveyor.

Fixed - I was doing a bare "if(this.bottomdir){}" check, meaning for it to fail when bottomdir was undefined, but forgot that it'd fail when bottomdir was 0 too.

Also, Firefox doesn't show any of the SVGs and I always forget I have to load up Chrome to view it, though I guess that's more a bug report for my memory.

Yeah, Firefox doesn't support SVG in <img>, only in <object> and <iframe>. Neither of those allow scaling like I need (I produced all the images as 15px square, and then just scale them up for display).

Edit: Haha, IE9 preview 3 *almost* works - it handles the javascript correctly, and most of the SVG, but the conveyor belts are all screwed up.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

PleasingFungus
Posts: 10
Joined: Mon Oct 19, 2009 5:28 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby PleasingFungus » Fri Jun 25, 2010 7:15 pm UTC

phlip wrote:-snip-

Then yeah, I think it's not working in a different way - if it gets into the middle of the grid with an empty string it'll go through, but if it has any reds or blues (ie if it made it past the bottom of the big ring when it was doing the first stage) then it'll fail.

Yeah, this is exactly what I was saying. We have reached consensus.

phlip wrote:Here's a change to Nabb's solution that should work:

Code: Select all

?lvl=18&code=g12:3f3;p12:4f7;i12:11f1;p9:4f7;p8:4f0;p8:5f0;p8:6f0;p8:7f0;p8:8f0;c8:3f2;c9:3f3;p8:10f3;p9:10f3;c7:10f1;p8:9f6;c7:9f2;i12:10f5;p11:4f1;p10:4f1;p16:6f2;p16:7f2;p16:8f2;p16:9f2;p16:10f4;p16:11f3;c17:10f0;c17:11f1;p15:11f3;b13:10f3;p13:11f3;p14:11f3;c12:9f3;p11:10f5;r11:11f1;p10:10f3;p13:4f1;c15:4f3;p15:5f7;c16:4f0;p16:5f2;c13:5f1;i14:4f4;i14:5f0;c14:3f0;i13:3f0;b11:6f3;c11:7f2;q12:5f0;p12:6f3;i12:7f7;r13:6f2;c13:7f2;c14:6f1;c14:7f1;c12:8f3;

Nice! It works both on the old and current (in-development) version, with zero accusations of cheating. Pity it went off the handle on Nabb's, but now we have a Working Solution, and really, what could be more important?

phlip wrote:PleasingFungus: it looks like http://www.pleasingfungus.com/ is still using a pre-Malevolence version of the game... did you miss it while updating?

Pretty sure it's not! It was showing up as an older version for me too just now, which was worrying - I thought it might be a problem with the FTP client I was using? - but a force-refresh cured the problem nicely.

User avatar
phlip
Restorer of Worlds
Posts: 7543
Joined: Sat Sep 23, 2006 3:56 am UTC
Location: Australia
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby phlip » Sat Jun 26, 2010 2:25 am UTC

PleasingFungus wrote:but a force-refresh cured the problem nicely.

Blarg, sometimes I forget how overactive Flash's cache is...

Code: Select all

enum ಠ_ಠ {°□°╰=1, °Д°╰, ಠ益ಠ╰};
void ┻━┻︵​╰(ಠ_ಠ ⚠) {exit((int)⚠);}
[he/him/his]

turingnow
Posts: 4
Joined: Sat Jun 26, 2010 11:18 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby turingnow » Sat Jun 26, 2010 11:33 am UTC

phlip wrote:Here's a change to Nabb's solution that should work:

Code: Select all

?lvl=18&code=g12:3f3;p12:4f7;i12:11f1;p9:4f7;p8:4f0;p8:5f0;p8:6f0;p8:7f0;p8:8f0;c8:3f2;c9:3f3;p8:10f3;p9:10f3;c7:10f1;p8:9f6;c7:9f2;i12:10f5;p11:4f1;p10:4f1;p16:6f2;p16:7f2;p16:8f2;p16:9f2;p16:10f4;p16:11f3;c17:10f0;c17:11f1;p15:11f3;b13:10f3;p13:11f3;p14:11f3;c12:9f3;p11:10f5;r11:11f1;p10:10f3;p13:4f1;c15:4f3;p15:5f7;c16:4f0;p16:5f2;c13:5f1;i14:4f4;i14:5f0;c14:3f0;i13:3f0;b11:6f3;c11:7f2;q12:5f0;p12:6f3;i12:7f7;r13:6f2;c13:7f2;c14:6f1;c14:7f1;c12:8f3;



Thanks Nabb and philip. That's a beautiful solution for my favorite level. I made it even faster.
Spoiler:
Image

Code: Select all

?lvl=18&code=p7:8f0;p7:9f0;p17:8f2;p17:9f2;p17:10f2;i12:10f5;i12:11f1;p17:7f2;p7:7f0;p17:6f2;p7:6f0;p7:3f0;p7:4f0;p8:3f7;p9:3f1;p10:3f1;p11:3f1;p12:3f7;p13:3f1;p14:3f1;p15:3f1;p16:3f7;p17:3f2;p17:4f2;p7:5f0;p17:5f2;p7:10f0;p8:10f5;y9:10f2;g17:11f0;c7:11f2;c10:10f2;c11:10f2;c13:10f2;c14:10f2;c15:10f2;c16:10f2;c16:11f0;c15:11f0;c14:11f0;c13:11f0;c11:11f0;c10:11f0;c9:11f0;c8:11f1;c8:2f3;c16:2f3;c17:2f0;c7:2f2;c12:7f3;c12:9f3;c12:8f3;c10:4f1;c10:5f1;r11:4f2;p11:5f7;q12:4f3;p12:5f7;b13:4f0;p13:5f7;c14:4f1;c14:5f1;c12:6f3;


Thanks Pleasingfungus. I haven't spent so much time on a game since Ocarina of Time and Civilization 1 before that.

Nabb
Posts: 10
Joined: Fri Apr 24, 2009 3:12 pm UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Nabb » Sat Jun 26, 2010 12:24 pm UTC

Sorry for posting an incorrect solution earlier. The G/Y branch was meant to be a square higher (directly below the R/B), so that after going through the middle section the yellow would put it back into the loop.

An updated solution that should hopefully be correct this time. B/Rs are more numerous now. No green is used at the start so we can terminate faster.
Spoiler:
Image

Code: Select all

?lvl=18&code=c7:2f2;p7:3f0;p7:4f0;p7:5f0;p7:6f0;p7:7f0;p7:8f0;c8:2f3;p8:3f7;p9:3f1;p10:3f1;p11:3f1;p12:3f7;p13:3f1;p14:3f1;p15:3f1;c16:2f3;p16:3f7;c17:2f0;p17:3f2;p17:4f2;p17:5f2;p17:6f2;p17:7f2;p17:8f2;c12:8f3;p7:10f0;c7:11f2;p8:10f5;c8:11f1;p9:10f3;p10:10f5;p11:10f5;g11:11f1;i12:10f7;i12:11f1;c13:10f2;c13:11f0;y14:10f3;p14:11f3;p15:11f5;p16:11f5;c16:12f1;p17:10f2;p17:11f2;c17:12f0;p7:9f0;p17:9f2;c12:9f3;c12:7f3;b12:4f3;p12:5f4;c12:6f3;r9:5f2;q10:5f1;b11:5f0;c10:4f1;


Edit) Aww, someone posted a very similar solution while I wasn't looking :(

User avatar
Patashu
Answerful Bignitude
Posts: 377
Joined: Mon Mar 12, 2007 8:54 am UTC
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Patashu » Sat Jun 26, 2010 1:12 pm UTC

You guys might be interested in tasvideo's work/discussion on the game here: http://tasvideos.org/forum/viewtopic.ph ... sc&start=0

nekizalb
Posts: 1
Joined: Sun Jun 27, 2010 1:33 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby nekizalb » Sun Jun 27, 2010 1:46 am UTC

@Xanthir - Your javascript emulator is pretty nice. I had issues compiling Nix's C++ program (and I absolutly hate c++, so I wasn't very motivated to troubleshoot) and yours works just as well. I did notice a bug though.

Code: Select all

?lvl=1&code=c12:8f3;c12:6f3;c12:7f3;

produces
..s..
..v..
..v..
..v..
..e..

Code: Select all

?lvl=1&code=c12:6f2;c13:6f3;c13:7f3;c13:8f0;c12:8f3;

produces
..s..
..>v.
...v.
..v<.
..e..

If you load the first code into your emulator, and then the second one, without reloading the page, you get

..s..
..>v.
..vv.
..v<.
..e..

The emulator retains parts from the first design where there are blank spaces in the second design. It doesn't affect this particular case, but I've had a couple problems testing other designs because of this retention. Seems like the board just needs to be cleared before loading new designs *shrug*

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Sun Jun 27, 2010 8:19 am UTC

Ah, yes, thanks. I usually don't load more than one board before refreshing to grab new code, so I didn't notice that I was neglecting to clear the board. Thanks!
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

User avatar
phlip
Restorer of Worlds
Posts: 7543
Joined: Sat Sep 23, 2006 3:56 am UTC
Location: Australia
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby phlip » Sun Jun 27, 2010 11:28 am UTC

Hey, Xanthir, in case you didn't see it in amongst the huge wall of text I posted:
phlip wrote:Xanthir: I'd like to make a bug report: [In this machine] directly below the br switch in the dead centre of the grid is an East-over-South Bridge... your JS viewer thing is showing that as a simple South Conveyor. Also, Firefox doesn't show any of the SVGs and I always forget I have to load up Chrome to view it, though I guess that's more a bug report for my memory.

Code: Select all

enum ಠ_ಠ {°□°╰=1, °Д°╰, ಠ益ಠ╰};
void ┻━┻︵​╰(ಠ_ಠ ⚠) {exit((int)⚠);}
[he/him/his]

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Sun Jun 27, 2010 8:09 pm UTC

phlip wrote:Hey, Xanthir, in case you didn't see it in amongst the huge wall of text I posted:
phlip wrote:Xanthir: I'd like to make a bug report: [In this machine] directly below the br switch in the dead centre of the grid is an East-over-South Bridge... your JS viewer thing is showing that as a simple South Conveyor. Also, Firefox doesn't show any of the SVGs and I always forget I have to load up Chrome to view it, though I guess that's more a bug report for my memory.
Xanthir wrote:
phlip wrote:Xanthir: I'd like to make a bug report: directly below the br switch in the dead centre of the grid is an East-over-South Bridge... your JS viewer thing is showing that as a simple South Conveyor.

Fixed - I was doing a bare "if(this.bottomdir){}" check, meaning for it to fail when bottomdir was undefined, but forgot that it'd fail when bottomdir was 0 too.

Also, Firefox doesn't show any of the SVGs and I always forget I have to load up Chrome to view it, though I guess that's more a bug report for my memory.

Yeah, Firefox doesn't support SVG in <img>, only in <object> and <iframe>. Neither of those allow scaling like I need (I produced all the images as 15px square, and then just scale them up for display).

Edit: Haha, IE9 preview 3 *almost* works - it handles the javascript correctly, and most of the SVG, but the conveyor belts are all screwed up.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

User avatar
phlip
Restorer of Worlds
Posts: 7543
Joined: Sat Sep 23, 2006 3:56 am UTC
Location: Australia
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby phlip » Sun Jun 27, 2010 11:03 pm UTC

Bah, I somehow missed that post entirely. Sorry.

Code: Select all

enum ಠ_ಠ {°□°╰=1, °Д°╰, ಠ益ಠ╰};
void ┻━┻︵​╰(ಠ_ಠ ⚠) {exit((int)⚠);}
[he/him/his]

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Sun Jun 27, 2010 11:19 pm UTC

No problem; I enjoyed the opportunity to respond like an asshole. ^_^
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

User avatar
kriel
Posts: 922
Joined: Thu Feb 07, 2008 2:58 pm UTC
Location: Somewhere I'm not.
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby kriel » Mon Jun 28, 2010 1:32 pm UTC

Posting so I get reply notifications. I have nothing worthwhile to contribute other than bitching about how maddening this game is. =D

Axidos
Posts: 167
Joined: Tue Jan 20, 2009 12:02 pm UTC
Location: trapped in a profile factory please send help

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Axidos » Mon Jun 28, 2010 7:18 pm UTC

kriel wrote:Posting so I get reply notifications. I have nothing worthwhile to contribute other than bitching about how maddening this game is. =D

You could also use Subscribe Topic, which sits in the left side of the bar at the very bottom of a topic page.

User avatar
levicc00123
Posts: 165
Joined: Thu Jan 03, 2008 5:33 pm UTC
Location: Sterling, CO
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby levicc00123 » Mon Jun 28, 2010 10:04 pm UTC

I'm trying to solve robomecha and it's kicking my rear-end, could I get a hint to help solve it and similar problems?
Image

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Mon Jun 28, 2010 10:13 pm UTC

levicc00123 wrote:I'm trying to solve robomecha and it's kicking my rear-end, could I get a hint to help solve it and similar problems?

The basic lesson robomecha is trying to teach you is how to read the last character of a string, as this is used in most of the later levels.

First spoiler:
Spoiler:
Obviously, you'll be using a green or yellow dot to mark the end of the string. Now, every time you read a red or blue dot, the *next* character is either a r/b (more tape) or a g/y (end of tape). You don't want to accidentally read an extra r/b, but luckily trying to read a g/y won't affect anything if the next color is actually an r/b.


Second spoiler:
Spoiler:
So read your initial r/b, then check for g/y. If you see one, then you know that the r/b you just read was the last thing on the tape, and you can act accordingly. If you don't, then you know the next thing on the tape is another r/b, so you can safely cycle the r/b you just read back onto the tape and do it again.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

User avatar
kriel
Posts: 922
Joined: Thu Feb 07, 2008 2:58 pm UTC
Location: Somewhere I'm not.
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby kriel » Tue Jun 29, 2010 1:16 am UTC

Axidos wrote:
kriel wrote:Posting so I get reply notifications. I have nothing worthwhile to contribute other than bitching about how maddening this game is. =D
You could also use Subscribe Topic, which sits in the left side of the bar at the very bottom of a topic page.
I don't want to get an email, I want to have it show up in my egosearch.

EDIT: To make this ontopic, I can't figure out how to figure out what the LAST bit is using only R/B switches.

User avatar
Patashu
Answerful Bignitude
Posts: 377
Joined: Mon Mar 12, 2007 8:54 am UTC
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Patashu » Tue Jun 29, 2010 3:12 am UTC

kriel wrote:
Axidos wrote:
kriel wrote:Posting so I get reply notifications. I have nothing worthwhile to contribute other than bitching about how maddening this game is. =D
You could also use Subscribe Topic, which sits in the left side of the bar at the very bottom of a topic page.
I don't want to get an email, I want to have it show up in my egosearch.

EDIT: To make this ontopic, I can't figure out how to figure out what the LAST bit is using only R/B switches.

You can't do it with only R/B switches - you need to use green as well.

User avatar
kriel
Posts: 922
Joined: Thu Feb 07, 2008 2:58 pm UTC
Location: Somewhere I'm not.
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby kriel » Tue Jun 29, 2010 3:50 am UTC

Patashu wrote:
kriel wrote: I can't figure out how to figure out what the LAST bit is using only R/B switches.
You can't do it with only R/B switches - you need to use green as well.
See: Robobears, Milidogs. Both of which (I think) require finding the last bit, and both of which only give you R/B switches and conveyors.

User avatar
phlip
Restorer of Worlds
Posts: 7543
Joined: Sat Sep 23, 2006 3:56 am UTC
Location: Australia
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby phlip » Tue Jun 29, 2010 5:05 am UTC

You can destructively read through the entire string and figure out whether the last one is red or blue without g/y, and ending up with an empty tape... Robobears and Millidogs require that. But to nondestructively read the last symbol off the tape, and leave all the others intact requires g/y.

Code: Select all

enum ಠ_ಠ {°□°╰=1, °Д°╰, ಠ益ಠ╰};
void ┻━┻︵​╰(ಠ_ಠ ⚠) {exit((int)⚠);}
[he/him/his]

User avatar
kriel
Posts: 922
Joined: Thu Feb 07, 2008 2:58 pm UTC
Location: Somewhere I'm not.
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby kriel » Tue Jun 29, 2010 1:50 pm UTC

Yay, least efficient politicians ever! (out of patience, btw)
Spoiler:

Code: Select all

?lvl=22&code=y12:2f3;p12:3f3;r13:3f0;p11:3f4;r11:2f3;q10:3f4;b11:4f1;c10:4f3;q8:6f4;c8:7f3;r9:5f3;p9:6f4;b9:7f1;y10:5f3;p10:6f3;r11:6f0;q6:9f4;c6:10f3;r7:8f3;p7:9f4;b7:10f1;y8:8f3;p8:9f7;b9:9f0;c14:4f1;c14:3f1;c13:2f0;c14:2f0;c12:6f3;c14:5f1;c12:12f3;c6:11f2;c7:11f2;c8:11f2;c9:11f2;c10:11f2;c11:11f2;c12:9f3;c12:8f3;q12:4f2;p12:5f3;c12:7f3;c12:10f3;i12:11f5;c13:11f2;c14:11f1;c14:10f1;c14:9f1;c14:8f1;c14:7f1;c14:6f1;

Spoiler:
Find a Blue anywhere in the string, then a red anywhere in the string, then a blue anywhere in the string. It times out because it has to cycle the entire string for each test.


Also, figured out how to do the destructive tape read. I'm not quite sure how you helped, phlip, but I feel like I owe you a thanks.

User avatar
Xanthir
My HERO!!!
Posts: 5215
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Tue Jun 29, 2010 2:27 pm UTC

@kriel:
Spoiler:
Hah, wow, that is fairly innefficient. Now step it up a notch. Have the first thing read a red *or* a blue, and then make two separate tracks, one for finding two blues in the rest of the string, and one for finding a red and blue in the rest of the string. That way you can pull off a full set of three with every pass.

There are even cleverer solutions, but they can wait until you've advanced your knowledge further.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 6 guests