Class HROTBSFKL

All Implemented Interfaces:
ApgtableGeneratable, MinMaxRuleable, java.lang.Cloneable

public class HROTBSFKL
extends BaseHROT
implements ApgtableGeneratable, MinMaxRuleable
Implements the HROT BSFKL rule family
  • Constructor Details

    • HROTBSFKL

      public HROTBSFKL()
      Creates a HROT BSFKL rule
    • HROTBSFKL

      public HROTBSFKL​(java.lang.String rulestring)
      Creates a HROT BSFKL rule with the given rulestring
      Parameters:
      rulestring - The rulestring of the HROT BSFKL rule to be created
      Throws:
      java.lang.IllegalArgumentException - Thrown if the rulestring is invalid
  • Method Details

    • fromRulestring

      protected void fromRulestring​(java.lang.String rulestring)
      Loads the rule's parameters from a rulestring
      Specified by:
      fromRulestring in class RuleFamily
      Parameters:
      rulestring - The rulestring of the HROT rule (eg. B3/S23, R2,C2,S6-9,B7-8,NM)
      Throws:
      java.lang.IllegalArgumentException - Thrown if an invalid rulestring is passed in
    • canonise

      public java.lang.String canonise​(java.lang.String rulestring)
      Canonises the inputted rulestring with the currently loaded parameters.
      Specified by:
      canonise in class RuleFamily
      Parameters:
      rulestring - The rulestring to canonised
      Returns:
      Canonised rulestring
    • getRegex

      public java.lang.String[] getRegex()
      The regexes that will match a valid rulestring
      Specified by:
      getRegex in class RuleFamily
      Returns:
      An array of regexes that will match a valid rulestring
    • getDescription

      public java.lang.String getDescription()
      Returns a plain text description of the HROT BSFKL rule family to be displayed in the Rule Dialog
      Specified by:
      getDescription in class RuleFamily
      Returns:
      Description of the HROT BSFKL rule family
    • generateApgtable

      public RuleDirective[] generateApgtable()
      Generates an apgtable for apgsearch to use
      Specified by:
      generateApgtable in interface ApgtableGeneratable
      Returns:
      Returns an array of rule directives to be placed in the ruletable
    • randomise

      public void randomise​(RuleFamily minRule, RuleFamily maxRule) throws java.lang.IllegalArgumentException
      Randomise the parameters of the current rule to be between minimum and maximum rules Used in CAViewer's rule search program
      Specified by:
      randomise in interface MinMaxRuleable
      Parameters:
      minRule - The minimum rule for randomisation
      maxRule - The maximum rule for randomisation
      Throws:
      java.lang.IllegalArgumentException - Thrown if the minimum and maximum rules are invalid
    • getMinMaxRule

      public org.javatuples.Pair<RuleFamily,​RuleFamily> getMinMaxRule​(Grid[] grids)
      Returns the minimum and maximum rule of the provided evolutionary sequence
      Specified by:
      getMinMaxRule in interface MinMaxRuleable
      Parameters:
      grids - An array of grids representing the evolutionary sequence
      Returns:
      A pair containing the min rule as the first value and the max rule as the second value
    • betweenMinMax

      public boolean betweenMinMax​(RuleFamily minRule, RuleFamily maxRule) throws java.lang.IllegalArgumentException
      Checks if the current rule is between the given minimum and maximum rules
      Specified by:
      betweenMinMax in interface MinMaxRuleable
      Parameters:
      minRule - The minimum rule
      maxRule - The maximum rule
      Returns:
      True if the current rule is between minimum and maximum rules and false if the current rule is not between the minimum and maximum rules
      Throws:
      java.lang.IllegalArgumentException - Thrown if the minimum rule and maximum rule are invalid
    • validMinMax

      public boolean validMinMax​(RuleFamily minRule, RuleFamily maxRule)
      Checks if the minimum rule and maximum rules provided are valid
      Specified by:
      validMinMax in interface MinMaxRuleable
      Parameters:
      minRule - The minimum rule to check
      maxRule - The maximum rule to check
      Returns:
      True if the minimum and maximum rules are valid and false if the minimum and maximum rules are not valid
    • getBirth

      public java.util.HashSet<java.lang.Integer> getBirth()
      Gets the birth conditions of the HROT BSFKL rule
      Returns:
      Returns the birth conditions of the HROT BSFKL rule
    • getSurvival

      public java.util.HashSet<java.lang.Integer> getSurvival()
      Gets the survival conditions of the HROT BSFKL rule
      Returns:
      Returns the survival conditions of the HROT BSFKL rule
    • getForcing

      public java.util.HashSet<java.lang.Integer> getForcing()
      Gets the forcing conditions of the HROT BSFKL rule
      Returns:
      Returns the forcing conditions of the HROT BSFKL rule
    • getKilling

      public java.util.HashSet<java.lang.Integer> getKilling()
      Gets the killing conditions of the HROT BSFKL rule
      Returns:
      Returns the killing conditions of the HROT BSFKL rule
    • getLiving

      public java.util.HashSet<java.lang.Integer> getLiving()
      Gets the living conditions of the HROT BSKFL rule
      Returns:
      Returns the living conditions of the HROT BSFKL rule
    • setBirth

      public void setBirth​(java.util.HashSet<java.lang.Integer> birth)
      Sets the birth conditions of the HROT BSFKL rule
      Parameters:
      birth - The birth conditions
    • setSurvival

      public void setSurvival​(java.util.HashSet<java.lang.Integer> survival)
      Sets the survival conditions of the HROT BSFKL rule
      Parameters:
      survival - The survival conditions
    • setForcing

      public void setForcing​(java.util.HashSet<java.lang.Integer> forcing)
      Sets the forcing conditions of the HROT BSFKL rule
      Parameters:
      forcing - The forcing conditions
    • setKilling

      public void setKilling​(java.util.HashSet<java.lang.Integer> killing)
      Sets the killing conditions of the HROT BSFKL rule
      Parameters:
      killing - The killing conditions
    • setLiving

      public void setLiving​(java.util.HashSet<java.lang.Integer> living)
      Sets the living conditions of the HROT BSFKL rule
      Parameters:
      living - The living conditions
    • clone

      public java.lang.Object clone()
      Description copied from class: RuleFamily
      Clones the object
      Specified by:
      clone in class RuleFamily
      Returns:
      A deepcopy of the object
    • transitionFunc

      public int transitionFunc​(int[] neighbours, int cellState, int generations, Coordinate coordinate)
      Description copied from class: Rule
      This method represents the transition function of the rule
      Specified by:
      transitionFunc in class Rule
      Parameters:
      neighbours - The cell's neighbours in the order of the neighbourhood provided
      cellState - The current state of the cell
      generations - The current generation of the simulation
      coordinate - The coordinate of the cell
      Returns:
      The state of the cell in the next generation