# original game

https://www.kongregate.com/en/games/pleasingfungus/manufactoria

# original levels

- robotoast: accept everything
- robocoffe: accept if band[0] == blue
- robolamp: accept if there are three or more blues
- robofish: accept if band contains no red
- rc cars: output the input with the first symbol at the end
- robobugs: accept if the band has only alternating colors
- robocars: output replace blue with green, red with yellow
- robocats: accept if the tape ends with two blues
- robostilts: output: a green at the beginning, the input, a blue at the end
- robobears: accept if first == last symbol
- milidogs: accept odd binary strings.
- androids: accept some number of blue, same number of red
- roborockets: output swap blue for red, red for blue
- roboplanes:  output all of the blue, none of the red
- robomechas: output the input with the last symbol moved to the front
- soldiers: output multiply by 8
- robotanks: accept binary strings > 15
- robochildren: accept: an equal number of blue and red in any order
- police: output: yellow in the middle of the even-length string
- teachers: accept x blue, then x red, then x more blue for any x
- rocket planes: output the input with all blues moved to the front
- officers: output add 1
- robospies: accept all natural powers of four
- judicary: accept even length strings that repeat midway through
- politicians: accept if there are exactly twice as many blues as red
- academics: output the input string in reverse
- generals: output subtract 1
- engineers: accept perfectly symmetrical strings
- seraphim: accept two identical strings, separated by a green
- ophanim: accept two numbers, split by a green, if the first number > the second
- metatron: output C$ where input is "$A, a green, $B" and C$ = $A + $B

# other level ideas

- true
- if band[0] == blue
- if band[0] != blue
- if band[LAST] == blue (BINARY?)
- if band[LAST] != blue (BINARY?)
- if band[LAST] == band[LAST - 1] == band[LAST - 2] == blue
- if band[ANY] == blue
- if band[ALL] != red
- if sum(band, blue) >= 3
- if sum(band, blue) >= 3 && sum(band, red) >= 1 /* hard? */
- if band == (red*x):(blue*y) with x == y
- if sum(band, red) = sum(band, blue)
- if band == (red*x):(blue*y):(red*z) with x == y == z
- if sum(band, red) * 2 = sum(band, blue)
- if sum(band, red) == 0 /* needs gy */
- if band[x] != band[x + 1] forall x /* alternating */
- out band[1..LAST]:band[0]
- out swap(band[0], band[LAST])
- out bin(band) + 1
- out bin(band) - 1
- out bin(band) * 4
- out bin(band) * 7
- out replace(red -> blue, blue -> red)    
- out replace(red -> green, blue -> yellow)
- out all blue
- out all blue, all red
- out sum(band, red) as binary string
- if bin(band) > 7

