 # Advent of Code 2021 – Day 2 Photo by Any Lane from Pexels

I’m participating in the Advent of Code 2021. Here’s my solution for Day 2, Puzzle 1 – Dive!

## Problem

Puzzle 1 today involves following a series of commands that will take you forward, up or down. Each line of input is a command, followed by a number in the form of :

``forward 10``

## Solution

All my solutions are written in C#. You can find all my solutions in my Git repo.

For this solution, we’ll iterate through the input rows one at a time, splitting the command and value and then incrementing/decrementing the related tracking variable for forward or depth by the appropriate amount. I went ahead and used the if/else pattern, but this could easily have been a switch function as well.

``````Console.WriteLine("Advent of Code 2021");
Console.WriteLine("Day 2 - Dive");
//Solution logic goes here
int depth = 0, forward = 0;
for (int i = 0; i < lines.Length; i++)
{
///parse the command and adjust the appropriate tracking variable
var cmd = lines[i].Split(' ');
if (cmd == "forward")
{
forward+=int.Parse(cmd);
}
else if (cmd == "down")
{
depth+=int.Parse(cmd);
}
else
{
depth -= int.Parse(cmd);
}
}
//Write out the solution
Console.WriteLine(\$"Forward: {forward}");
Console.WriteLine(\$"Depth: {depth}");
Console.WriteLine(\$"Product: {forward * depth}");
//Stop and wait for enter before exiting

## Part 2

Puzzle 2 today involves reworking the commands from puzzle 1 to instead interpret the up/down to be an aiming value. And when you move forward, it also adjusts depth based on that aim (depth adjusted by forward * current aim).

### Solution

All my solutions are written in C#. You can find all my solutions in my Git repo.

This solution is almost identical to puzzle 1 from today. We’ll add an aim variable. When we get an up/down command, we’ll adjust aim instead of depth. And when we get a forward command, we’ll adjust depth by forward*aim.

``````Console.WriteLine("Advent of Code 2021");
//Solution logic goes here
int depth = 0, forward = 0, aim=0;
for (int i = 0; i < lines.Length; i++)
{
///parse the command and adjust the appropriate tracking variable
var cmd = lines[i].Split(' ');
if (cmd == "forward")
{
var x= int.Parse(cmd);
forward += x;
depth += x * aim;
}
else if (cmd == "down")
{
aim += int.Parse(cmd);
}
else
{
aim -= int.Parse(cmd);
}
}
//Write out the solution
Console.WriteLine(\$"Forward: {forward}");
Console.WriteLine(\$"Depth: {depth}");
Console.WriteLine(\$"Product: {forward * depth}");
//Stop and wait for enter before exiting