Har kikket litt på Project Euler, god måte å få litt hjernetrim på. Særlig om en ikke jobber med avanserte algoritmer til daglig. Et eksempel på hvilke oppgaver du kan møte på er problem 4:
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91
99.
Find the largest palindrome made from the product of two 3-digit numbers.
Da jeg ikke er smart nok til å skrive superintrikate algoritmer i assembly/perl/f# osv så blir det god gammeldags "brute forcing" i C#. Koden er ikke utpreget elegangt, eneste fancy er at den benytter seg av Extension methods for å utvide funksjonaliteten til string.
Vurderer å løse denne pånytt med Linq, bare for å teste hvordan det blir. Sånn som det er nå, føles det ikke som sexy kode.
public class Problem4
{
int highest = 0;
public int Calculate()
{
for (int i = 999; i > 0 ; i--)
{
for (int j = 999; j > 0; j--)
{
int sum = i * j;
if (sum > highest)
{
if (IsPalindrome(sum))
highest = sum;
}
else
break;
}
}
return highest;
}
private bool IsPalindrome(int number)
{
string numb = number.ToString();
if (numb == numb.Reverse())
return true;
return false;
}
}
public static class Extensions
{
public static string Reverse(this string s)
{
char[] ch = s.ToCharArray();
Array.Reverse(ch);
return new String(ch);
}
}