# Advent of Code - Year 2015, Day 01

Problem statement: http://adventofcode.com/2015/day/1

### Part A

Part A simply requires counting the number of `(`

and `)`

and evaluating the difference. This can even be done with a basic text editor.

### Part B

Having to identify the character at which the elevator first moves to the basement requires connecting the current elevator position at each character with the character index. A simple `for`

loop is the best way to track both data points simultaneously.

### C#

source

If I was just doing part A, I would probably use a `.GroupBy()`

to split the characters and subtract the counts. Re-doing this in C# 7 allows the use of tuples, which makes the for loop a bit cleaner

### F#

##### First Draft

source

This is my first real interaction with F#. I'm probably not using it correctly, since I'm using mutable variables and iterative code. I know F# is geared more towards pure functions, but I don't yet know enough about how to use F# to be able to write this better for F# standards.

##### Second Draft

source

Apparently F# provides `Seq.scan`

, which provides running total values, which is exactly what I really wanted. The resulting list starts with `0`

and contains the elevator level at each character. Reversing the list and taking the first value gives the final level, and finding the index of first `-1`

value gives the position at which the elevator first goes to the basement. Since the list is prefixed with the initial `0`

level, the index is 1-based instead of 0-based, which gives us the answer we need.