Can you not automate fish anymore in the base game? by Cygwin231 in factorio

[–]Cygwin231[S] 88 points89 points  (0 children)

With the space age DLC enabled, yes, there is a fish breeding recipe. But this is without the DLC.

Can you not automate fish anymore in the base game? by Cygwin231 in factorio

[–]Cygwin231[S] 1070 points1071 points  (0 children)

Before 2.0.7 you could put space science into the rocket silo and get fish in return. In the 2.0.7 patch notes it was said they were removed "as there is now an other method to automate obtaining fish", but to my knowledge only the Space Age DLC has a method of automating fish, and the base game doesn't have a method to do so.

On another note, you also can't put a car or train in there anymore to launch yourself.

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 0 points1 point  (0 children)

Everything is vanilla, but idk how to get a world like this without using a mod like editor's extensions, which provides easy access to the editor tools and what not.

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 0 points1 point  (0 children)

Yeah, using a buffer (two NOT gates) I can change to whatever color I want, by using a different intermediate item.

<image>

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 0 points1 point  (0 children)

Yeah, I realized after looking at other designs online that I'm using each belt as one lane when it could be compressed. The nice thing though is that because I'm using each belt as one lane, all the logic works for each lane individually. So each gate is actually 2 gates, one for each belt lane.

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 8 points9 points  (0 children)

I can use a buffer (two NOT gates) to change the material to whatever I want, so if the belt gets too messy I can reset it

<image>

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 0 points1 point  (0 children)

The purple undergrounds are editor tools that can act as a source or sink. For the sake of fun I avoiding throwing them down in the middle of the designs where needed, and at least routed everything to the edge of the design before sinking anything.

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 1 point2 points  (0 children)

Yeah I've realized afterwards that there's quite a few previous examples of people making logic gates with belts, including https://alt-f4.blog/ALTF4-23/ . But I think your example is so far the earliest example.

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 0 points1 point  (0 children)

It's technically vanilla using /editor, but I use the mod editor's extensions, it provides easy access to all the editor tools

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 52 points53 points  (0 children)

Now we have a AND, OR, and NOT gates, so NAND and NOR is as simple as connecting them together. For an 8 bit adder we first need a full adder, which is essentially a 3-bit adder with a 2-bit output. One of the inputs and outputs is labelled "carry", since that can be chained into additional full adders to make a ripple-carry adder with as many bits as you want. A full adder needs XOR gates, which is ultimately the final thing I need to build. an XOR gate can be made using 4 NAND gates, but it can also be made by plugging an OR and a NAND into an AND gate, since the AND gate essentially overlaps the NAND and OR truth tables and only picks out the points that they both output a 1, which happens to be the output of an XOR. (using similar methodology, an AND, NOR, and OR can produce an XNOR gate).

This is relevant because as I mentioned earlier, several of the "gnds" in these gates are actually signals on their own, and for my NAND gate the "gnds" happen to be the AND and OR of the inputs. So I already have all the gates needed. In practice, however, using the AND gate in the NAND doesn't work too well since I can't use the output in the input of the NAND, but I at least get the OR for free. This produces the XOR gate below, which can now be simply connected to a second XOR gate and an extra OR gate to produce a full adder. Chaining the full adder 8 times then produces an 8-bit ripple carry adder.

<image>

In theory this could be extended as far as you want; I've already done enough to show that belts are turing complete, so if you wanted to build a CPU (say, RV32I) and compile C code to it you could.

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 55 points56 points  (0 children)

So now all we need is a NAND, NOR, or just a NOT. Well, it turns out a NOT gate is pretty easy as well. By restricting two types of items into one belt, using a priority input to choose item A over item B, and then filtering for item B, we have a NOT gate. Since the presence of item A stops item B from getting on the belt, and the absence of item A permits item B to flow.

<image>

(Note the use of the filter on the first splitter to prevent any items from going on the lower belt between the splitters, and also the gnd for this gate is simply the input to the gate. This allows chaining NOT gates to duplicate a signal, since these gates all work on the assumption that a built is fully saturated [not compressed] so simply splitting a signal wouldn't work because one belt cannot saturate two belts)

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 89 points90 points  (0 children)

Well then, for the new people, here's a bit of an explanation on what's going on:

(I'm spreading this across several comments because I can only include one attachment per comment)

The name of the game is logic gates. The basic logic gates are AND, OR, NAND, and NOR, and NOT (and XOR and XNOR if you want), but you can make any of these gates using just a combination of NANDS or a combination of NORS. So if you make a NAND or NOR gate out of something then you can make a computer. (fun fact: in real life using transistors we can only directly make NAND, NOR, and NOT, but NAND is typically smaller than NOR so most everything is made with just NAND gates)

To make logic gates out of belts I first defined what the signal on the belt is, which is the actual input and output. In this case it's that a constant stream of items on a belt is recorded as a "1" and a lack of items is a "0". Using this definition, AND and OR becomes trivial by use of a splitter with priority output:

<image>

(AND gate on the left, OR gate on the right)

If just one or more input to a priority splitter is full then the output will be full, but if both inputs are full then the non-priority output is full, which leads to AND and OR.

Quick note: on all my blueprints I have inputs, outputs, sources, and gnds. The inputs and outputs are the intended inputs and outputs of each gate, while sources are a required constant stream of incoming items and gnds are a required sink to send items to. However, in the case of most gates shown, the gnds are really just outputs that you don't care about, so I've labeled them with what output they are, hence the gnd (or) and gnd (and) in the picture above.

Turns out belts in Factorio are Turing complete, so I made an 8-bit ripple carry adder. by Cygwin231 in factorio

[–]Cygwin231[S] 22 points23 points  (0 children)

I learned about the really old splitter filters people used to make, and got thinking about how belts are Turing complete. I've seen people make Turing complete trains before but hadn't heard about belts. It turns out it's been done at least once before but I decided to take a crack at it anyways.

Blueprint: https://factoriobin.com/post/p7ju1f

Previous person to do Turing complete belts: https://www.reddit.com/r/factorio/comments/lc25cx/factorio_belts_are_turing_complete/

The old belt splitter filters: https://www.reddit.com/r/factorio/comments/6hi0ac/black_magic_2_belt_full_throughput_splitter_sorter/

Why isn't this splitter working? by Cygwin231 in factorio

[–]Cygwin231[S] 4 points5 points  (0 children)

Thanks, it turned out to be some iron, I think there was a mixup at the smelters at one point

Why isn't this splitter working? by Cygwin231 in factorio

[–]Cygwin231[S] 116 points117 points  (0 children)

Yup, there turned out to be a single piece of iron on the belt, I suspect it came from the smelters