using System.Collections.Generic;
using System.Threading.Tasks;
static void Main(string[] args)
var passwordCharacters = new List<Tuple<int, char>>();
var httpClient = new HttpClient();
var endpointUrl = "https://enigmatic-plains-7414.herokuapp.com";
var resultStream = httpClient.GetStreamAsync(endpointUrl).Result;
using (var streamReader = new StreamReader(resultStream, Encoding.UTF8))
var lineAccumulator = new List<string>();
while (!streamReader.EndOfStream)
var buffer = streamReader.ReadLine();
lineAccumulator.Add(buffer);
if (String.IsNullOrWhiteSpace(buffer))
var passwordCharacter = ProcessPasswordCharacterChunk(lineAccumulator);
passwordCharacters.Add(passwordCharacter);
var password = new String(passwordCharacters.OrderBy(x => x.Item1).Select(x => x.Item2).ToArray());
Console.WriteLine(password);
private static Tuple<int,char> ProcessPasswordCharacterChunk(List<string> accumulator)
var indexOfPasswordCharacter = Int32.Parse(accumulator[0]);
var trimmedCoordinates = accumulator[1].TrimStart('[').TrimEnd(']');
var yCoord = Int32.Parse(trimmedCoordinates.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0].Trim());
var xCoord = Int32.Parse(trimmedCoordinates.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)[1].Trim());
var passwordChar = accumulator[accumulator.Count() - xCoord - 2][yCoord];
return new Tuple<int, char>(indexOfPasswordCharacter, passwordChar);