Popular Posts

Tuesday, February 17, 2015

Largest Product of Four Numbers in Grid

The other day I came across Project Euler and find it interesting especially it's Problem 11

Problem Statement:

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:

Here is what I come up in two hours , this definitely can be improved more but I am now done, you are welcomed to improve it :-0)

1:  /**  
2:   * Created by Waqas on 1/14/2015.  
3:   */  
4:  public class Problem_Eleven {  
5:    
6:    public static void main(String [] args){  
7:    
8:      int numbersArray [][] = readNumberArray();  
9:      int largestProductOfFourAdjNumbers = 0;  
10:      int actualNumbers[] = new int[4];  
11:      boolean isDiagonal = false;  
12:    
13:      for(int i = 0; i < 20; i++){  
14:        for(int j = 0; j < 17; j++){  
15:          int product = getProductOfFourNumbers(numbersArray[i][j], numbersArray[i][j + 1], numbersArray[i][j + 2], numbersArray[i][j + 3]);  
16:    
17:          if(largestProduct(product, largestProductOfFourAdjNumbers))  
18:          {  
19:            largestProductOfFourAdjNumbers = product;  
20:    
21:            actualNumbers[0] = numbersArray[i][j];  
22:            actualNumbers[1] = numbersArray[i][j + 1];  
23:            actualNumbers[2] = numbersArray[i][j + 2];  
24:            actualNumbers[3] = numbersArray[i][j + 3];  
25:    
26:            isDiagonal = false;  
27:          }  
28:        }  
29:      }  
30:    
31:      for(int i = 0; i < 17; i ++){  
32:        for(int j = 0; j < 20; j++){  
33:          int product = getProductOfFourNumbers(numbersArray[i][j], numbersArray[i + 1][j], numbersArray[i + 2][j], numbersArray[i + 3][j]);  
34:    
35:          if(largestProduct(product, largestProductOfFourAdjNumbers))  
36:          {  
37:            largestProductOfFourAdjNumbers = product;  
38:    
39:            actualNumbers[0] = numbersArray[i][j];  
40:            actualNumbers[1] = numbersArray[i + 1][j];  
41:            actualNumbers[2] = numbersArray[i + 2][j];  
42:            actualNumbers[3] = numbersArray[i + 3][j];  
43:    
44:            isDiagonal = false;  
45:          }  
46:        }  
47:      }  
48:    
49:      for(int i = 0; i < 17; i++){  
50:        for(int j = 0; j < 17; j++){  
51:          int product = getProductOfFourNumbers(numbersArray[i][j],numbersArray[i + 1][j + 1],numbersArray[i + 2][j + 2], numbersArray[i + 3][i + 3]);  
52:    
53:          if(largestProduct(product, largestProductOfFourAdjNumbers))  
54:          {  
55:            largestProductOfFourAdjNumbers = product;  
56:    
57:            actualNumbers[0] = numbersArray[i][j];  
58:            actualNumbers[1] = numbersArray[i + 1][j + 1];  
59:            actualNumbers[2] = numbersArray[i + 2][j + 2];  
60:            actualNumbers[3] = numbersArray[i + 3][i + 3];  
61:    
62:            isDiagonal = true;  
63:          }  
64:        }  
65:      }  
66:    
67:      for(int i = 0; i < 17; i ++){  
68:        for(int j = 3; j < 20; j ++){  
69:          int product = getProductOfFourNumbers(numbersArray[i][j],numbersArray[i + 1][j - 1],numbersArray[i + 2][j - 2],numbersArray[i + 3][j - 3]);  
70:    
71:          if(largestProduct(product, largestProductOfFourAdjNumbers))  
72:          {  
73:            largestProductOfFourAdjNumbers = product;  
74:    
75:            actualNumbers[0] = numbersArray[i][j];  
76:            actualNumbers[1] = numbersArray[i + 1][j - 1];  
77:            actualNumbers[2] = numbersArray[i + 2][j - 2];  
78:            actualNumbers[3] = numbersArray[i + 3][j - 3];  
79:    
80:            isDiagonal = true;  
81:          }  
82:        }  
83:      }  
84:    
85:      System.out.format("Max Product of these %d * %d * %d * %d four Numbers = %d",actualNumbers[0],actualNumbers[1],actualNumbers[2],actualNumbers[3],largestProductOfFourAdjNumbers);  
86:    
87:      if (isDiagonal) {  
88:        System.out.print(". And these numbers are diagonal to each other");  
89:      } else {  
90:        System.out.print(". And these numbers are adjacent to each other");  
91:      }  
92:    }  
93:    
94:    private static int getProductOfFourNumbers(int one, int two, int three, int four){  
95:      return one * two * three * four;  
96:    }  
97:    
98:    private static boolean largestProduct(int product, int largestNumberProduct){  
99:      if(product > largestNumberProduct)  
100:        return true;  
101:      else  
102:        return false;  
103:    }  
104:    
105:    private static int[][] readNumberArray()  
106:    {  
107:      return new int [][] {  
108:          {8,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,8},  
109:          {49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00},  
110:          {81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65},  
111:          {52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91},  
112:          {22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80},  
113:          {24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50},  
114:          {32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70},  
115:          {67,26,20,68,02,62,12,20,95,63,94,39,63,8,40,91,66,49,94,21},  
116:          {24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72},  
117:          {21,36,23,9,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95},  
118:          {78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,9,53,56,92},  
119:          {16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57},  
120:          {86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58},  
121:          {19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40},  
122:          {04,52,8,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66},  
123:          {88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69},  
124:          {04,42,16,73,38,25,39,11,24,94,72,18,8,46,29,32,40,62,76,36},  
125:          {20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16},  
126:          {20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54},  
127:          {01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48}  
128:      };  
129:    
130:    }  
131:  }  
132:    


