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.
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); } }
Remember Me
a@href@title, b, em, i, strike, strong
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.