Graverage

From Esolang
Jump to navigation Jump to search

Graverage is an automaton/esolang designed by User:Challenger5.

Program Structure

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.

Execution

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.

Syntax

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.

Computational Class

No clue.