public void Day14_TestReadPolymers_OK()
        {
            var lines = Utils.ReadLinesFromFile("Day14Test.txt");

            Assert.Equal(18, lines.Length);
            var sut = new Polymerizer(lines);

            Assert.Equal("NNCB", sut.Template);
            sut.PairInsertion();
            Assert.Equal("NCNBCHB", sut.Template);
            sut.PairInsertion();
            Assert.Equal("NBCCNBBBCBHCB", sut.Template);
            sut.PairInsertion();
            Assert.Equal("NBBBCNCCNBBNBNBBCHBHHBCHB", sut.Template);
            sut.PairInsertion();
            Assert.Equal("NBBNBNBBCCNBCNCCNBBNBBNBBBNBBNBBCBHCBHHNHCBBCBHCB", sut.Template);

            for (int i = 0; i < 6; i++)
            {
                sut.PairInsertion();
            }

            long actual = sut.QuantityOfElements();

            Assert.Equal(1588, actual);
        }
        public void Day14_Puzzle1_OK()
        {
            var lines = Utils.ReadLinesFromFile("Day14.txt");

            Assert.Equal(102, lines.Length);
            var sut = new Polymerizer(lines);

            Assert.Equal("KOKHCCHNKKFHBKVVHNPN", sut.Template);

            for (int i = 0; i < 10; i++)
            {
                sut.PairInsertion();
            }

            long actual = sut.QuantityOfElements();

            Assert.Equal(3406, actual);
        }
        public void Day14_Test_OnePair40_OK()
        {
            var lines = Utils.ReadLinesFromFile("Day14Test.txt");

            Assert.Equal(18, lines.Length);
            var sut = new Polymerizer(lines);

            Assert.Equal("NNCB", sut.Template);
            // reset Template one pair
            //sut.Template = "NN";

            for (int i = 0; i < 40; i++)
            {
                sut.PairInsertion();
            }

            long actual = sut.QuantityOfElements();

            Assert.Equal(0, actual);
        }
Exemple #4
0
        private void RunMethodGroups()
        {
            var frequencies = ParseInputs(@"Inputs\Day1.txt");

            CalibrationManager.PrintSums(frequencies);
            CalibrationManager.CalibrateEveryTwice(frequencies);

            var idList = ParseStrings(@"Inputs\Day2.txt");

            Scanner.ShowCheckSum(idList);
            Scanner.FindAdjescentBox(idList);

            var claimsInputList = ParseStrings(@"Inputs\Day3.txt");
            var claims          = ParseFactory.ParseClaims(claimsInputList);

            Tailor.FindOverlaps(claims);

            var parsedShifts = ParseStrings(@"Inputs\Day4.txt");
            var sortedShifts = ParseFactory.ParseShifts(parsedShifts);

            GuardPicker.FindWeakestGuard(sortedShifts);

            var parsedPolymer = ParseString(@"Inputs\Day5.txt");
            var myPolyzer     = new Polymerizer();

            myPolyzer.React(parsedPolymer);

            var coords       = ParseStrings(@"Inputs\Day6.txt");
            var parsedCoords = ParseFactory.ParseCoordinates(coords);
            var cabber       = new Taxicabber();

            cabber.FindTheLargestArea(parsedCoords);
            cabber.FindTheSafeRegion(parsedCoords);

            var parsedInput = ParseStringPure(@"Inputs\Day7.txt");
            var orderer     = new StepOrderer();

            orderer.PartOne(parsedInput);
            orderer.PartTwo(parsedInput);
        }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
        Polymerizer polymerizer = go.AddOrGet <Polymerizer>();

        polymerizer.emitMass       = 30f;
        polymerizer.emitTag        = GameTagExtensions.Create(SimHashes.Polypropylene);
        polymerizer.emitOffset     = new Vector3(-1.5f, 1f, 0f);
        polymerizer.exhaustElement = SimHashes.Steam;
        ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

        conduitConsumer.conduitType          = ConduitType.Liquid;
        conduitConsumer.consumptionRate      = 1.66666663f;
        conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.Petroleum);
        conduitConsumer.capacityKG           = 1.66666663f;
        conduitConsumer.forceAlwaysSatisfied = true;
        conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
        ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

        conduitDispenser.conduitType         = ConduitType.Gas;
        conduitDispenser.invertElementFilter = false;
        conduitDispenser.elementFilter       = new SimHashes[1]
        {
            SimHashes.CarbonDioxide
        };
        ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

        elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
        {
            new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Petroleum), 0.8333333f)
        };
        elementConverter.outputElements = new ElementConverter.OutputElement[3]
        {
            new ElementConverter.OutputElement(0.5f, SimHashes.Polypropylene, 348.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0),
            new ElementConverter.OutputElement(0.008333334f, SimHashes.Steam, 473.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0),
            new ElementConverter.OutputElement(0.008333334f, SimHashes.CarbonDioxide, 423.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0)
        };
        go.AddOrGet <DropAllWorkable>();
        Prioritizable.AddRef(go);
    }
Exemple #6
0
            public static void Postfix(PolymerizerConfig __instance, ref GameObject go)
            {
                float ratio;

                ratio = DynamicBuildingsState.StateManager.State.liquidandgas / 0.8f;
                Polymerizer polymerizer = go.AddOrGet <Polymerizer>();

                polymerizer.emitMass = 30f * ratio;
                ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

                conduitConsumer.consumptionRate = 1.6f * ratio;
                conduitConsumer.capacityKG      = 10f * ratio;
                ElementConverter elementConverter = go.AddOrGet <ElementConverter>();
                var newConsumedElements           = new[] { new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Petroleum), 0.8f * ratio) };
                var newOutputElements             = new[]
                {
                    new ElementConverter.OutputElement(0.5f * ratio, SimHashes.Polypropylene, 348.15f, true, 0f, 0.5f, false, 1f, byte.MaxValue, 0),
                    new ElementConverter.OutputElement(0.008333334f * ratio, SimHashes.Steam, 473.15f, true, 0f, 0.5f, false, 1f, byte.MaxValue, 0),
                    new ElementConverter.OutputElement(0.008333334f * ratio, SimHashes.CarbonDioxide, 423.15f, true, 0f, 0.5f, false, 1f, byte.MaxValue, 0)
                };

                elementConverter.consumedElements = newConsumedElements;
                elementConverter.outputElements   = newOutputElements;
            }