This project generates a comprehensive visualization of interaction patterns to demonstrate how quickly complexity can arise in a system. It uses a simple four-entity model (named A, B, C, and D) to systematically map out every possible relationship, serving as a tool for exploring and understanding the nature of system dynamics.
In any system with multiple components, the relationships between them can become surprisingly complex. This tool demonstrates this principle by systematically generating and displaying every possible combination of influences in a small model, making it easier to:
- Appreciate combinatorial complexity: See how a few simple rules can generate a large number of unique states.
- Identify hidden dependencies: Understand how indirect relationships can form.
- Communicate complex ideas: The visualization provides a clear and unambiguous way to discuss the structure and potential complexity of any system.
The generated image, interactions.png, shows a grid of 64 scenarios based on a simple model:
- Two primary entities (A and B) can have a range of relationships: no direct link, a one-way influence, or a mutualistic connection.
- Two external entities (C and D) can influence the primary entities in various ways.
While the model is simple, it exhaustively maps every combination of these relationships to reveal the combinatorial explosion of complexity.
The long-form view above uses three columns so it remains readable within the GitHub README. The default eight-column grid is still rendered to interactions.png for full-width contexts.
The generator now offers subcommands so you can choose how you want to work with the scenarios. Run go run ./cmd/interactions help for a concise overview, or use the following cheatsheet:
render— Create the visualization PNG. Use--outputto set a custom destination (defaults tointeractions.png). Add--columns 3when you need a long-form layout that reads well in narrow views like the GitHub README.list— Print the scenario titles to the console. Add--longto include subtitles for a quick narrative reference.
Render the grid to a specific location:
go run ./cmd/interactions render --output build/interaction-grid.png
Create a long-form version that fits narrower documentation columns (3 panels wide):
go run ./cmd/interactions render --columns 3 --output build/interaction-grid-long.png
Browse the scenarios directly in your terminal with subtitles for README or documentation work:
go run ./cmd/interactions list --long
This project is licensed under the MIT License - see the LICENSE file for details.
The generated images and documentation are licensed under the Creative Commons Attribution 4.0 International License.
