# Timesteps and Input
The Netomaton `evolve` function accepts two different parameters that
are used to specify how the network should be evolved: the `timesteps`
parameter and the `input` parameter.
The `timesteps` parameter specifies the number of times the activity
rule should be applied to the network as a whole. That is, one cycle of
activity is defined as the application of the activity rule once to each
node in the network. The `timesteps` parameter therefore specifies the
number of cycles.* Specifying the timesteps implies an
automaton that evolves on its own, in the absence of any external
driving signal.
The `input` parameter specifies the input to the network at a particular
step in the network's evolution. It is either a list, where each item in
the list contains the input for each node in the network for a
particular step in its evolution, or a function that accepts the current
timestep number and returns either the input for that timestep or None,
to signal the end of the evolution. The `input` parameter thus specifies
both the input to the network and, implicitly, the number of timesteps
in its evolution. The input for each node at each timestep will be
provided to the `activity_rule` function (and any `perturbation`
function), when the function is invoked. Specifying the input implies an
automaton whose evolution is driven by an external signal.
Either the `input` or the `timesteps` parameter must be provided to the
`evolve` function, but not both. If the `input` parameter is provided,
it will override the `timesteps` parameter, and the `timesteps`
parameter will have no effect.
The first item in the `input` list is given to the network at _t_=1,
the second at _t_=2, etc. No input is specified for the initial
state. This is illustrated in the figure below:
An example of the use of the `input` parameter in the form of a list can
be seen in the [Finite State Machine demo](../finite_state_machine/README.md).
An example of the use of the `input` parameter in the form of a function
can be seen in the [Turing Machine demo](../turing_machine/README.md).
An example of the use of the `timesteps` parameter can be seen in the
[Elementary Cellular Automata demo](../elementary_ca/README.md).
* Note that the initial state, specified by the
`initial_conditions`, is considered the result of a timestep, so that
the `activity_rule` is actually invoked t - 1 times.