Showing posts with label C#. Show all posts
Showing posts with label C#. Show all posts

Largest product in a grid

In the 20×20 grid below, four numbers along a diagonal line have been marked in red.

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48

The product of these numbers is 26 × 63 × 78 × 14 = 1788696.

What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?

Solution :

void Solution()
        {
            int row = 20, col = 20;
            int[,] matrix = new int[,] {{08,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,08},
                                        {49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00},
                                        {81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65},
                                        {52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91},
                                        {22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80},
                                        {24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50},
                                        {32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70},
                                        {67,26,20,68,02,62,12,20,95,63,94,39,63,08,40,91,66,49,94,21},
                                        {24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72},
                                        {21,36,23,09,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95},
                                        {78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,09,53,56,92},
                                        {16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57},
                                        {86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58},
                                        {19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40},
                                        {04,52,08,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66},
                                        {88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69},
                                        {04,42,16,73,38,25,39,11,24,94,72,18,08,46,29,32,40,62,76,36},
                                        {20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16},
                                        {20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54},
                                        {01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48}};

            int prod = 1;
            int maxProd = 1;
            int maxAjd = 4;

            //Scanning RowWise Horizontally
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < col - maxAjd + 1; j++)
                {
                    for (int k = 0; k < maxAjd; k++)
                    {
                        prod = prod * matrix[i, j + k];
                    }
                    if (maxProd < prod)
                        maxProd = prod;
                    prod = 1;
                }
            }

            //Scanning ColumnWise Vertically
            for (int i = 0; i < row - maxAjd + 1; i++)
            {
                for (int j = 0; j < col; j++)
                {
                    for (int k = 0; k < maxAjd; k++)
                    {
                        prod = prod * matrix[j, i + k];
                    }
                    if (maxProd < prod)
                        maxProd = prod;
                    prod = 1;
                }
            }

            //Scanning Backward Diagonally
            for (int i = 0; i < row - maxAjd + 1; i++)
            {
                for (int j = 0; j < col - maxAjd + 1; j++)
                {
                    for (int k = 0; k < maxAjd; k++)
                    {
                        prod = prod * matrix[i + k, j + k];
                    }
                    if (maxProd < prod)
                        maxProd = prod;
                    prod = 1;
                }
            }

            //Scanning Forward Diagonally
            for (int i = 0; i < row - maxAjd; i++)
            {
                for (int j = maxAjd - 1; j < col; j++)
                {
                    for (int k = 0; k < maxAjd; k++)
                    {
                        prod = prod * matrix[i + k, j - k];
                    }
                    if (maxProd < prod)
                        maxProd = prod;
                    prod = 1;
                }
            }
        }

File compression using C#.Net

Follow 3 simple steps:

1. Add a new .cs file in your project and add the below namespaces.

using System.IO;
using System.IO.Compression;

2. Add the below code; use this function for compressing the file.

static void CompressFile(string inFileName, string outFileName)
{
     FileStream sourceFile = File.Open(inFileName, FileMode.Open);
     FileStream destFilename = File.Open(outFileName, FileMode.Create);

     GZipStream compStream = new GZipStream(destFilename, CompressionMode.Compress);
            
     Byte[] buffer = new Byte[1024*1024];
     int tempByte = sourceFile.Read(buffer,0,buffer.Length);
     while (tempByte > 0)
     {                
          compStream.Write(buffer, 0, buffer.Length);
          tempByte = sourceFile.Read(buffer, 0, buffer.Length);
     }
     compStream.Close();
     destFilename.Close();
     sourceFile.Close();
}


3. Add the below code; use this function for uncompressing the file.

static void UnCompressFile(string inFileName, string outFileName)
{
     FileStream sourceFile = File.Open(inFileName, FileMode.Open);
     FileStream destFilename = File.Open(outFileName, FileMode.Create);

     GZipStream compStream = new GZipStream(destFilename, CompressionMode.Decompress);
            
     int tempByte = compStream.ReadByte();
     while (tempByte != -1)
     {    destFilename.WriteByte((Byte)tempByte);
          tempByte = compStream.ReadByte();
     }
     compStream.Close();
     destFilename.Close();
     sourceFile.Close();
}

Programming Superstars

This blog is dedicated to our "Programming Heroes" who have lead the evolution of Information Technology, programming languages and libraries in such a way that these have become the real I.T. game changers.

While these technological evolution and revolutions are endless process, we must thank to those who always took initiatives to take the current development technologies to a next level.

Here is a list of some:

1. Anders Hejlsberg

Image Source : Wikipedia.com

Creator and Lead architect of C# language and core developer on TypeScript.



Top Video

2. James Arthur Gosling

Image Source : Wikipedia.com

Creator of Java programming language and best known as the father of the Java programming language.



Top Video

3. John Resig

Image Source : Wikipedia.com

Creator and Lead developer of JQuery.



Top Video

4. Ryan Dahl

Image Source : Google.com

Creator of NodeJs - An open-source, cross-platform JavaScript runtime environment for developing a diverse variety of tools and applications.



Top Video

5. Terence Parr

Image Source : Google.com

Creator of ANTLR (ANother Tool for Language Recognition).



Top Video

6. Jared Hanson

Image Source : Twitter.com

Creator of PassportJS - Passport is authentication middleware for Node.js.



Top Video

7. Guido van Rossum

Image Source : Wikipedia.com

Van Rossum is Python's principal author, and his continuing central role in deciding the direction of Python is reflected in the title given to him by the Python community, benevolent dictator for life (BDFL).



Top Video


We will be adding more stars to the sky...:)