using System.Collections.Generic;
namespace MaxcodeInternshipSpring2018
public static class Exercises
public static Tuple<int, int> FindForSum(List<int> elements, int sum)
return Tuple.Create(0, 0);
public static int IndexOfLongestRun(string source)
public class MaxcodeStack
public void Push(Maxcoder maxcoder)
public Maxcoder(string name)
if (string.IsNullOrEmpty(name))
throw new ArgumentNullException("name");
public string Name { get; private set; }
public static void Main(string[] args)
ExerciseFindForSum(new List<int> { 1, 3, 5, 7, 9 }, 12, new[]
ExerciseIndexOfLongestRun("abbcccddddcccbba", 6);
Console.WriteLine("Well done!");
private static void ExerciseFindForSum(List<int> elements, int sum, Tuple<int, int>[] expectedAnyOf)
var result = Exercises.FindForSum(elements, sum);
var containsResult = expectedAnyOf.Any(
c => c.Item1 == result.Item1 && c.Item2 == result.Item2
|| c.Item1 == result.Item2 && c.Item2 == result.Item1);
Assert.True(containsResult, "The pair " + result.Item1 + ", " + result.Item2 + " does not " +
private static void ExerciseIndexOfLongestRun(string source, int expectedIndex)
var result = Exercises.IndexOfLongestRun(source);
Assert.Equal(expectedIndex, result);
private static void ExerciseMaxcodeStack()
var stack = new Exercises.MaxcodeStack();
var you = new Exercises.MaxcodeStack.Maxcoder("Your name");
var me = new Exercises.MaxcodeStack.Maxcoder("My name");
Assert.Equal(1, stack.Count);
Assert.Equal(2, stack.Count);
var popedMaxcoder1 = stack.Pop();
Assert.Equal("My name", popedMaxcoder1.Name);
Assert.Equal(1, stack.Count);
var popedMaxcoder2 = stack.Pop();
Assert.Equal("Your name", popedMaxcoder2.Name);
Assert.Equal(0, stack.Count);