using System.Collections.Generic;
public static void Main()
Console.WriteLine("Exercise 1 - For the purpose of this exercise we ignore types based on angles, which require complex sin and cos computations.");
Console.WriteLine("Test Dimensions (3,3,3): " + GetTriangleType(3, 3, 3));
Console.WriteLine("Test Dimensions (3,2,3): " + GetTriangleType(3, 2, 3));
Console.WriteLine("Test Dimensions (3,2,1): " + GetTriangleType(3, 2, 1));
Console.WriteLine("=====");
Console.WriteLine("Exercise 2");
var str = "Test String 1";
Console.WriteLine(str + " : " + ReverseSentence(str));
str = "! Test Str!ng5 2";
Console.WriteLine(str + " : " + ReverseSentence(str));
Console.WriteLine("=====");
Console.WriteLine("Exercise 3 - By definition, either index-based structures or doubly linked lists would allow constant instead of linear retrieval.");
Program prog = new Program();
var list = new CustomList();
Console.WriteLine(list.GetNthElementFromBack(5));
Console.WriteLine(list.GetNthElementFromBack(5));
public static TriangleType GetTriangleType(int a, int b, int c)
if (a < 1 || b < 1 || c < 1)
throw new InvalidOperationException("Invalid Parameters Given");
return TriangleType.Equilateral;
if (arr[0] == arr[1] || arr[1] == arr[2])
return TriangleType.Iscosceles;
return TriangleType.Scalene;
public static string ReverseSentence(string input)
var arr = input.ToCharArray();
public CustomNode(int val)
public void Push(int value)
var node = new CustomNode(value);
public int GetNthElementFromBack(int n)
var itemIndex = Count - n;
throw new InvalidOperationException("Invalid Parameters");
while (counter < itemIndex)