示例#1
0
    public static int[] GetTableFromCode(BigInteger code, int sizePower, int stateCount)
    {
        var t         = RuleConverterLib.GetDigitsFromNumber(code, stateCount);
        var padLength = sizePower - t.Length;

        return(t.Concat(Enumerable.Repeat(0, padLength)).ToArray());
    }
示例#2
0
 public Rule(
     Packer packer,
     int[] table,
     int tablePackN = 1
     ) : this(
         packer,
         RuleConverterLib.GetNumberFromDigits(table, packer.stateCount),
         table,
         tablePackN
         )
 {
 }
示例#3
0
 private Rule(
     Packer packer,
     BigInteger code,
     int[] table,
     int tablePackN = 1
     )
 {
     this.packer     = packer;
     this.code       = code;
     this.table      = table;
     this.tablePackN = tablePackN;
     tableDesc       = string.Join("", table);
     tablePacked     = RuleConverterLib.RepackTable(
         table, stateCount, stateCountPacked);
     if (tablePackN != 1)
     {
         tablePackedNCell = RuleConverterLib.RepackTableForNCell(
             packer, tablePacked, tablePackN);
     }
     else
     {
         tablePackedNCell = tablePacked;
     }
 }
示例#4
0
 public BigInteger GetNumberFromDigits(int[] digits)
 => RuleConverterLib.GetNumberFromDigits(digits, stateCount);
示例#5
0
 public virtual int[] GetFullTable(int[] table)
 => RuleConverterLib.ConvertTable(table, GetCombinedState, stateCount);