Graverage is an automaton/esolang designed by User:Challenger5.
A Graverage program consists of:
- A set of one or more objects, called points.
- A mapping from each point to a pair of rational numbers, called its initial coordinates.
- A mapping from each point to a bag of one or more points (including itself), called its neighbors.
- A sequence of points (the instruction list), which is assumed to repeat infinitely.
Points from the instruction list are executed by updating their position to the average position of their neighbors. Neighbors are weighted by how many times they appear in the bag.
Interpreters can use any syntax, but the reference interpreter (were one to exist) works by getting all numbers from the digit string and interpreting them as follows:
- The first number, which we’ll call N, defines the number of points (which are identified by integers from 0 to N-1).
- Define the initial coordinate and neighbor arrays by repeating the following N times:
- Read four integers. The first two are treated as the numerator and denominator of the initial x-coordinate, and the last two are treated as that of the initial y-coordinate.
- Read a nonnegative integer M. The next M integers (which must be between 0 and N-1) are interpreted as identifiers for the point’s neighbors.
- The remaining integers (which must be between 0 and N-1) comprise the instruction list.