using System.Collections.Generic;
namespace InternshipSpring2019
public static class Exercises
public static IEnumerable <Tuple<int, int, int>> FindPythagoreans(List<int> elements)
var result = new Tuple<int,int,int>[100];
IEnumerable<Tuple<int,int,int>> empty = Enumerable.Empty<Tuple<int,int,int>>();
while (i < elements.Count-1) {
while (j < elements.Count) {
if (Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2)) != (int)Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2)))
int c = (int)Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));
result[k] = Tuple.Create(i, j, elements.FindIndex(x=>x==c));
var result1 = new Tuple<int, int, int>[k];
public static string Encrypt(string message, string key)
if (message.Length % n == 0)
m = message.Length / n + 1;
char [,] matrix = new char[m, n];
for (int i = 0; i < n; i++)
var result =key.Select(x => x == key[i] ? key[j] : (x == key[j] ? key[i] : x)).ToArray();
key = new string(result);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (loc == message.Length)
matrix[i, j] = message[loc];
for (int i = 0; i < n - 1; i++)
for (int j = i; j < n; j++)
for (int k = 0; k < m; k++)
char aux1 = matrix[k, i];
matrix[k, i] = matrix[k, j];
string final_result = null;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
final_result = final_result + matrix[i, j];
public class StudentRankingsPrinter
public StudentRankingsPrinter()
public string PrintRankings(IEnumerable<Student> students)
Student[] array = students.Cast<Student>().ToArray();
double[] medie = new double[array.Length];
for (int i = 0; i < array.Length; i++)
medie[i] = array[i].Medie();
for(int i=0;i<array.Length-1;i++)
for(int j=i;j<array.Length;j++)
rank = "Rank#Name#Average"+'\n'+ "####################"+'\n';
rank = rank + 1.ToString() + "#" + array[0].FirstName + " - " + array[0].LastName + "#";
if (medie[0] >= 5 && medie[0] < 7)
if (medie[0] >= 7 && medie[0] < 8)
if (medie[0] >= 8 && medie[0] < 9)
if (medie[0] >= 9 && medie[0] < 10)
for (int i =array.Length-1;i>=1 ; i--)
rank = rank + i.ToString() + "#" + array[i].FirstName + " - " + array[i].LastName + "#";
rank = rank + "F" + '\n';
if (medie[i] >= 5 && medie[i] < 7)
rank = rank + "D" + '\n';
if (medie[i] >= 7 && medie[i] < 8)
rank = rank + "C" + '\n';
if (medie[i] >= 8 && medie[i] < 9)
rank = rank + "B" + '\n';
if (medie[i] >= 9 && medie[i] < 10)
rank = rank + "A" + '\n';
rank = rank + array.Length.ToString() + "#" + array[0].FirstName + " - " + array[0].LastName + "#";
if (medie[0] >= 5 && medie[0] < 7)
if (medie[0] >= 7 && medie[0] < 8)
if (medie[0] >= 8 && medie[0] < 9)
if (medie[0] >= 9 && medie[0] < 10)
public Student(string firstName, string lastName, double[] grades)
for (int i = 0; i < Grades.Length; i++)
return s / (double)Grades.Length;
public static void Main(string[] args)
ExerciseForFindPythagoreansWhenNone(new List<int>{1, 3});
ExerciseForFindPythagoreans(new List<int>{1, 3, 4, 5, 12, 17, 13}, new[]{Tuple.Create(1, 2, 3), Tuple.Create(3, 4, 6)});
ExerciseEncrypt("secretinformation", "crazy", "ecserintofmaritn o ");
ExerciseEncrypt("abcd", "abc", "abcd ");
ExerciseEncrypt("1234567890", "ba", "2143658709");
ExerciseEncrypt("key", "key", "eky");
ExercisePrintRanking(new[]{new Exercises.Student("Bob", "Ross", new[]{6.0, 8.0, 10.0})}, "Rank#Name#Average\n####################\n1#Bob - Ross#B");
ExercisePrintRanking(new[]{new Exercises.Student("Bob", "Ross", new[]{7.0, 6.0, 8.5, 8.0}), new Exercises.Student("Rob", "Boss", new[]{9.0, 8.0})}, "Rank#Name#Average\n####################\n1#Rob - Boss#B\n2#Bob - Ross#C");
Console.WriteLine("Well done!");
private static void ExerciseForFindPythagoreans(List<int> elements, Tuple<int, int, int>[] expectedAnyOf)
var result = Exercises.FindPythagoreans(elements);
foreach (var pythagorean in result)
var containsResult = expectedAnyOf.Any(c => pythagorean.Item1 + pythagorean.Item2 + pythagorean.Item3 == c.Item1 + c.Item2 + c.Item3);
Assert.True(containsResult, string.Format("The pair {0}, {1}, {2} does not match the criteria", pythagorean.Item1, pythagorean.Item2, pythagorean.Item3));
private static void ExerciseForFindPythagoreansWhenNone(List<int> elements)
var result = Exercises.FindPythagoreans(elements);
private static void ExerciseEncrypt(string message, string key, string expected)
var encrypted = Exercises.Encrypt(message, key);
Assert.Equal(expected, encrypted);
private static void ExercisePrintRanking(IEnumerable<Exercises.Student> students, string expected)
var printer = new Exercises.StudentRankingsPrinter();
var rankings = printer.PrintRankings(students);
Assert.Equal(expected, rankings);