Package application.model.rules.misc
Class Margolus
java.lang.Object
application.model.rules.Rule
application.model.rules.RuleFamily
application.model.rules.misc.Margolus
- All Implemented Interfaces:
java.lang.Cloneable
public class Margolus extends RuleFamily
Represents a 2-state Margolus rule
-
Field Summary
Fields inherited from class application.model.rules.Rule
alternatingPeriod, background, boundedGrid, numStates, readingOrder, tiling
-
Constructor Summary
-
Method Summary
Modifier and Type Method Description java.lang.String
canonise(java.lang.String rulestring)
Canonises the inputted rulestring with the currently loaded parameters.java.lang.Object
clone()
Gets the deep copy of the Margolus ruleprotected void
fromRulestring(java.lang.String rulestring)
Loads the Margolus rule's parameters from a rulestringjava.lang.String
getDescription()
Returns a plain text description of the rule family to be displayed in the Rule DialogCoordinate[]
getNeighbourhood(int generation)
Gets the neighbourhood of the 1D rulejava.lang.String[]
getRegex()
The regexes that will match a valid rulestringvoid
step(Grid grid, java.util.ArrayList<java.util.Set<Coordinate>> cellsChanged, int generation, java.util.function.Function<Coordinate,java.lang.Boolean> step)
Steps the grid provided forward one generationint
transitionFunc(int[] neighbours, int cellState, int generations, Coordinate coordinate)
This method represents the transition function of the rulevoid
updateBackground()
Updates the background of the rule based on the loaded parameters.Methods inherited from class application.model.rules.RuleFamily
equals, generateComments, getName, getNeighbourList, getRuleInfo, getRulestring, hashCode, loadComments, setRulestring, toString
Methods inherited from class application.model.rules.Rule
convertState, dependsOnNeighbours, getAlternatingPeriod, getBoundedGrid, getColour, getName, getNeighbourhood, getNumStates, getTiling, setBackground, setBoundedGrid, setReadingOrder
-
Constructor Details
-
Method Details
-
fromRulestring
protected void fromRulestring(java.lang.String rulestring)Loads the Margolus rule's parameters from a rulestring- Specified by:
fromRulestring
in classRuleFamily
- Parameters:
rulestring
- The rulestring of the Margolus rule- Throws:
java.lang.IllegalArgumentException
- Thrown if the rulestring is invalid
-
canonise
public java.lang.String canonise(java.lang.String rulestring)Description copied from class:RuleFamily
Canonises the inputted rulestring with the currently loaded parameters. This method should be called whenever the parameters of a rule are updated.- Specified by:
canonise
in classRuleFamily
- Parameters:
rulestring
- The rulestring to canonised- Returns:
- Canonised rulestring
-
updateBackground
public void updateBackground()Description copied from class:RuleFamily
Updates the background of the rule based on the loaded parameters. This method should be called whenever the parameters of a rule are updated. For non-strobing rules, the background is {0}.- Overrides:
updateBackground
in classRuleFamily
-
getRegex
public java.lang.String[] getRegex()Description copied from class:RuleFamily
The regexes that will match a valid rulestring- Specified by:
getRegex
in classRuleFamily
- Returns:
- An array of regexes that will match a valid rulestring
-
getDescription
public java.lang.String getDescription()Description copied from class:RuleFamily
Returns a plain text description of the rule family to be displayed in the Rule Dialog- Specified by:
getDescription
in classRuleFamily
- Returns:
- Description of the rule family
-
clone
public java.lang.Object clone()Gets the deep copy of the Margolus rule- Specified by:
clone
in classRuleFamily
- Returns:
- Returns a deep copy of the Margolus rule
-
getNeighbourhood
Gets the neighbourhood of the 1D rule- Specified by:
getNeighbourhood
in classRule
- Parameters:
generation
- The generation of the simulation- Returns:
- Returns the neighbourhood of the 1D rule
-
transitionFunc
Description copied from class:Rule
This method represents the transition function of the rule- Specified by:
transitionFunc
in classRule
- Parameters:
neighbours
- The cell's neighbours in the order of the neighbourhood providedcellState
- The current state of the cellgenerations
- The current generation of the simulationcoordinate
- The coordinate of the cell- Returns:
- The state of the cell in the next generation
-
step
public void step(Grid grid, java.util.ArrayList<java.util.Set<Coordinate>> cellsChanged, int generation, java.util.function.Function<Coordinate,java.lang.Boolean> step) throws java.lang.IllegalArgumentExceptionDescription copied from class:Rule
Steps the grid provided forward one generation- Overrides:
step
in classRule
- Parameters:
grid
- The grid that will be stepped forward one generationcellsChanged
- An array of sets that contains the cells the changed in the previous generations. The first entry will contains the cells that changed in the previous generation and the next entry will contain the cells that changed the previous previous generation and so on. It should be the same length as the alternating period of the rulegeneration
- The current generation of the simulationstep
- A function that returns whether the cell at that coordinate should be stepped forward.- Throws:
java.lang.IllegalArgumentException
- Thrown if the length of cellsChanged is not the same as the alternating period
-