예제 #1
0
    public void Randomize()
    {
        var ruleSpace = ruleSpaceDesc.Create(stateCount);

        code          = ruleSpace.GenerateRandomCodeString();
        convertedCode = ruleSpace.GetFullCode(code);
        if (setToRuleSpace)
        {
            SetToRuleSpace();
        }
    }
예제 #2
0
 public void Analyze2()
 {
     using (var measureTime = new MeasureTime()) {
         var count     = transform.childCount;
         var ruleSpace = ruleSpaceDesc.Create(stateCount);
         var packer    = new Packer(stateCount);
         var p         = Enumerable.Range(0, count)
                         .Select(_ => ruleSpace.GenerateRandomTable())
                         .ToArray()
                         .AsParallel()
                         .Select(table => new Rule(packer, ruleSpace.GetFullTable(table), 2))
                         .Select(rule => new Emulator(rule, timeSize, spaceSize, startFill, borderFill, new Random(seed)))
                         .Select(emulator => emulator.EmulateInPlace())
                         .ToArray();
     }
 }
예제 #3
0
    public void RandomizeRules()
    {
        var ruleSpace = ruleSpaceDesc.Create(stateCount);
        var packer    = new Packer(stateCount);

        rules = Enumerable.Range(0, parallelRules)
                .Select(_ => new Rule(packer, ruleSpace.GenerateRandomFullTable(), EmulateComputeShader.tablePackN))
                .ToArray();
        rules[0] = new Rule(packer, new TotalisticRuleSpace {
            stateCount = stateCount
        }.GetFullTable(1815), EmulateComputeShader.tablePackN);
    }