Example #1
0
    string RunPart2(InputAnswer puzzleData)
    {
        TileGrid.Clear();
        outputCache.Clear();
        Score = 0;

        var arcade = new IntCode(puzzleData.Code);

        arcade.Output += ArcadeOutput;

        var ballPosition   = GetTilePositions(TileType.Ball);
        var PaddlePosition = GetTilePositions(TileType.Paddle);

        arcade.Poke(0, 2); // Put in 2 quarters

        while (arcade.State != IntCodeState.Finished)
        {
            arcade.Run();
            if (arcade.State == IntCodeState.NeedsInput)
            {
                var diff       = ballPosition.First().X - PaddlePosition.First().X;
                var inputValue = (diff == 0) ? 0 : diff / Math.Abs(diff);
                arcade.AddInput(inputValue);
            }
        }

        return(Helper.GetPuzzleResultText($"Final Score: {Score}", Score, puzzleData.ExpectedAnswer));
    }
Example #2
0
 public InputAnswer ListenInput()
 {
     Debug.Log("UI Inpuit TODO");
     inputAnswer          = new InputAnswer();
     inputAnswer.isPaused = false;
     return(inputAnswer);
 }
Example #3
0
    public void Update()
    {
        if (SimulationLoaded)
        {
            if (inPlaymode)
            {
                TimeingManager.PreformTimerManagerCycle();

                inputAnswer = InputModulePlayMode.ListenToInput();
                if (inputAnswer.isPaused)
                {
                    inPlaymode = false;
                }
                else
                {
                    SimulationInstance.Player.LaunchAction(inputAnswer);
                    SimulationInstance.PreformGameplay();
                }
            }
            else
            {
                Time.timeScale = 0;
                inputAnswer    = InputModuleUIMode.ListenInput();
                if (inputAnswer.isPaused == false)
                {
                    Time.timeScale = 1;
                    inPlaymode     = true;
                }
                else
                {
                    UiInstance.PreformUIMode(inputAnswer);
                }
            }
        }
    }
Example #4
0
        public Level2()
        {
            Console.WriteLine("Level2");
            Reset();
            timebarSpace = 10.768F;
            this.Add(new SpriteGameObject("spr_background"));

            thePlayer = new Player(3, 3);
            door      = new Door(14, 0);
            goal      = new MainGoal(26, 3);
            xaxis     = new Xaxis(8, "Map/spr_horizontal_art_blue");
            yaxis     = new Yaxis(20, "Map/spr_vertical_art_blue");

            Mouse.SetPosition(GameEnvironment.Screen.X / 2, GameEnvironment.Screen.Y / 2);

            floors = new GameObjectList();
            walls  = new GameObjectList();
            goals  = new GameObjectList();

            inputScreen = new InputScreen(GameEnvironment.Screen.X / 2 - 64 * 2, GameEnvironment.Screen.Y);
            inputanswer = new InputAnswer(GameEnvironment.Screen.X / 2 - 64 * 2, GameEnvironment.Screen.Y);
            timeGround  = new SpriteGameObject("Map/time_ground");

            guards       = new GameObjectList();
            lasers       = new GameObjectList();
            times        = new GameObjectList();
            score        = new Score(12, 20, (int)time);
            Axis_nums    = new Axis_numbers(20, 8);
            switchBoards = new GameObjectList();

            this.Add(floors);
            this.Add(switchBoards);
            this.Add(lasers);
            this.Add(walls);
            this.Add(door);
            this.Add(xaxis);
            this.Add(yaxis);
            this.Add(Axis_nums);
            this.Add(goal);
            this.Add(goals);
            this.Add(guards);
            this.Add(thePlayer);
            this.Add(inputScreen);
            this.Add(timeGround);
            this.Add(times);
            this.Add(score);
            this.Add(inputanswer);

            goals.Add(new ExtraGoal(11, 9));
            guards.Add(new Guard(new Vector2(3, 13), new Vector2(25, 13)));
            FloorSetup();
            WallSetup();
            TimeBarSetup();
            SoundSetup();
            lasers.Add(new Laser(new Vector2(11, 6), new Vector2(14, 10), Color.Red, xaxis.gridPos, yaxis.gridPos));
            lasers.Add(new Laser(new Vector2(23, 10), new Vector2(28, 7), Color.Blue, xaxis.gridPos, yaxis.gridPos));
            switchBoards.Add(new SwitchBoard(3, 7, Color.Blue));
            switchBoards.Add(new SwitchBoard(22, 3, Color.Red));
        }
