From 065cfbb2304e91689827f1a20affae10536b49bb Mon Sep 17 00:00:00 2001 From: lol3rrr Date: Fri, 27 Mar 2026 07:57:58 +0100 Subject: [PATCH] Add some more ideas --- content/quickfacts-1/index.md | 159 ++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) diff --git a/content/quickfacts-1/index.md b/content/quickfacts-1/index.md index 027e349..cde4537 100644 --- a/content/quickfacts-1/index.md +++ b/content/quickfacts-1/index.md @@ -84,6 +84,165 @@ For example an inserter will perform an intersection, because it can only accept But a belt will perform a union, because might have constraints coming from inserters taking from them and downstream belts so the items can take either path. Basically the constraints for every edge will be combined using an intersection with the constraints of the node itself, and then all downstream edge constraints will be combined using a union to form the final upstream constraint. +JOIN Operator: used to combine multiple "or" constraints, for example for combining downstream constraints. +This is done by adding all the limits for items together. + +CHAIN Operator: used to combine multiple "and" constraints. + +### Representation +A tree with 3 levels, each doing something different + +The lowest level, selects by item. +The next level limits the rate per item. +The top level limits the total throughput. + + + +### Examples +{% carousel() %} +{% carousel_item() %} +Before propogation +{% mermaid() %} +--- +title: Inserter Feeding into Assembler +--- +flowchart BT + subgraph assembler + direction BT + root_1["unlimited"] + 1_first_limit["<= 5/s"] + 1_first_items["iron"] + 1_second_limit["<= 10/s"] + 1_second_items["copper wire"] + + 1_first_limit --> root_1 + 1_second_limit --> root_1 + 1_first_items --> 1_first_limit + 1_second_items --> 1_second_limit + end + + subgraph inserter with iron filter + direction BT + root_2["total <= 20/s"] + 2_first_limit["<= 20/s"] + 2_first_items["iron"] + + 2_first_limit --> root_2 + 2_first_items --> 2_first_limit + end +{% end %} +{% end %} + +{% carousel_item() %} +After first propogation step +{% mermaid() %} +--- +title: Inserter Feeding into Assembler +--- +flowchart BT + subgraph assembler + direction BT + root_1["unlimited"] + 1_first_limit["<= 5/s"] + 1_first_items["iron"] + 1_second_limit["<= 10/s"] + 1_second_items["copper wire"] + + 1_first_limit --> root_1 + 1_second_limit --> root_1 + 1_first_items --> 1_first_limit + 1_second_items --> 1_second_limit + end + + subgraph inserter with iron filter + direction BT + root_2["total <= 20/s"] + 2_first_limit["<= 20/s && <= 5/s"] + 2_first_items["iron"] + 2_second_limit["<= 0/s && <= 10/s"] + 2_second_items["copper wire"] + + 2_first_limit --> root_2 + 2_second_limit --> root_2 + 2_first_items --> 2_first_limit + 2_second_items --> 2_second_limit + end +{% end %} +{% end %} + +{% carousel_item() %} +After second propogation step +{% mermaid() %} +--- +title: Inserter Feeding into Assembler +--- +flowchart BT + subgraph assembler + direction BT + root_1["unlimited"] + 1_first_limit["<= 5/s"] + 1_first_items["iron"] + 1_second_limit["<= 10/s"] + 1_second_items["copper wire"] + + 1_first_limit --> root_1 + 1_second_limit --> root_1 + 1_first_items --> 1_first_limit + 1_second_items --> 1_second_limit + end + + subgraph inserter with iron filter + direction BT + root_2["total <= 20/s"] + 2_first_limit["<= 5/s"] + 2_first_items["iron"] + 2_second_limit["<= 0/s"] + 2_second_items["copper wire"] + + 2_first_limit --> root_2 + 2_second_limit --> root_2 + 2_first_items --> 2_first_limit + 2_second_items --> 2_second_limit + end +{% end %} +{% end %} + +{% carousel_item() %} +After final propogation step +{% mermaid() %} +--- +title: Inserter Feeding into Assembler +--- +flowchart BT + subgraph assembler + direction BT + root_1["unlimited"] + 1_first_limit["<= 5/s"] + 1_first_items["iron"] + 1_second_limit["<= 10/s"] + 1_second_items["copper wire"] + + 1_first_limit --> root_1 + 1_second_limit --> root_1 + 1_first_items --> 1_first_limit + 1_second_items --> 1_second_limit + end + + subgraph inserter with iron filter + direction BT + root_2["total <= 20/s"] + 2_first_limit["<= 5/s"] + 2_first_items["iron"] + + 2_first_limit --> root_2 + 2_first_items --> 2_first_limit + end +{% end %} +{% end %} + +{% end %} + + # Examples ## Belt Line with one slower belt