Code challenge from lantmateriet.se

Yesterday I found a code challenge on http://www.lantmateriet.se/knackkoden that I decide to take a look on. We first need to decode the base 64 encoded text to get the actual instructions.

Problem
Gör ett program som skriver ut talen i mängden {1, 2, …, 10500} i stigande ordning.
Om talet är jämnt delbart med 3 så ska www. skrivas ut istället för själva talet.
Om talet är jämnt delbart med 5 så ska lantmateriet skrivas ut istället för själva talet.
Om talet är jämnt delbart med 7 så ska .se skrivas ut istället för själva talet.
Om talet är jämnt delbart med 3, 5 och 7 så ska www.lantmateriet.se skrivas ut istället för själva talet.
Inga nyradstecken ska skrivas ut, utan allt ska skrivas ut på en och samma rad.
Utskriften inleds enligt nedan:
1 2 www. (och så vidare…)
Inget mellanrum som sista tecken.
MD5-summan av utskriften är 402087a86f4fbd5d01d80baec13fddc5
Men vad är SHA-1-summan?

Solution
Anyone that can come up with another or better solution?

public static void Main()
{
    const int NumberOfIterations = 10500;
    var sb = new StringBuilder();
    for (var i = 1; i <= NumberOfIterations; i++)
    {
        if (i % 3 != 0 && i % 5 != 0 && i % 7 != 0)
        {
            sb.Append(i + " ");
            continue;
        }
 
        if (i % 3 == 0 && i % 5 == 0 && i % 7 == 0)
        {
            sb.Append("www.lantmateriet.se ");
            continue;
        }
 
        if (i % 3 == 0)
        {
            sb.Append("www. ");
        }
        else if (i % 5 == 0)
        {
            sb.Append("lantmateriet ");
        }
        else if (i % 7 == 0)
        {
            sb.Append(".se ");
        }
    }
 
    var resultString = sb.ToString().TrimEnd();
    if ("402087a86f4fbd5d01d80baec13fddc5" != GetMD5HashData(resultString, Encoding.UTF8))
    {
        Console.WriteLine("Error missmatch MD5 hash");
        return;
    }
 
    Console.WriteLine("The SHA1 hash is:" + GetSHA1HashData(resultString, Encoding.UTF8));
}

You can download the complete solution here: LantmaterietKnackkoden

0.00 avg. rating (0% score) - 0 votes

About Peter Wibeck

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

*