Manufactoria - Make Turing Machines with Conveyor Belts

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

Moderators: phlip, Prelates, Moderators General

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Nabb » Tue Jun 29, 2010 3:50 pm UTC

Code: Select all
http://pleasingfungus.com/?ctm=RLE;Do_RLE._G-0,_Y-1._Remove_first_1.;bbbbrrbbbrrrrr:bggrgbyrgy|bbbbbbbbbrb:bggyrb|:|b:b;13;3;0;

Here's my level: Run-length encoding on a string of B's and R's.
Sample: BBBBBRR -> B5R2 -> B101R10 -> (1 is redundant) B01R0 -> BGYRY

My solution is 100 parts (46 conveyors+bridges).
Nabb
 
Posts: 10
Joined: Fri Apr 24, 2009 3:12 pm UTC

Re: Manufactoria / record solutions

Postby Nix » Tue Jun 29, 2010 6:48 pm UTC

Here are the smallest and fastest known solutions for each level. Their correctness has been verified (up to a limit) and speed (in total execution steps to process a constant test set of inputs) measured with my checker and score keeper program (newest version) as introduced earlier in this thread.

I'm keeping the list up to date, adding anything posted in this thread or PM'd to me.

Code: Select all
1 Robotoast!        3 parts       8188 steps (  32764 in game) by Nix
2 Robocoffee!       3 parts       6140 steps (  24572 in game) by Nix
3 Robolamp!         8 parts      27426 steps ( 112750 in game) by JavaBean
                   24 parts      25085 steps ( 104036 in game) by Jani
4 Robofish!         4 parts       8188 steps (  32764 in game) by Steve496
                   12 parts       6143 steps (  24574 in game) by Nix
5 Robobugs!        11 parts       8302 steps (  32900 in game) by Steve496
6 Robocats!        11 parts      34312 steps ( 161802 in game) by Jani
                   59 parts      29480 steps ( 137234 in game) by Nix
7 Robobears!       15 parts      37896 steps ( 176136 in game) by JavaBean
                   24 parts      31860 steps ( 145444 in game) by Nix
8 RC Cars!          7 parts      12280 steps (  49144 in game) by Nix
9 Robocars!         7 parts      49150 steps ( 229374 in game) by Nix
                   15 parts      41226 steps ( 196974 in game) by Nix
10 Robostilts!      9 parts      53244 steps (  53244 in game) by Nix
                   17 parts      45320 steps (  45320 in game) by Nix
11 Milidogs!        8 parts      35838 steps ( 167931 in game) by Steve496
                   33 parts      30102 steps ( 139102 in game) by Nix
12 Soldiers!        7 parts      16376 steps (  65520 in game) by Nix
13 Officers!       18 parts     138690 steps (  65030 in game) by jareds
                  103 parts      80606 steps (  37098 in game) by Nix
14 Generals!       17 parts     132176 steps (  29804 in game) by jareds
                   67 parts      72322 steps (  15754 in game) by Nix
15 Robotanks!      25 parts      40381 steps (  19958 in game) by Jani
                   44 parts      34949 steps (  17130 in game) by Nix
16 Robospies!       8 parts      14350 steps (  57372 in game) by Nix
                   25 parts      10382 steps (  41157 in game) by Nix
17 Androids!       12 parts      16098 steps (  63041 in game) by Nix
                   42 parts       9051 steps (  36204 in game) by Nix
18 Robo-children!  16 parts     245586 steps (1254994 in game) by Nix
                   53 parts      25800 steps ( 119748 in game) by Nabb
19 Police!         29 parts     633228 steps ( 633228 in game) by yaichi@Kongregate
                   65 parts     212860 steps ( 212860 in game) by jareds
20 Judiciary!      39 parts     565756 steps ( 444548 in game) by J.P.
                   85 parts     328412 steps ( 234718 in game) by jareds
21 Teachers!       19 parts      20495 steps (  80997 in game) by jareds
                   70 parts       8872 steps (  35855 in game) by Nix
22 Politicians!    20 parts     189862 steps ( 944974 in game) by Nix
                   66 parts      45629 steps ( 216944 in game) by Nix
23 Academics!      25 parts     544768 steps ( 227328 in game) by Nix
                   77 parts     285592 steps ( 125848 in game) by jareds
24 Engineers!      20 parts     227790 steps (  99598 in game) by Nix
                   77 parts      66344 steps (  30376 in game) by Nix
25 Roborockets!     7 parts      49150 steps ( 229374 in game) by Nix
                   11 parts      45098 steps ( 213042 in game) by Jani
26 Roboplanes!      7 parts      49150 steps (  22526 in game) by Nix
                   14 parts      37346 steps (  17198 in game) by Nix
27 Rocket planes!  14 parts     323580 steps ( 137212 in game) by Nix
                   50 parts      72362 steps (  31268 in game) by Nix
28 Robomecha!      19 parts     126982 steps ( 606214 in game) by Nix
                   49 parts      71126 steps ( 331614 in game) by Nix
29 Seraphim        19 parts    1174068 steps ( 414668 in game) by tehtmi
                   61 parts     354930 steps ( 117445 in game) by jareds
30 Ophanim         40 parts    3816680 steps (  46232 in game) by J.P.
                  101 parts     770522 steps (  10501 in game) by turingnow
31 Metatron        46 parts 2826308144 steps ( 278198 in game) (over limits) by J.P.
                   63 parts    5666326 steps (  69078 in game) by Nix
                  127 parts    1934688 steps (  31726 in game) by jestingrabbit


The in-game step counts are based on Manufactoria v1.30h. If a new version gives mismatching results in some level, let me know. (The next version should at least change Generals.) If the in-game steps go over 1M, the game will tell you that the malevolence engine ran out of patience, and you'll have no way to get the actual number from the game. I'm listing the theoretical result anyway.

If you get a better in-game step count than the record here, it still may not be better with my own input set which is the actual metric. This is especially true in the levels where the in-game step counts are significantly smaller than the regular counts. I may later consider adding a new category for fastest in-game results, and also for solutions that can't handle input classes that the game doesn't use because of slight ambiguities, i.e. empty (part-)strings in binary levels and Seraphim, and odd-length inputs in Judiciary.

"Over limits" means that the solution in question requires a longer tape than the 50 used by the game and/or more steps per input than the 100k normally allowed by my checker, even with the regular inputs that are up to 11 long. The solutions should still work for any input, but tests with longer inputs have most likely been skipped as impractical as they don't affect the step counts anyway. I consider these solutions inefficient enough that I'm always also listing the best solution among those that work within the limits.

The data to generate this list, including the save codes for the solutions, is attached as a separate program readable file you can download. I keep it updated too. If you have a modified scores.txt, you can just stick the contents of the new one in the end and the program will gracefully merge, giving preference to earlier occurrences in the file.

I was originally listing the fastest solution for every size, but decided to focus on just either size or speed, no compromises. Still of course listing the fastest solution among the smallest and vice versa. The intermediate records are included in the attached file. You can also still send me intermediate solutions, and I'll add them, just not on the list above.


Edit history continues from here.


2010-07-01

Jestingrabbit improved his speed record for Metatron, losing 45k steps from 2M, adding four parts.


2010-07-03

Metatron got well under 2M steps when jestingrabbit updated his solution again, losing 89k steps.

I improved my Ophanim speed record from 903k to 815k with some rearranging and finally duplicating large parts, moving from 60 to 115 parts.

Updated scores.txt with the latest solutions. J.P.'s over limits Metatron is still missing because the current program version doesn't handle such well.


2010-07-05

Added the step counts as calculated by the game itself as an informational extra column in the listing. I will later change my own input length limit to match the game's in the levels where the game uses longer inputs than my program. I doubt anyone protests?


2010-07-22