Any Suggestion, Comments?

Sunday, February 8, 2015

Why is 'x' the unknown?

Since my childhood I was always wondering when, how and why only this x is unknown. Why we always to have to find its value every time ? Why not y, z or any other alphabets? If you are confused to then watch this video may be it will help you also to clear your thoughts as well.

 

 Any thoughts, Comments or Questions?

Monday, April 9, 2012

The 10/20/30 Rule


Guy Kawasaki is a Venture Capitalist from California who survived the dotcom bubble bursting and has been very successful.  He says that a good presentation should:
          Have 10 slides
          Last no more then 20 minutes
          Contain no font smaller then 30 point
He also said that big concerns to Venture Capitalists are the market, the problem and solution, and the underlying magic.  In other words, VC’s don’t understand or want to know every detail.

Sunday, January 29, 2012

How to remove Google Redirect Virus (GRV)?

Just a few days back I saw a weird problem in my computer, whenever I googled something and try to click any search link it always redirects me to a different page. For sure, that’s a virus but now how to remove as search result links takes me somewhere else. Even Bing or Yahoo doesn’t come to rescue. Hmm, that’s Google Redirect Virus (GRV).

Symptoms:

The main symptom of the GRV is that clicking on a Google search result link will take you to another unrelated website. It doesn’t matter which search link you click and it doesn’t matter which browser you use for searching. How can you get it? Unfortunately, it’s not very difficult. If you accidentally (or even purposely) visit a malicious or infected website, and if you don’t have the necessary anti-virus protection on your computer, you can get it.

But unlike most cases of malware, this virus embeds itself deeper into your system and requires more than a simple malware scan.

How to remove it?

Did a lot of research and believe me there were so many solutions available (some say malware byte, some say TDSSKiller) will remove but none of them work. Hmm, finally found fixTDSS.exe

Simply download fixTDSS.exe and run it. After the program initializes, click on the Proceed button to start the scan. The program will look for potential problems and fix them if necessary. A reboot may be required.

Is fixTDSS.exe Safe?

It’s written by Symantec, the makers of Norton antivirus and also the above downloadable link will download the file from Symantec’s website directly.

Important Warning

fixTDSS.exe has some conflicts with windows 7 so you have to reinstall or recover your operating system from the recovery disk. Restoring it to an earlier point or reinstalling windows from one of the images stored on your local hard disk is not going to work, so make sure you have the recovery disk for your operating system.

Any comments or suggestions are always welcomed.