Example #5
0
 public static Answer ToModel(InputAnswer inputAnswer)
 {
     return(new Answer()
     {
         RightAnswer = inputAnswer.RightAnswer,
         Text = inputAnswer.Text
     });
 }
Example #6
0
    string RunPart2(InputAnswer puzzleData)
    {
        var phaseValues = new long[] { 5, 6, 7, 8, 9 };
        var answer      = 0L;

        foreach (var phase in GetPhases(phaseValues, puzzleData.Phase))
        {
            var ampA = new IntCode(puzzleData.Code);
            var ampB = new IntCode(puzzleData.Code);
            var ampC = new IntCode(puzzleData.Code);
            var ampD = new IntCode(puzzleData.Code);
            var ampE = new IntCode(puzzleData.Code);

            var outputValue = 0L;

            ampA.Output += (s, e) => outputValue = e.OutputValue;
            ampB.Output += (s, e) => outputValue = e.OutputValue;
            ampC.Output += (s, e) => outputValue = e.OutputValue;
            ampD.Output += (s, e) => outputValue = e.OutputValue;
            ampE.Output += (s, e) => outputValue = e.OutputValue;

            ampA.AddInput(phase[0]);
            ampB.AddInput(phase[1]);
            ampC.AddInput(phase[2]);
            ampD.AddInput(phase[3]);
            ampE.AddInput(phase[4]);

            while (true)
            {
                ampA.AddInput(outputValue);
                ampA.Run();

                ampB.AddInput(outputValue);
                ampB.Run();

                ampC.AddInput(outputValue);
                ampC.Run();

                ampD.AddInput(outputValue);
                ampD.Run();

                ampE.AddInput(outputValue);
                ampE.Run();
                if (ampE.State == IntCodeState.Finished)
                {
                    break;
                }
            }

            if (outputValue > answer)
            {
                answer = outputValue;
            }
        }

        return(Helper.GetPuzzleResultText($"Highest signal that can be sent to the thrusters: {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #7
0
    InputAnswer GetPuzzleData(int part, string name)
    {
        var result = new InputAnswer(
            InputHelper.LoadInputFile(DAY, name).ToList(),
            InputHelper.LoadAnswerFile(DAY, part, name)?.FirstOrDefault()?.ToInt32()
            );

        return(result);
    }
Example #8
0
    void Start()
    {
        inputAnswerScript = FindObjectOfType <InputAnswer>();
        multiChoiceScript = FindObjectOfType <MultiChoice>();

        inputAnswerScript.SetAnswer(answer);                //feed into input field answer script

        multiChoiceScript.SetAnswers(answers, answerIndex); //feed into multiple choice answer script
    }
Example #9
0
    InputAnswer GetPuzzleData(int part, string name)
    {
        var result = new InputAnswer()
        {
            Input          = InputHelper.LoadInputFile(DAY, name).ToList(),
            ExpectedAnswer = InputHelper.LoadAnswerFile(DAY, part, name)?.FirstOrDefault()?.ToInt64()
        };

        return(result);
    }
 public InputModulePlayMode()
 {
     pathCapacity = 128;
     path         = new Vector3[pathCapacity];
     for (int i = 0; i < path.Length; i++)
     {
         path[i] = new Vector3(0, 0, 0);
     }
     inputAnswer = new InputAnswer();
 }
Example #11
0
    string RunPart1(InputAnswer puzzleData)
    {
        var phase = 0;

        var signal    = puzzleData.Input.Select(c => c.ToString().ToInt32()).ToList();
        var maxDigits = signal.Count;

        Debug("Input Signal: " + ListToString(signal));
        Debug("");

        var line = new StringBuilder();

        while (phase < 100)
        {
            phase++;

            var newSignal = new List <int>();
            for (var i = 0; i < maxDigits; i++)
            {
                line.Clear();
                var newSignalLine = signal.ToList();
                var dupCount      = i + 1;
                var total         = 0;
                for (var j = 0; j < maxDigits; j++)
                {
                    var val = GetPatternDigit(dupCount, j);

                    var tmp = $"{newSignalLine[j]}*{val}";
                    line.Append($"{tmp,-5}");
                    if (j + 1 < maxDigits)
                    {
                        line.Append(" + ");
                    }
                    newSignalLine[j] *= val;
                    total            += newSignalLine[j];
                }
                total = Helper.GetDigitRight(Math.Abs(total), 1);
                line.Append($" = {total}");

                newSignal.Add(total);

                Debug(line.ToString());
            }

            signal = newSignal;

            Debug("");
            Debug($"After {phase} Phase: {ListToString(signal)}");
            Debug("");
        }

        var result = ListToString(signal.Take(8).ToList());

        return(Helper.GetPuzzleResultText($"first 8 digits after {phase} phases : {result}", result, puzzleData.ExpectedAnswer));
    }
Example #12
0
    string RunPart2(InputAnswer puzzleData)
    {
        var origin = new Point(0, 0);

        var intersctions = FindIntersectionsWithDistance(puzzleData.Wire1, puzzleData.Wire2)
                           .Where(p => p.IntersectPoint != origin);

        var minDist = intersctions.Select(p => p.Distance).Min();

        return(Helper.GetPuzzleResultText($"The fewest combined steps is: {minDist}", minDist, puzzleData.ExpectedAnswer));
    }
Example #13
0
    string RunPart2(InputAnswer puzzleData)
    {
        var meToCommonCOM   = GetPathToUniversalCOM(puzzleData.UniqueBodies["YOU"].Orbits).ToList();
        var destToCommonCOM = GetPathToUniversalCOM(puzzleData.UniqueBodies["SAN"].Orbits).ToList();

        RemoveSharedCOMs(meToCommonCOM, destToCommonCOM);

        var result = meToCommonCOM.Count + destToCommonCOM.Count;

        return(Helper.GetPuzzleResultText($"The minimum # of orbit transfers required: {result}", result, puzzleData.ExpectedAnswer));
    }
Example #14
0
    string RunPart1(InputAnswer puzzleData)
    {
        Log.Clear();
        var reactions    = BuildReactionChains(puzzleData.Input);
        var orderedChems = SetTopologicalOrder(reactions);

        var oreNeeded = CalcOreNeeded_Topological(FUEL, 1, reactions, orderedChems);

        Log.AppendLine(Helper.GetPuzzleResultText($"Minimum amount of ORE needed for 1 Fuel: {oreNeeded}", oreNeeded, puzzleData.ExpectedAnswer));
        return(Log.ToString().Trim());
    }
Example #15
0
    string RunPart1(InputAnswer puzzleData)
    {
        var origin = new Point(0, 0);

        var intersctions = FindIntersections(puzzleData.Wire1, puzzleData.Wire2)
                           .Where(p => p != origin);

        var answer = intersctions.Select(p => CalcManhattenDistance(origin, p)).Min();

        return(Helper.GetPuzzleResultText($"Closest distance: {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #16
0
    string RunTestCase(InputAnswer puzzleData)
    {
        var outputBuffer = new List <long>();
        var computer     = new IntCode(puzzleData.Code);

        computer.Output += (s, e) => outputBuffer.Add(e.OutputValue);

        computer.Run();

        var answer = string.Join(',', outputBuffer);

        return(Helper.GetPuzzleResultText($"Output: {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #17
0
    string RunBOOST(InputAnswer puzzleData, long initalInput)
    {
        var answer = default(string);

        var computer = new IntCode(puzzleData.Code);

        computer.Output += (s, e) => answer = e.OutputValue.ToString();

        computer.AddInput(initalInput);
        computer.Run();

        return(Helper.GetPuzzleResultText($"BOOST key-code: {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #18
0
    string RunPart2(InputAnswer puzzleData)
    {
        var originalState = puzzleData.Bodies.Select(b => b.GetCopy()).ToList();

        var xCount = 0L;
        var yCount = 0L;
        var zCount = 0L;

        CountSteps(puzzleData.Bodies, originalState, ref xCount, ref yCount, ref zCount);

        var result = Helper.FindLeastCommonMultiple(
            xCount,
            Helper.FindLeastCommonMultiple(yCount, zCount));

        return(Helper.GetPuzzleResultText($"Number of steps to return to original state: {result}", result, puzzleData.ExpectedAnswer));
    }
Example #19
0
    string RunPart1(InputAnswer puzzleData)
    {
        TileGrid.Clear();
        var arcade = new IntCode(puzzleData.Code);

        arcade.Output += ArcadeOutput;

        arcade.Run();

        // var grid = DisplayHelper.DrawPointGrid2D(TileGrid, DrawGridTitle);
        // Console.WriteLine(grid);

        var result = TileGrid.Values.Where(v => v == TileType.Brick).Count();

        return(Helper.GetPuzzleResultText($"Number of block tiles are on the screen: {result}", result, puzzleData.ExpectedAnswer));
    }
Example #20
0
    string RunPart2(InputAnswer puzzleData)
    {
        var answer   = 0L;
        var computer = new IntCode(puzzleData.Code);

        computer.Output += (s, e) => { answer = e.OutputValue; };

        computer.Run();
        if (computer.State == IntCodeState.NeedsInput)
        {
            computer.AddInput(5);
            computer.Run();
        }

        return(Helper.GetPuzzleResultText($"The diagnostic Code is: {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #21
0
    string RunPart1(InputAnswer puzzleData)
    {
        var phaseValues = new long[] { 0, 1, 2, 3, 4 };
        var answer      = 0L;

        foreach (var phase in GetPhases(phaseValues, puzzleData.Phase))
        {
            var ampA = new IntCode(puzzleData.Code);
            var ampB = new IntCode(puzzleData.Code);
            var ampC = new IntCode(puzzleData.Code);
            var ampD = new IntCode(puzzleData.Code);
            var ampE = new IntCode(puzzleData.Code);

            var outputValue = 0L;

            ampA.Output += (s, e) => outputValue = e.OutputValue;
            ampB.Output += (s, e) => outputValue = e.OutputValue;
            ampC.Output += (s, e) => outputValue = e.OutputValue;
            ampD.Output += (s, e) => outputValue = e.OutputValue;
            ampE.Output += (s, e) => outputValue = e.OutputValue;

            ampA.AddInput(phase[0], outputValue);
            ampA.Run();

            ampB.AddInput(phase[1], outputValue);
            ampB.Run();

            ampC.AddInput(phase[2], outputValue);
            ampC.Run();

            ampD.AddInput(phase[3], outputValue);
            ampD.Run();

            ampE.AddInput(phase[4], outputValue);
            ampE.Run();

            if (outputValue > answer)
            {
                answer = outputValue;
            }
        }

        return(Helper.GetPuzzleResultText($"Highest signal that can be sent to the thrusters: {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #22
0
 public void LaunchAction(InputAnswer _inputAnswer)
 {
     if (_inputAnswer.isSingleClicked)
     {
         float _clickDistanceToPlayerPosition = Vector2.Distance(_inputAnswer.singleClickPosition, transform.position);
         if (_clickDistanceToPlayerPosition < 0.5f)
         {
             ForceObjectsManager.LaunchDefender(this);
         }
         else
         {
             ForceObjectsManager.LaunchExploder(_inputAnswer.singleClickPosition);
         }
     }
     else if (_inputAnswer.isPathRecorded)
     {
         ForceObjectsManager.LaunchImploder(_inputAnswer.path);
     }
 }
Example #23
0
    string RunPart2(InputAnswer puzzleData)
    {
        Rules.Clear();
        Rules.Add(Rule_IsSixDigits);
        Rules.Add(Rule_OnlyTwoAdjacentDigitsAreTheSame);
        Rules.Add(Rule_LeftToRightDigitValueNeverDecreases);

        var numValidPasswords = 0;

        for (var password = puzzleData.PasswordRangeMin; password <= puzzleData.PasswordRangeMax; password++)
        {
            if (IsPasswordValid(password))
            {
                numValidPasswords++;
            }
        }

        return(Helper.GetPuzzleResultText($"Number of valid passwords: {numValidPasswords}", numValidPasswords, puzzleData.ExpectedAnswer));
    }
Example #24
0
    string RunPart1(InputAnswer puzzleData, int numOfSteps)
    {
        // Console.WriteLine($"After {0} steps:");
        // input.ForEach(ShowBodyInfo);
        // Console.WriteLine();

        for (var step = 1; step <= numOfSteps; step++)
        {
            puzzleData.Bodies.ForEach(b => ApplyGravity(b, puzzleData.Bodies));
            puzzleData.Bodies.ForEach(ApplyVelocity);

            // Console.WriteLine($"After {step} steps:");
            // input.ForEach(ShowBodyInfo);
            // Console.WriteLine();
        }

        var result = puzzleData.Bodies.Sum(b => b.TotalEnergy);

        return(Helper.GetPuzzleResultText($"Total Energy: {result}", result, puzzleData.ExpectedAnswer));
    }
Example #25
0
    string RunPart1(InputAnswer puzzleData, long inputValue, long?overrideExpectedAnswer = null)
    {
        if (overrideExpectedAnswer.HasValue)
        {
            puzzleData.ExpectedAnswer = overrideExpectedAnswer.Value;
        }

        var answer   = 0L;
        var computer = new IntCode(puzzleData.Code);

        computer.Output += (s, e) => { answer = e.OutputValue; };

        computer.Run();
        if (computer.State == IntCodeState.NeedsInput)
        {
            computer.AddInput(inputValue);
            computer.Run();
        }

        return(Helper.GetPuzzleResultText($"The diagnostic Code is: {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #26
0
    string RunPart2(InputAnswer puzzleData)
    {
        Log.Clear();
        var reactions    = BuildReactionChains(puzzleData.Input);
        var orderedChems = SetTopologicalOrder(reactions);

        var fuelProduced = 1L;
        var args         = (reactions, orderedChems);

        (var estimations, _)  = EstimateFuelProduced(reactions, TRILLION_ORE, orderedChems);
        (long result, long i) = Bisect(f, TRILLION_ORE, estimations, args);

        long f(long x, IDictionary <string, ChemReaction> reactions, List <string> orderedChems)
        {
            var ore = CalcOreNeeded_Topological(FUEL, x, reactions, orderedChems.ToList());

            return(ore);
        }

        fuelProduced = result;

        Log.AppendLine(Helper.GetPuzzleResultText($"Maximum Fuel Produced: {fuelProduced}", fuelProduced, puzzleData.ExpectedAnswer));
        return(Log.ToString().Trim());
    }
Example #27
0
 public void PreformUIMode(InputAnswer _inputAnswer)
 {
 }
Example #28
0
    string RunPart2(InputAnswer puzzleData)
    {
        var answer = puzzleData.Input.Sum(CalcTotalFuel);

        return(Helper.GetPuzzleResultText($"Total Fuel needed: {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #29
0
    string RunPart2(InputAnswer puzzleData)
    {
        var answer = FindNounVerb(puzzleData.Code, 19690720);

        return(Helper.GetPuzzleResultText($"Noun-Verb pair is : {answer}", answer, puzzleData.ExpectedAnswer));
    }
Example #30
0
    string RunPart1(InputAnswer puzzleData)
    {
        var result = CountAllOrbits(puzzleData.UniqueBodies);

        return(Helper.GetPuzzleResultText($"The total number of Direct and Indirect orbits: {result}", result, puzzleData.ExpectedAnswer));
    }