(not in scores.txt) Added turingnow's fast Ophanim from the thread, improving from my 815k to 771k with 101 parts.
Attachments
manufactoria-scores.txt.gz
score table in program readable form and including save codes, gzipped for your pleasure
(17.04 KiB) Downloaded 160 times
Last edited by Nix on Thu Jul 22, 2010 9:01 pm UTC, edited 5 times in total.
Nix
 
Posts: 93
Joined: Mon Mar 09, 2009 8:14 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Tue Jun 29, 2010 10:54 pm UTC

phlip wrote:If we're sharing new levels, here's one that I was kinda surprised wasn't in the real set: Roboparrots!

That's the nicest new level I've seen yet. And I've found a very elegant 31-piece solution:

Code: Select all
http://pleasingfungus.com/?lvl=36&code=c12:9f3;c12:10f3;c12:11f3;c12:12f3;b9:4f3;p9:5f6;r9:6f1;c10:4f2;q10:5f4;y10:6f0;c11:4f2;r11:5f2;q11:6f5;r11:7f2;g12:4f3;c12:5f3;p12:6f7;p12:7f7;q12:8f0;c13:4f0;b13:5f0;q13:6f1;b13:7f0;c14:4f0;q14:5f2;y14:6f2;r15:4f3;p15:5f4;b15:6f1;y12:2f3;y12:3f3;&ctm=Roboparrots!;OUTPUT:_the_input,_repeated_twice!;b:bb|brbb:brbbbrbb|:|rrb:rrbrrb|bbrbrr:bbrbrrbbrbrr;13;3;0;

It even looks like a parrot, flying from entrance to exit! :)

And here's how it works:
Spoiler:
1. Start with string followed by yellow, yellow, and green.
2. Get last symbol before yellow.
3. Write yellow and symbol.
4. Loop until next yellow
5. Write yellow and symbol.
6. At green, break and rewrite green.
7. When yellow after green, rewrite string, skipping yellows, and end at green.

Also, this particular design allows making more copies simply by lengthening the yellow "tail". :)
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby kriel » Wed Jun 30, 2010 1:31 am UTC

You ever had one of those coding moments where it just kind of flowed from your hands... and then you looked at what you just wrote and go "... wtf... how does this work? ... i don't care, it gives the right answer."

Yeah. Police just did that to me. (Put a yellow in the middle of an even-length string)

(edit: I looked through it again, and it makes a little more sense, and i de-obfuscated it abit, saving parts in the meantime.)
Code: Select all
?lvl=19&code=g12:2f3;y12:3f3;p12:4f3;b11:4f2;r13:4f0;y12:5f3;c10:6f2;c11:6f2;c12:6f2;c10:7f3;y10:8f0;c10:9f1;b11:7f0;p11:8f0;r11:9f0;q12:8f4;b13:7f2;c13:8f0;r13:9f2;p14:7f3;q14:8f3;r15:7f0;g15:8f0;b15:9f0;b11:11f2;p12:11f3;r13:11f0;c13:6f2;c14:6f3;y12:10f3;c12:9f3;q12:12f6;p14:9f1;y7:6f2;q7:7f6;p7:8f0;q7:9f2;y7:10f2;b8:6f2;b8:7f3;c8:8f0;r8:9f1;r8:10f2;c9:6f2;c9:7f1;i9:8f2;c9:9f1;c9:10f1;


edit2: ... wtf is judiciary asking for/about? O.o "Accept: (even length) strings that repeat midway through" ... isn't that the same as roboparrot?
User avatar
kriel
 
Posts: 922
Joined: Thu Feb 07, 2008 2:58 pm UTC
Location: Somewhere I'm not.

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby phlip » Wed Jun 30, 2010 2:02 am UTC

kriel wrote:edit2: ... wtf is judiciary asking for/about? O.o "Accept: (even length) strings that repeat midway through" ... isn't that the same as roboparrot?

No... Roboparrots is generating strings that repeat halfway through, Judiciary is checking for them.
While no one overhear you quickly tell me not cow cow.
but how about watch phone?
User avatar
phlip
Restorer of Worlds
 
Posts: 7086
Joined: Sat Sep 23, 2006 3:56 am UTC
Location: Australia

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby kriel » Wed Jun 30, 2010 2:25 am UTC

And the "wtf did I just write... whatever, it works" continues on to judiciary, stealing 98% of my police code.
Code: Select all
?lvl=20&code=b10:1f3;g12:2f0;y11:2f0;p10:2f0;y9:2f0;r10:3f1;y6:4f2;q6:5f6;p6:6f0;q6:7f2;y6:8f2;b7:4f2;b7:5f3;c7:6f0;r7:7f1;r7:8f2;c8:4f2;c8:5f1;i8:6f2;c8:7f1;c8:8f1;c9:4f2;c9:5f3;y9:6f0;c9:7f1;c10:4f2;b10:5f0;p10:6f0;r10:7f0;c11:4f2;q11:6f4;c12:4f2;b12:5f2;c12:6f0;r12:7f2;c13:4f3;p13:5f3;q13:6f3;p13:7f1;r14:5f0;g14:6f0;b14:7f0;c8:2f3;c8:3f3;b10:10f3;p10:11f0;r10:12f1;p11:11f7;b12:10f3;p12:11f6;r12:12f1;q13:11f3;c14:9f0;g14:10f1;p14:11f6;q9:11f7;p8:11f4;g8:10f1;c8:9f2;b13:8f3;p13:9f0;r13:10f1;b9:8f3;p9:9f6;r9:10f1;q10:9f7;q12:9f3;y11:9f3;c11:7f3;c11:8f3;c11:10f3;q11:12f0;q11:13f7;
User avatar
kriel
 
Posts: 922
Joined: Thu Feb 07, 2008 2:58 pm UTC
Location: Somewhere I'm not.

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Wed Jun 30, 2010 4:00 am UTC

Xanthir, another bug report:

Using both Firefox 3.6.2 beta I think and Chrome 5.0.375.86 beta on Linux, the following Engineers solution fails frequently, even on the empty string!

Code: Select all
?lvl=24&code=y12:2f3;c12:6f3;c12:7f3;c12:8f3;c12:9f3;c12:10f3;c12:11f3;q12:12f4;b11:3f2;q11:4f5;c12:3f3;p12:4f3;r13:3f0;q13:4f1;p10:4f0;c9:4f1;c9:3f2;c10:3f1;c10:2f2;c11:2f2;p14:4f2;c15:4f1;c15:3f0;c14:3f1;c14:2f0;c13:2f0;c12:5f3;


It works perfectly in Flash. A faster but larger solution has similar problems:

Code: Select all
?lvl=24&code=q10:3f6;p10:4f0;q10:5f2;b11:3f3;c11:4f0;r11:5f1;p12:4f3;y12:2f3;c12:3f3;c10:2f2;c11:2f2;c13:2f0;c14:2f0;q14:3f0;r13:3f3;b13:5f1;q14:5f4;p14:4f2;c13:4f2;c15:4f3;c9:4f3;c9:5f3;c15:5f3;c12:5f3;c12:6f3;c12:7f3;c12:8f3;c12:9f3;c12:10f3;c12:11f3;q12:12f4;c9:6f2;i10:6f7;c11:6f2;c13:6f0;i14:6f6;c15:6f0;
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Wed Jun 30, 2010 5:00 am UTC

Ken_g6 wrote:Xanthir, another bug report:

Using both Firefox 3.6.2 beta I think and Chrome 5.0.375.86 beta on Linux, the following Engineers solution fails frequently, even on the empty string!

Code: Select all
?lvl=24&code=y12:2f3;c12:6f3;c12:7f3;c12:8f3;c12:9f3;c12:10f3;c12:11f3;q12:12f4;b11:3f2;q11:4f5;c12:3f3;p12:4f3;r13:3f0;q13:4f1;p10:4f0;c9:4f1;c9:3f2;c10:3f1;c10:2f2;c11:2f2;p14:4f2;c15:4f1;c15:3f0;c14:3f1;c14:2f0;c13:2f0;c12:5f3;


It works perfectly in Flash. A faster but larger solution has similar problems:

Code: Select all
?lvl=24&code=q10:3f6;p10:4f0;q10:5f2;b11:3f3;c11:4f0;r11:5f1;p12:4f3;y12:2f3;c12:3f3;c10:2f2;c11:2f2;c13:2f0;c14:2f0;q14:3f0;r13:3f3;b13:5f1;q14:5f4;p14:4f2;c13:4f2;c15:4f3;c9:4f3;c9:5f3;c15:5f3;c12:5f3;c12:6f3;c12:7f3;c12:8f3;c12:9f3;c12:10f3;c12:11f3;q12:12f4;c9:6f2;i10:6f7;c11:6f2;c13:6f0;i14:6f6;c15:6f0;

I dunno what to tell you, dude. Both of those work great for me here on Chrome/Win, passing total-coverage up to length 10. I'll check again when I get to work tomorrow to see if there's anything magical about Linux causing failures.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Wed Jun 30, 2010 8:33 pm UTC

Here's another custom level, with difficulty somewhere between Judges and Ophanim. I say that because I haven't completed Ophanim yet! :oops:

RoboPens! (I hope nobody's taken that name yet.)
"Robotic autopens know when and where to copy your signature. Let them sign your contracts for you! :mrgreen:"
Code: Select all
?ctm=RoboPens!;OUTPUT:The_string_after_green,_the_number_of_times_given_before_green,_plus_1;rrrgbrbrrrb:brbrrrb|rrbgrbrbbbr:rbrbbbrrbrbbbr|brgrrrr:rrrrrrrrrrrr|brbbgbr:brbrbrbrbrbrbrbrbrbrbrbr|bbrrrgb:bbbbbbbbbbbbbbbbbbbbbbbbb;13;3;0;


My best solution:
Spoiler:
86 parts, 12:42:
Code: Select all
?lvl=38&code=b9:8f3;p9:9f6;r9:10f1;c10:8f2;q10:9f4;y10:10f0;c11:8f2;r11:9f2;q11:10f5;r11:11f2;g12:8f3;c12:9f3;p12:10f7;p12:11f7;q12:12f0;c13:8f0;b13:9f0;q13:10f1;b13:11f0;c14:8f0;q14:9f2;y14:10f2;r15:8f3;p15:9f4;b15:10f1;c8:8f3;c8:9f3;c8:10f3;c8:13f2;c9:13f2;c10:13f2;c11:13f2;r7:11f2;b9:11f0;p8:11f7;q8:12f6;c8:3f3;c8:4f3;c8:5f3;c8:6f3;c8:7f3;q9:3f1;b9:4f2;c10:2f3;p10:3f4;p10:4f3;y10:5f2;c11:2f3;g11:3f0;r11:4f0;q11:5f3;c12:2f0;c12:3f3;c12:4f3;c12:7f3;c13:3f0;b13:4f3;p13:5f6;r13:6f1;q13:7f7;c14:2f3;c14:3f0;c14:4f3;q14:5f2;y14:6f3;y14:7f0;c15:4f1;i15:5f3;y15:6f1;q15:7f0;y16:2f3;b16:4f2;g16:5f2;r16:6f2;c16:7f0;c17:3f0;p17:4f5;p17:5f6;p17:6f7;c17:7f0;r18:4f0;b18:6f0;g12:5f2;q15:2f1;y15:3f1;c16:3f0;&ctm=RoboPens!;OUTPUT:The_string_after_green,_the_number_of_times_given_before_green,_plus_1;rrrgbrbrrrb:brbrrrb|rrbgrbrbbbr:rbrbbbrrbrbbbr|brgrrrr:rrrrrrrrrrrr|brbbgbr:brbrbrbrbrbrbrbrbrbrbrbr|bbrrrgb:bbbbbbbbbbbbbbbbbbbbbbbbb;13;3;0;
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Wed Jun 30, 2010 8:42 pm UTC

Xanthir wrote:I dunno what to tell you, dude. Both of those work great for me here on Chrome/Win, passing total-coverage up to length 10. I'll check again when I get to work tomorrow to see if there's anything magical about Linux causing failures.

Oops, I see, I was using the wrong emulator. http://www.xanthir.com/manufactoria.html instead of http://www.xanthir.com/manufactoria/ :oops:

I got the link from your first post mentioning it. Could you redirect the old one or something?

Thanks for checking! :)
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Wed Jun 30, 2010 9:10 pm UTC

Done - http://www.xanthir.com/manufactoria.html now just contains a link to the proper folder.

I also took the opportunity to make it accept the level codes in the url, so you can link straight to a solution with the url tag, rather than having to put it in code or spoiler. Have fun.

Edit: Next task is to make it do the coverage testing properly, so that levels with special requirements don't get fed bad strings. And then parse the level-creator syntax as well.

Edit2: And of course, now I've broken things in an attempt to upgrade some abilities.
Edit3: Fixed! Now you can just view the board, run total-coverage testing, or test for specific strings.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Wed Jun 30, 2010 10:02 pm UTC

Xanthir wrote:Done - http://www.xanthir.com/manufactoria.html now just contains a link to the proper folder.
[snip]
Edit3: Fixed! Now you can just view the board, run total-coverage testing, or test for specific strings.


Thanks, Xanthir! Looking better and better. :)

Now, do you mind another bug report? Running tests on this Rocket Planes code crashes the JavaScript in Chrome, during the testing of [b], with the following in the JavaScript Console:
/manufactoria/manufactoria-checker.js:516: Uncaught ReferenceError: count is not defined
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Wed Jun 30, 2010 10:35 pm UTC

Ah, sorry. Had a silly mistake in the rocketplanes checking function. Fixed.

Also, added a feature to the show-computations option: It now shows the active element for each step.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby phlip » Wed Jun 30, 2010 10:59 pm UTC

Hah, finally beat Judiciary... after much work, I managed to take my Police solution and my Seraphim solution, neither of which were particularly small (I'm not very good at optimisation in this game...) and, after contortions, cram them together into the grid.

I mean, I figured that was the obvious way to do it from the start, but I had my doubts as to whether it would fit... and it did take some contorting...

Now, on to Metatron...
While no one overhear you quickly tell me not cow cow.
but how about watch phone?
User avatar
phlip
Restorer of Worlds
 
Posts: 7086
Joined: Sat Sep 23, 2006 3:56 am UTC
Location: Australia

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Wed Jun 30, 2010 11:54 pm UTC

Thanks, Xanthir! :)

Now let me see if I can help you out. Here's a Stylish script (basically CSS) that lets Firefox display the correct pieces:

Code: Select all
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url-prefix("http://www.xanthir.com/manufactoria/") {
img[src="entrance.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEWIiIjMzMwAAABVVVVmZmZnZ2eEhIQ1NTUCAgIzMzNYWFgGBgbSEDDJAAAAX0lEQVR4XoXR0Q3AIAgE0FuhK9wKruIArHG/XaUbOGEJNv2R5PjyGQiIuCoWuQ+dn5sxQY7WyQAmAI7GRaVVF6eT2PkAW+uzOq8AyhVsrN867epNfze/e7/Zn9+/+78XLABD5UD6UwgAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wb0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgmJiYGBgalpaWAlv+FhYV9kvmUzSqgAAAAZ0lEQVR4XoXRUQ3AIAwE0Fo4C7NQCzNQCyhABgImAplrOxI+uKUXft4FQiiiqu3KaIS4dcl4w5xcDXHQ4MmC2p4bvsS8IHaGo/gz8B0ANVYM3HPs/dxj33dabLqTxMX7i/mV86/+7wUeilN1yBYuagAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wb1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgmJiYGBgalpaWAlv+FhYV9kvmUzSqgAAAAhUlEQVR4Xn3QAQ3EIAwF0Fr4FmoBC1iohVrAwizUwlTePs1PdjlyP83CayFh2HjiHS5PdjMAZn50sxtyBCLaJFTeji5Z54/enJPFxsEkzYZcqC8DeLkK4EdWjtb56/rj+VC2qO073vflmM7FDYWb45W//783MBz3eyo+6FxKbg9XRjuVxx8DPEPfGaVNHgAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wb2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgmJiYGBgalpaWAlv+FhYV9kvmUzSqgAAAAZUlEQVR4XoXRMQ6AIAwF0G7Of+gFHLgAV2DxZsZT+9toDLSmfyC8hqRQpFt2T+Mu2CWeraV2vYVoJxi1QjCpgnHgvDS108xCZtAk8GconqyeznNZPfUbqb/7khJdvb+YXzn/6v9u4jE0SeTkrmIAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wb3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgmJiYGBgalpaWAlv+FhYV9kvmUzSqgAAAAhklEQVR4Xn3PUREDIRAD0LUQC1jAAhbWAhZq4SyshVPZkJKPDtdmmBveJHxc9N6nw/tycz6eL2fKLZxGs47IlQgOQjVWNAjV940qDUL1dWEMDWjWcqWsmtbABvDHzi9XEfzYY/i9XagvD9a2BhBPH//75NzHxj6yBolUvY2VbQ3MR/emkKffSDVD31LLkisAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wg0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAHlBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJiY01UalpaWFhYXA83lXAAAAgUlEQVR4Xm3RWRHAIAwEUCxgAQuxUAtrIRawEAtx21zt9MgOPy8EaGEQ0cqQp/EambU6J6vS2Dk9UWg9j8PHsNJ6msNGdzaUderLtl14hlXNqrfvfMzlvWv9z1zez/O5zIPD3vD6fjbntOD3vxBr8BgFzf1BSiJo7x+SAfr3ImTCJ8QaQdDzSyLiAAAAAElFTkSuQmCC") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wg1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAHlBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJiY01UalpaWFhYXA83lXAAAAYUlEQVR4XoXQsQ0AIQgFUMpraRiAxAlcgeYmYv2DHzrB+7Hw/UChtCOKrLx2ViJmoWf1Bqs4nRQcFK1rvjVoL5uhOJ2ETSYHmS+ujMa8++wofDYWko3/3o//RMDOWyvBwx9ggzM5oeP6CAAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wg2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAHlBMVEWqqqoiIiIAAADMzMyIiIgGBgY01UYmJialpaWFhYWZcjqSAAAAiElEQVR4XmXRAQ0EIQwEwLWwFrDwFrCABSzUwlnA7XfbJvd8NznCZCHkAB9lZXyWHhk52iezZLXIjLC35WfJaivDvdSaogXImooWwGuDzcm9TfaaYJhp1eFtsuoyZQuTLLPZWCnzz+A5pA/Xfg3veYfn8tSXhoFhIs0ft/9tvu+rud139/te3V/AtEHQDPThgAAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wg3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAHlBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJiY01UalpaWFhYXA83lXAAAAZElEQVR4XnXRwQ3AMAgDQFbwCl2BFZggGzBFvh0iAxc5kfqIsfLgLD4R5u7jOalZeLx28giTiQqLy+ScWMFCuEgHegNYvbHTOmLv945ia0saJnz9VzmNT5sF94vKLDaV/4O58Afl2VBn2gK39AAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wr0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJialpaXVOjqFhYXQOTla/fnTAAAAjElEQVR4Xl3RYQ1EIQwD4FmoBSxg4Vl4FmbhLGBhFlB57XaEyxr+fFkJAWzO+VamIo/K8fupqCEPq2TDOP6ZDVnj06A1doVmwTSGUgXZIxDh5izIeB4tAwu0R1oFWWNZhWMAaW9G+sSbUUYEsbf6d/9afw7s9D1/XasA0U2+Bt3v293fq7u/d3f/r+4vm9lDRpABvFEAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wr1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJialpaXVOjqFhYXQOTla/fnTAAAAZElEQVR4XoXPQQ3AMAwDwFAwhVAIhSIogzEYjAIYiMJcauU3R7OqSmf5E4vMdCYyyvO2CzBz6SILYdLquXbtpclnYC8Wysnjhd4Adm9UtGufX++RbH0KzoV/7w8WGVI5plfi6xeGYlJVQHHl+gAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wr2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJialpaXVOjqFhYXQOTla/fnTAAAAh0lEQVR4Xm3RUQ3FMAgFUCxcC7MwC7WABSxgYRawUJWPAi/NVu5XD4GkpXSvXBk/HQ5R5modqsLpJFZW4bAThOfBGCjL23CGB7YnrIwwgG3M6TZL75TlY/LRPS8fU3g4y0JiYZNwNvzvyxoNBjPp3nuzumWFSLnZH6sWldv9M2uG3e3/ccb9A5CaQ0a40y1BAAAAAElFTkSuQmCC") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wr3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJialpaXVOjqFhYXQOTla/fnTAAAAYUlEQVR4Xn3PsQ3AIAwEQLrUbhjAEhN4BZpsFmXqPC93fuflgnuBZEZEeGbhLOwjcy1h0pDJopjcN4aFMHiMojNo9uNM6+fl/d4odm8+OBQu/1WeOdKRG5PCLJLa4QxY/QEaBjQ3o/d/hwAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wy0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJialpaX//YCFhYX5932qEK0IAAAAiElEQVR4Xm3Riw3AIAgEUFa4FVyBFboCK7ACK3QFVnDKCsR+Ui7R5KEGa4mZR4UjjQdVxmhdrErjICJZaI3jwHmCsApvazoYjg3bjvkxgDTS7stz3n7ytabrfEz0s+7+MXY/9bQr6XPfWi6rOzyXTX7fK0akkUWT5v3ECmQm7fuLVUT6/8VSSV+CqENGF1fKWgAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wy1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJialpaX//YCFhYX5932qEK0IAAAAY0lEQVR4XoXQsQ3AMAgEQLrUNB7AkifwCjTeLMrUgRcdT/Jy4XtBYcv2TGTFlXmKqA65FjeYRXVw4KCgznlq8H7UDorqYNiLzk7VD2da28F8by+sNxaCxH/vx38iIPOeGWfxC9SVNDcfIg3oAAAAAElFTkSuQmCC") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wy2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJialpaX//YCFhYX5932qEK0IAAAAi0lEQVR4XmXRQQ1EIQwE0FoYC1hYC1jAQi1gAQu1gMrttATy0wkHXqYcAPkxI+O7dMvQ0c7MoNlKpoW9PZ6DbnLT3IOtMhyQrMFwQLxWUTOYKe01BL1zpVmHTems6Q5awwCOUaw4Sb/c+b0dZtdrvfMS3rCPl9fHonGATEOey32Lv+9VXN67+v1X9R+py0NGTVz9xgAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="wy3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAIVBMVEWqqqoiIiIAAADMzMyIiIgGBgYmJialpaX//YCFhYX5932qEK0IAAAAZ0lEQVR4Xn3RUQ3AIBADUCzUAhbOAgpwgIPJmABEIHO9HQsflDVHwmv4gJDMrOYZ7oXrlWaysrOB8WL3y17A8UKZpLnOBtDPRkR5nR/3jwt5NAuaFN7eq9xSjLR9N3YKRxFUXh9mwg/ERFJVizTpzgAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rbr0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWZmZnVOjqAlv/PODh8kfiUlJQHi0KsAAAAa0lEQVR4XoXRUQ3AIAxF0WuhFqqgEmZhJrCAhTnAAgrQt47xV7a+D5LzEtIGUNWDGX0S7DxFrCFsvVgrws5ONw1E+LI38+TXhhBtvHEPPn1ijFKCs/v5/Hx/Fx0eBq/36teFc+dVTEZn/3cDSbo6MecPARAAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rbr1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWAlv/VOjqZmZmUlJR8kfjPODiTHM92AAAAj0lEQVR4XpXQUQ0EIQwE0LGABSyMhVqoBSxgAQtrAQuYO3qZkkuOn52ElkdICEWNYEe7m1Ew9rpaHDqQn/HIwQIMREuTDymjRFT/jQLIsU/zGH0biNJwce89BKC1OFh9kXCQs83Lfa7jyeiQ831SJr/eedHNf+yGCjn/b37spnnJqGFzd5K7muat5Pwts/0BKu4vWmSKKVwAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rbr2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWZmZmAlv/VOjp8kfiUlJTPODjpXMX8AAAAZklEQVR4XoXRwQ3AIAwDQEvpAnmwQIfjwQKIDZBYum7DD6vxi7OEgID7Db5cXEnDMcy9XNpk71EIkw4M0CxOkwylDYf9Go1GxIRrbTAU7Wx/dn5+//3eBdOOec25Yl6no9g8nP3fA+5RJINcTG7gAAAAAElFTkSuQmCC") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rbr3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaXVOjqAlv+ZmZnPODh8kfiUlJQDxMe2AAAAlElEQVR4XpXRQQ1EIQwE0LFQC7UwFrCABSxgAQvfwreAuR260AvZw/bQ9lFImgB3LyfUL+PE16XWSlK5hGFmQGRB43QtMixt0hqna1EN/1HJbTIMbEcPvumHMnq6Lb79JVFBPu2Re++Il2itXfdvG2SjybA0jl2Sd/bbHptPcnEbGMCxwzDHhJgeY6TjIPjLfn7r9gdrvi9an2ixJAAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rgy0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWZmZn//YA01Ub49nwyz0SUlJToRuKPAAAAa0lEQVR4XoXRUQ3AIAxF0WuhFqqgEmZhJrCAhTnAAgrQt47xV7a+D5LzEtIGUNWDGX0S7DxFrCFsvVgrws5ONw1E+LI38+TXhhBtvHEPPn1ijFKCs/v5/Hx/Fx0eBq/36teFc+dVTEZn/3cDSbo6MecPARAAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rgy1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaU01Ub//YCZmZmUlJQyz0T49nwOwLrtAAAAj0lEQVR4XpXQUQ0EIQwE0LGABSyMhVqoBSxgAQtrAQuYO3qZkkuOn52ElkdICEWNYEe7m1Ew9rpaHDqQn/HIwQIMREuTDymjRFT/jQLIsU/zGH0biNJwce89BKC1OFh9kXCQs83Lfa7jyeiQ831SJr/eedHNf+yGCjn/b37spnnJqGFzd5K7muat5Pwts/0BKu4vWmSKKVwAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rgy2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWZmZk01Ub//YAyz0SUlJT49nyr22B8AAAAZklEQVR4XoXRwQ3AIAwDQEvpAnmwQIfjwQKIDZBYum7DD6vxi7OEgID7Db5cXEnDMcy9XNpk71EIkw4M0CxOkwylDYf9Go1GxIRrbTAU7Wx/dn5+//3eBdOOec25Yl6no9g8nP3fA+5RJINcTG7gAAAAAElFTkSuQmCC") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rgy3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaX//YA01UaZmZn49nwyz0SUlJS35hx2AAAAlElEQVR4XpXRQQ1EIQwE0LFQC7UwFrCABSxgAQvfwreAuR260AvZw/bQ9lFImgB3LyfUL+PE16XWSlK5hGFmQGRB43QtMixt0hqna1EN/1HJbTIMbEcPvumHMnq6Lb79JVFBPu2Re++Il2itXfdvG2SjybA0jl2Sd/bbHptPcnEbGMCxwzDHhJgeY6TjIPjLfn7r9gdrvi9an2ixJAAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rrb0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWZmZmAlv/VOjp8kfjPODiUlJSARDSVAAAAa0lEQVR4XoXRUQ3AIAxF0WuhFqqgEmZhJrCAhTnAAgrQt47xV7a+D5LzEtIGUNWDGX0S7DxFrCFsvVgrws5ONw1E+LI38+TXhhBtvHEPPn1ijFKCs/v5/Hx/Fx0eBq/36teFc+dVTEZn/3cDSbo6MecPARAAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rrb1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaXVOjqAlv+ZmZmUlJTPODh8kfiHjHnQAAAAj0lEQVR4XpXQUQ0EIQwE0LGABSyMhVqoBSxgAQtrAQuYO3qZkkuOn52ElkdICEWNYEe7m1Ew9rpaHDqQn/HIwQIMREuTDymjRFT/jQLIsU/zGH0biNJwce89BKC1OFh9kXCQs83Lfa7jyeiQ831SJr/eedHNf+yGCjn/b37spnnJqGFzd5K7muat5Pwts/0BKu4vWmSKKVwAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rrb2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWZmZnVOjqAlv/PODiUlJR8kfjaDkSmAAAAZklEQVR4XoXRwQ3AIAwDQEvpAnmwQIfjwQKIDZBYum7DD6vxi7OEgID7Db5cXEnDMcy9XNpk71EIkw4M0CxOkwylDYf9Go1GxIRrbTAU7Wx/dn5+//3eBdOOec25Yl6no9g8nP3fA+5RJINcTG7gAAAAAElFTkSuQmCC") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="rrb3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWAlv/VOjqZmZl8kfjPODiUlJQ8G2s9AAAAlElEQVR4XpXRQQ1EIQwE0LFQC7UwFrCABSxgAQvfwreAuR260AvZw/bQ9lFImgB3LyfUL+PE16XWSlK5hGFmQGRB43QtMixt0hqna1EN/1HJbTIMbEcPvumHMnq6Lb79JVFBPu2Re++Il2itXfdvG2SjybA0jl2Sd/bbHptPcnEbGMCxwzDHhJgeY6TjIPjLfn7r9gdrvi9an2ixJAAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="ryg0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWZmZk01Ub//YAyz0T49nyUlJScA7OMAAAAa0lEQVR4XoXRUQ3AIAxF0WuhFqqgEmZhJrCAhTnAAgrQt47xV7a+D5LzEtIGUNWDGX0S7DxFrCFsvVgrws5ONw1E+LI38+TXhhBtvHEPPn1ijFKCs/v5/Hx/Fx0eBq/36teFc+dVTEZn/3cDSbo6MecPARAAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="ryg1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaX//YA01UaZmZmUlJT49nwyz0SEhGGCAAAAj0lEQVR4XpXQUQ0EIQwE0LGABSyMhVqoBSxgAQtrAQuYO3qZkkuOn52ElkdICEWNYEe7m1Ew9rpaHDqQn/HIwQIMREuTDymjRFT/jQLIsU/zGH0biNJwce89BKC1OFh9kXCQs83Lfa7jyeiQ831SJr/eedHNf+yGCjn/b37spnnJqGFzd5K7muat5Pwts/0BKu4vWmSKKVwAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="ryg2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaWZmZn//YA01Ub49nyUlJQyz0RM/SCmAAAAZklEQVR4XoXRwQ3AIAwDQEvpAnmwQIfjwQKIDZBYum7DD6vxi7OEgID7Db5cXEnDMcy9XNpk71EIkw4M0CxOkwylDYf9Go1GxIRrbTAU7Wx/dn5+//3eBdOOec25Yl6no9g8nP3fA+5RJINcTG7gAAAAAElFTkSuQmCC") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="ryg3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAJFBMVEUAAACqqqrMzMwFBQUGBgalpaU01Ub//YCZmZkyz0T49nyUlJSr+8seAAAAlElEQVR4XpXRQQ1EIQwE0LFQC7UwFrCABSxgAQvfwreAuR260AvZw/bQ9lFImgB3LyfUL+PE16XWSlK5hGFmQGRB43QtMixt0hqna1EN/1HJbTIMbEcPvumHMnq6Lb79JVFBPu2Re++Il2itXfdvG2SjybA0jl2Sd/bbHptPcnEbGMCxwzDHhJgeY6TjIPjLfn7r9gdrvi9an2ixJAAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="c0.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAAY1BMVEVwAAD///8AAABjY2P+/v7MzMxERETs7Ozy8vJAQECqqqr4+PjIyMhISEgGBgZnZ2dmZmbZ2dmysrJiYmJbW1vNzc3W1tarq6vz8/PLy8vQ0NCwsLBJSUnq6uo+Pj5kZGRlZWXK6OKYAAAAAXRSTlMAQObYZgAAAHNJREFUeF7V0UcOxTAIBFDALb3+3u9/yk+8yWZk1pnVQ4MsWdBxI8VYdWxCxcy1/JD2+otEYdoG5YJk1TznwUlCMmvOw0kSErH3l27slUDm43nvel7ljWR9LO/dlE8kig/WKB0Sve7tlo84JOugQzF02PwB6g4RXyAWzqkAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="c1.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAAY1BMVEVwAADMzMxjY2MAAACqqqr////y8vKysrL+/v7Z2dlERERmZmZbW1vNzc3W1tarq6vz8/Ps7Oz4+PjIyMhAQEBISEgGBgZnZ2diYmLLy8vQ0NCwsLBJSUnq6uo+Pj5kZGRlZWWiZmqtAAAAAXRSTlMAQObYZgAAAHVJREFUeF7tkEcKA0EMBEfSpM3JOf//lZZkDMaa8562Tg1FXdp9IHo9U5qEe7oi0sH9Qn8YvWMQ2xZPPB5GBwag3kPHYy7oGL1vjn6IY0FrW8OivdXaNlUvfUFrCyFLX9DaViFLfzkbrS2j/e2r13pte2177Q06zhPG1/8z7AAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="c2.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAAY1BMVEXQs07///8AAABjY2PMzMxERET+/v7Z2dny8vJbW1vNzc3W1tarq6vz8/Ps7Oz4+PjIyMhISEhAQECysrKqqqpmZmYGBgZnZ2diYmLLy8vQ0NCwsLBJSUnq6uo+Pj5kZGRlZWXrpN57AAAAAXRSTlMAQObYZgAAAHJJREFUeF7Vz7cOBEEIA1DD5ryXc/j/rzyW4iprqMfVk2whgXxzTgaaDAp9L1tuTyar97LlXjHhYZz6cXdZmXAwtuWxOpVMeOnVd0PNhFkL3zXCZHXnu1qIvPadCFNwPKiDx6L6YxQfMOH7JxM0majONj9lxxPYbMtwmgAAAABJRU5ErkJggg==") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="c3.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAAY1BMVEXQKFfMzMz///9jY2NAQECqqqpmZmYAAABERETy8vLZ2dmysrL+/v5bW1vNzc3W1tarq6vz8/Ps7Oz4+PjIyMhISEgGBgZnZ2diYmLLy8vQ0NCwsLBJSUnq6uo+Pj5kZGRlZWXqDIPoAAAAAXRSTlMAQObYZgAAAHdJREFUeF7t0DcOAzEMRFGTVA6bneP9T2mJCxswxNrVTvvwm9mtO9ibWyBhHYBz1q7w5fPlaPqQMARjtG54xn3tuQUQeNCl59Z7gTsoPbeIAo++9NyKjLXnVuCHUupEOROpsoZ/1zDRNd6nuhifrw//67Xtte21N+qOFAWW/vYKAAAAAElFTkSuQmCC") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
img[src="exit.svg"] { background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAAzFBMVEUAAABVVVXZ1xY+Pj4wMDA1NTUtLS0oKChAQEA5OTkfHx8kJCQiIiJOTk5JSUklJSUaGhoxMTFHR0ccHBwhISFRUVE0NDRSUlI7OzvT0RUnJycZGRkYGBgrKyssLCxDQ0MqKipCQkIjIyMUFBQmJiZPT08GBgZGRkZLS0tMTEw6OjoyMjJTU1MgICAWFhZFRUU/Pz9EREQ8PDwzMzNKSkovLy83Nzc4ODhUVFRISEhBQUEeHh4pKSkuLi42NjY9PT0RERFQUFBNTU0dHR2A4GjjAAAA/klEQVR4XoWQVY7EMBQE7TAPMzPTMuP977TpiTwvHkfZ+ogVlWR1mc1ZS9M0FqOc+OZrRUInEvyncTk02Feq057BLrRk3dkVhoZ5pQWToucP7+uuPmAE6e7r2LZuH/XBM9nL1V/d38C2Ng83L+VVjafCxKyg3S99NJ3Fssa50l08z2o6h7vZk9Cpbq8Qz1ofT1EY20RTd8fz394xKwq3/IzUXQkw+nOEWVcaVNt9jMYs0tTt9wwTo7+5QOq2DROz4tECqduqu6lZQOou4S1/GpyQus3kLVNI3a5DozO6dbxltgajKCSrdpdptNoNGhlX52rqzgQmR1O3+FHPfP0Ha8Udky0jE4IAAAAASUVORK5CYII=") no-repeat top left; width:30px; height:0px !important; padding-top:30px }
}


The conveyors are static (I took all the pieces from screenshots); but it wouldn't be too much more work to make them animated GIFs.

And I think that if this code were in the site, the @-moz-document url-prefix would make it run only on Firefox.
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Thu Jul 01, 2010 12:15 am UTC

Code accepted and committed. Thanks! If you happen to enjoy creating animated gifs, feel free to update the conveyors and I'll change them.

Edit: Just got around to testing Opera - works great, except Opera doesn't do SVG animations in <img>. So you get SVGs, but the conveyors don't move. Oh well.

Maybe now I should try to get it working in IE...
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Nix » Thu Jul 01, 2010 12:29 am UTC

Nabb wrote:
Code: Select all
http://pleasingfungus.com/?ctm=RLE;Do_RLE._G-0,_Y-1._Remove_first_1.;bbbbrrbbbrrrrr:bggrgbyrgy|bbbbbbbbbrb:bggyrb|:|b:b;13;3;0;

Here's my level: Run-length encoding on a string of B's and R's.
Sample: BBBBBRR -> B5R2 -> B101R10 -> (1 is redundant) B01R0 -> BGYRY

My solution is 100 parts (46 conveyors+bridges).


I liked this the most among the more complicated custom levels. Just coming up with a working algorithm takes some thought, and the limited area causes trouble but not too much.

I managed to cram my solution into 78 parts, which probably isn't nearly optimal. There's almost the same amount of functional parts as you had: I have 26 conveyors+bridges. Some more functionals could be lost by sacrificing total size.

Code: Select all
?lvl=32&code=r8:1f2;c8:2f1;g8:3f1;y8:4f1;y8:9f2;q8:10f6;r8:11f1;p9:1f7;i9:2f1;c9:3f3;p9:4f7;y9:5f3;g9:6f2;c9:7f1;r9:8f2;p9:10f0;p9:11f7;q9:12f1;y10:1f2;y10:2f0;c10:3f0;r10:4f0;q10:6f7;q10:7f7;p10:8f1;c10:9f1;i10:10f2;b10:11f1;y10:12f1;g11:1f3;i11:2f6;b11:3f0;c11:6f2;y11:7f0;b11:8f0;c11:9f2;i11:10f2;g11:11f1;r11:12f2;p12:2f7;i12:3f1;y12:4f3;q12:5f2;y12:6f3;c12:7f3;c12:8f2;c12:9f1;p12:10f1;q12:11f7;p12:12f1;y13:2f3;c13:3f0;c13:7f3;i13:8f5;c13:9f3;q13:10f4;y13:11f0;b13:12f0;c13:13f0;b14:7f0;p14:8f6;r14:9f0;c14:11f2;r14:12f1;c14:13f0;q15:8f2;y15:9f3;c15:10f3;i15:11f7;p15:12f7;q15:13f3;q16:10f1;c16:11f1;b16:12f1;y17:9f3;p17:10f0;g17:11f1;c9:9f1;&ctm=RLE;Do_RLE._G-0,_Y-1._Remove_first_1.;bbbbrrbbbrrrrr:bggrgbyrgy|bbbbbbbbbrb:bggyrb|:|b:b;13;3;0;

(I hope the code works, loading saved custom levels doesn't work for me after the game messed them up when I tried to have a lot of levels concurrently)

Algorithm:
Spoiler:
First turn each run into one of the color, rest in reds, yellow, green.
While there are extra reds, keep dividing the total amount in half (truncating) and collect the count in binary from the remainders, placing it between the yellow and green (in reds and blues).
When extra reds of all runs have been consumed, go through the tape removing the yellow and green delimiters and turning the counts into yellows and greens as specified.
Nix
 
Posts: 93
Joined: Mon Mar 09, 2009 8:14 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Thu Jul 01, 2010 1:19 am UTC

Xanthir wrote:Maybe now I should try to get it working in IE...
Personally, I'd rather see custom levels implemented first, to some degree. Display at least shouldn't be hard - the size is listed in the end set of three numbers: ";13;3;0;" and I imagine the part codes are the same.
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Thu Jul 01, 2010 2:24 am UTC

Ok, just spent a few minutes with the level creator. Yeah, that's super easy to parse. Only problem is that he doesn't url-escape & and = in the level names or descriptions, so it won't work on the url unless you do it manually.

The only mysterious part is the second-to-last number. It appears that it's always 3. Anyone know what affects that?
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby phlip » Thu Jul 01, 2010 2:29 am UTC

It doesn't seem to do anything... if you change it, and then go into the editor and come out, it changes it back to 3 again. Maybe some kind of version number?
While no one overhear you quickly tell me not cow cow.
but how about watch phone?
User avatar
phlip
Restorer of Worlds
 
Posts: 7086
Joined: Sat Sep 23, 2006 3:56 am UTC
Location: Australia

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Thu Jul 01, 2010 5:32 pm UTC

phlip wrote:Hah, finally beat Judiciary... after much work, I managed to take my Police solution and my Seraphim solution, neither of which were particularly small (I'm not very good at optimisation in this game...) and, after contortions, cram them together into the grid.

I mean, I figured that was the obvious way to do it from the start, but I had my doubts as to whether it would fit... and it did take some contorting...

Now, on to Metatron...

Heh, I did the exact same thing; I just started with somewhat smaller Police and Seraphim levels, so the two fit together without me having to do anything more difficult than a rotation.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Thu Jul 01, 2010 8:14 pm UTC

Wow, finally beat Ophanim. 125 parts! :shock: And it would have been more if I hadn't re-used an iterator.

How anyone could write this in 60 or fewer parts, when it seems like the number you're on has to be remembered by position, is beyond me.
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Thu Jul 01, 2010 9:17 pm UTC

Here's a 121 part Ophanim that's organized better - the third section is somewhat squeezed into the available area, but the whole thing is still pretty symmetric and easy to understand.

This is quite a bad attempt, though; I just haven't had time to rearrange the tests.
Spoiler:
Right now I first strip the initial reds, testing to see if either number is equal to 0 at the same time.
Then I compare the two number's digits pairwise, using a yellow to keep track of where I am in each. I throw away dots that match, because they don't give any information. If I ever get a mismatch, then I move to the next stage.
Third test is destructive length testing. If A had a blue while B had a red, then if A is equal or longer in size, it's larger. The reverse if A had a red while B had a blue. To help with size issues, I blue-wash both strings, since their actual value no longer matters, just their length.

This can be compactified *significantly* by swapping the second and third tests. Right now I have to duplicate the length test because the two branches have different accept/reject conditions. If I instead do a non-destructive length test first, and then only go to pairwise dot comparison when I've established that they're equal in length, it would be *way* easier, as I'd only have to write each test once. It would be faster, too, when A and B are different lengths. I've got the machine planned out in my head, I just need to sit down and write it.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Thu Jul 01, 2010 10:58 pm UTC

Xanthir wrote:Here's a 121 part Ophanim that's organized better - the third section is somewhat squeezed into the available area, but the whole thing is still pretty symmetric and easy to understand.

This is quite a bad attempt, though; I just haven't had time to rearrange the tests.
Spoiler:
Right now I first strip the initial reds, testing to see if either number is equal to 0 at the same time.
Then I compare the two number's digits pairwise, using a yellow to keep track of where I am in each. I throw away dots that match, because they don't give any information. If I ever get a mismatch, then I move to the next stage.
Third test is destructive length testing. If A had a blue while B had a red, then if A is equal or longer in size, it's larger. The reverse if A had a red while B had a blue. To help with size issues, I blue-wash both strings, since their actual value no longer matters, just their length.

This can be compactified *significantly* by swapping the second and third tests. Right now I have to duplicate the length test because the two branches have different accept/reject conditions. If I instead do a non-destructive length test first, and then only go to pairwise dot comparison when I've established that they're equal in length, it would be *way* easier, as I'd only have to write each test once. It would be faster, too, when A and B are different lengths. I've got the machine planned out in my head, I just need to sit down and write it.

Mine's closer to your second idea. I've gotten it down to 108 parts, and now it's a little better organized too.
Spoiler:
First I add a yellow at the end of each number, in the upper-right corner. Then I move them back until one string ends, which takes most of the right side. Then I truncate the number that was longer - or die() trying! Finally, once they match in length, I compare them with that comparator on the left.

Last time I tried stripping the leading reds, it took a quarter of the space, and the resulting code *never* worked. :(


Edit: P.S. Any chance of getting a part count in your script?
Edit2: I implemented red stripping on the first number only. It gave a surprisingly good speedup! :D
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Fri Jul 02, 2010 6:31 am UTC

Ken_g6 wrote:
Spoiler:
Last time I tried stripping the leading reds, it took a quarter of the space, and the resulting code *never* worked. :(

Huh, really? That's weird.
Spoiler:
Red-stripping should be really fast and easy. Check out the first part of my level, crammed up into the upper-left corner. It's very slightly obfuscated so I could cram it up there and gain another full row of space, but still, it's extremely easy to do red-stripping on both numbers.


Edit: P.S. Any chance of getting a part count in your script?

Done.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Fri Jul 02, 2010 4:25 pm UTC

Yeah, I managed to strip the first red in 109 parts. But I think stripping the second would require rearranging too much stuff.
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Nix » Fri Jul 02, 2010 8:47 pm UTC

Ken_g6 wrote:(Ophanim) How anyone could write this in 60 or fewer parts, when it seems like the number you're on has to be remembered by position, is beyond me.


Why does it have to be remembered by position? I'm not sure if I know what you mean, and I definitely don't know what J.P. does in his 40-part solution, but here's the algorithm (missing some details) used in both my 44-part former size record (that I just shrank to 43) and my 63-part speed record (with small tweaks). It was far from easy to squeeze it to 44, but I don't think 60 would be far from a somewhat optimized straightforward implementation.

Spoiler:
Tag the end-of-string/start of A with a yellow (it's easiest to think of the tape always as yellow, A, green, B), and needing to remember the number by position won't cause much duplication.
Strip leading reds from each number: erase until blue, copy blue (if any) and the rest, copy end-marker, same for B, not many parts.
Destructive bitwise comparison: read one, (separate tracks for red and blue:) copy until green, read one (move to next step if different from first read, adding one marker if necessary), copy until yellow, repeat. The final copying on each track can reuse another copier whose end-yellow can lead to the right place.
Turn every blue red, but keep different end-markers (done in 6 parts, keeping in mind we're always at the start of B when entering here).
Destructive length comparison: copy until end-marker, (separate tracks for yellow and green:) read one red (on no red, accept or reject depending on previous end-marker), repeat.

Many components can be entered in different places and/or melded together to save parts.
Nix
 
Posts: 93
Joined: Mon Mar 09, 2009 8:14 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Sat Jul 03, 2010 3:07 am UTC

Updates!

I've made the Total Coverage tests generate tests appropriate for the given level, so you can actually test your police, seraphim, etc.

I've also implemented custom levels. The implementation isn't complete yet, as I'll need to rewrite parts of the level evaluation code to finish it out, but it works for all of the "output" custom levels.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby jestingrabbit » Sat Jul 03, 2010 3:15 am UTC

My guess regarding JP's 40 part ophanim-

Spoiler:
His basic approach is to look at the least significant bits of the numbers. So he's got three guarded reads, and if the bits are the same then he keeps his previous decision about the numbers, if they're different then he updates what he thought about them in an appropriate way. The decision is stored as gy at the end of the numbers for accept, yy for reject.

Here's my version that's doing the same sort of thing.

Code: Select all
?lvl=30&code=y12:2f3;c6:4f2;y6:5f1;c6:6f2;c6:7f1;c6:8f1;c7:4f2;q7:5f5;c7:6f1;b7:7f2;p7:8f4;b7:9f1;c8:4f2;g8:5f1;r8:6f3;p8:7f2;r8:8f0;c9:4f2;q9:5f1;c9:6f1;c9:7f1;c9:8f0;c10:4f2;g10:5f1;q10:6f0;g10:7f3;p10:8f3;c10:9f3;c10:10f3;c10:11f2;c11:4f2;b11:5f3;p11:6f0;b11:7f2;c11:8f0;c12:3f3;c12:4f3;p12:5f2;r12:6f0;p12:7f6;r12:8f1;c13:3f0;g13:4f0;q13:5f6;c13:6f3;i13:7f5;i13:8f7;c14:3f0;q14:4f1;c14:5f1;c14:6f1;q14:7f6;p14:8f7;i14:9f5;c14:10f3;c15:3f0;y15:4f1;r15:5f3;p15:6f4;r15:7f2;g15:8f1;c16:3f0;q16:4f5;c16:5f1;b16:6f0;p16:7f2;b16:8f1;c17:3f0;y17:4f1;c17:5f0;c17:6f1;c17:7f1;p13:9f7;p12:10f3;q12:11f7;c12:9f3;c11:11f3;c11:12f2;c12:12f3;c14:11f3;c14:12f0;c13:12f0;


It surprises me a little that this is the smallest that there is.

Spoiler:
a pair of -- welded together was my guess before I opened it up.
ameretrifle wrote:Magic space feudalism is therefore a viable idea.
User avatar
jestingrabbit
 
Posts: 5468
Joined: Tue Nov 28, 2006 9:50 pm UTC
Location: Sydney

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Sat Jul 03, 2010 3:36 am UTC

Yo, JestingRabbit, link to your solution so it's easier to look at and evaluate.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby TheChewanater » Sat Jul 03, 2010 3:45 am UTC

Code: Select all
?ctm=Robofruit;Find_the_bitwise_xor_of_two_green-separated_numbers.;rbbrbbbrgrrrrrrbb:rbbrbbrb|bbrrbbrbgbrbrrrrb:rbbrbbrr|bbbrbrbbgrrbbrbrr:bbrbbbbb|brbrbbrbgrrbbbrrb:brrbrbrr|rbbrbbrbgrrrrbrbb:rbbrrbbr;13;3;1;
Last edited by TheChewanater on Sat Jul 03, 2010 6:12 am UTC, edited 2 times in total.
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.
User avatar
TheChewanater
 
Posts: 1286
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby jestingrabbit » Sat Jul 03, 2010 5:09 am UTC

Xanthir wrote:Yo, JestingRabbit, link to your solution so it's easier to look at and evaluate.


Good plan. Here's JP's for comparison.
ameretrifle wrote:Magic space feudalism is therefore a viable idea.
User avatar
jestingrabbit
 
Posts: 5468
Joined: Tue Nov 28, 2006 9:50 pm UTC
Location: Sydney

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Ken_g6 » Sat Jul 03, 2010 5:17 am UTC

TheChewanater wrote:rbbrbbbrgrrrrrrbb:brrbrrbr

WTF? That's XNOR, not XOR. r XOR r == b XOR b == r, not b.
TheChewanater wrote:bbrrbbrbgbrbrrrrb:rbbrbbrr

That looks like XOR, though. And my machine works on all test cases but the first one.
User avatar
Ken_g6
 
Posts: 43
Joined: Tue Jun 29, 2010 10:45 pm UTC
Location: in yer GPUz fakterin' primez in wardrobez

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby TheChewanater » Sat Jul 03, 2010 6:13 am UTC

Ken_g6 wrote:
TheChewanater wrote:rbbrbbbrgrrrrrrbb:brrbrrbr

WTF? That's XNOR, not XOR. r XOR r == b XOR b == r, not b.
TheChewanater wrote:bbrrbbrbgbrbrrrrb:rbbrbbrr

That looks like XOR, though. And my machine works on all test cases but the first one.

Typo. I mixed up r and b as 1 and 0.
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.
User avatar
TheChewanater
 
Posts: 1286
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby DeMatt » Sun Jul 04, 2010 3:43 am UTC

Idle thought for those who are much better than me at this game...

What would a NON-destructive Ophanim look like? What if you could remove leading zeroes? What if you had to leave leading zeroes alone?
DeMatt
 
Posts: 1
Joined: Sun Jul 04, 2010 1:36 am UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Sun Jul 04, 2010 5:03 am UTC

Removing reds is trivial. Not removing the reds generally just means the level will take longer.

A non-destructive ophanim is easy. Just leave the reds on, do a non-destructive length check skipping the initial reds, then do a non-destructive digit comparison if they're equal.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby bocochoco » Wed Jul 07, 2010 2:14 pm UTC

What's the most efficient or best way to do Academics (Reverse the input string)? I got it just now, but it feels like theres a better way to do it.

My solution is (31 parts, 3:20)
Spoiler:
Mark the end with YG, then read the first, rewrite until you hit the Y. then write the color you read first then a Y. Rewrite until you hit the G. Repeat. Basically bubble the yellow to the front.

?lvl=23&code=y12:2f3;g12:3f3;p12:6f3;c12:4f3;c12:5f3;q12:7f2;p12:8f3;b11:8f2;r13:8f0;q12:9f6;c12:10f3;c12:11f3;c12:12f3;p14:3f0;b14:2f3;r14:4f1;q13:3f1;p10:3f2;b10:4f1;r10:2f3;q11:3f5;p11:6f0;b11:5f3;r11:7f1;q10:6f0;y10:5f1;p13:6f2;r13:5f3;b13:7f1;q14:6f6;y14:5f1;
Image
User avatar
bocochoco
 
Posts: 317
Joined: Thu Aug 06, 2009 8:22 pm UTC

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby jestingrabbit » Wed Jul 07, 2010 6:28 pm UTC

bocochoco wrote:What's the most efficient or best way to do Academics (Reverse the input string)?


My own solution is a near carbon copy of your own. Here's a link to xanthir's emulation of jareds' quick solution. Its basically the same idea, but taken a little further.
ameretrifle wrote:Magic space feudalism is therefore a viable idea.
User avatar
jestingrabbit
 
Posts: 5468
Joined: Tue Nov 28, 2006 9:50 pm UTC
Location: Sydney

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby Xanthir » Wed Jul 07, 2010 11:17 pm UTC

bocochoco, what you have right now is roughly the best "simple" machine you can design. There are faster ways to do it, but they involve going heavier into slightly odd optimizations, like Jared's solution that jestingrabbit linked.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))
User avatar
Xanthir
My HERO!!!
 
Posts: 4218
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex

Re: Manufactoria - Make Turing Machines with Conveyor Belts

Postby turingnow » Sun Jul 18, 2010 5:07 pm UTC

I modified nixes Ophanim solution a little. The lower left quadrant is pretty cool.
turingnow
 
Posts: 4
Joined: Sat Jun 26, 2010 11:18 am UTC

PreviousNext

Return to Coding

Who is online

Users browsing this forum: Bing [Bot] and 10 guests