Project Euler – Problem # 8 – Solved with Go

Find the greatest product of five consecutive digits in the 1000-digit number.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

One Possible Solution: Go

package main

import "fmt"
import "strconv"

const fileIn = "73167176531330624919225119674426574742355349194934" +
	"96983520312774506326239578318016984801869478851843" +
	"85861560789112949495459501737958331952853208805511" +
	"12540698747158523863050715693290963295227443043557" +
	"66896648950445244523161731856403098711121722383113" +
	"62229893423380308135336276614282806444486645238749" +
	"30358907296290491560440772390713810515859307960866" +
	"70172427121883998797908792274921901699720888093776" +
	"65727333001053367881220235421809751254540594752243" +
	"52584907711670556013604839586446706324415722155397" +
	"53697817977846174064955149290862569321978468622482" +
	"83972241375657056057490261407972968652414535100474" +
	"82166370484403199890008895243450658541227588666881" +
	"16427171479924442928230863465674813919123162824586" +
	"17866458359124566529476545682848912883142607690042" +
	"24219022671055626321111109370544217506941658960408" +
	"07198403850962455444362981230987879927244284909188" +
	"84580156166097919133875499200524063689912560717606" +
	"05886116467109405077541002256983155200055935729725" +
	"71636269561882670428252483600823257530420752963450"

func main() {
	largest := 0
	for i := 0; i < (len(fileIn) - 4); i++ {
		fiveDigits := fileIn[i:(i + 5)]

		s1 := fiveDigits[0:1]
		s2 := fiveDigits[1:2]
		s3 := fiveDigits[2:3]
		s4 := fiveDigits[3:4]
		s5 := fiveDigits[4:5]

		x1, _ := strconv.Atoi(s1)
		x2, _ := strconv.Atoi(s2)
		x3, _ := strconv.Atoi(s3)
		x4, _ := strconv.Atoi(s4)
		x5, _ := strconv.Atoi(s5)

		product := x1 * x2 * x3 * x4 * x5

		if product > largest {
			largest = product
		}

	}
	fmt.Println("Greatest product is: ", largest)
}
Advertisements

Project Euler Problem # 8 – Solved with Java & Python!

Find the greatest product of five consecutive digits in the 1000-digit number.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

One Possible Solution: Java

import java.io.*;

public class Problem_08 
	{
		  public static void main( String [] args )
		  {
		    try
		    {
		       FileReader fro = new FileReader( "1000.txt" );
		       BufferedReader bro = new BufferedReader( fro );
		       StringBuilder sb = new StringBuilder( );
		  
		       // declare String variable and prime the read
		       String stringfromFile = bro.readLine( );
		 
		       while( stringfromFile != null ) // end of the file
		       {
		          sb.append(stringfromFile); // append into one long string
		          stringfromFile = bro.readLine( );  // read next line
		       }
		       String str = sb.toString( ); // convert from StringBuilder to String
		       String fiveDigits = ""; // initialize fiveDigits
		       int largest = 0; // initialize largest
		       
		       for(int i = 0; i < str.length() - 4; i++){
		    	    fiveDigits = str.substring( i, ( i + 5 )); // substring of str for fiveDigits
		    	    
		    	    // convert each of the five digits into integers
		    	    int v = Integer.parseInt(fiveDigits.substring(0, 1));
		    	    int w = Integer.parseInt(fiveDigits.substring(1, 2));
		    	    int x = Integer.parseInt(fiveDigits.substring(2, 3));
		    	    int y = Integer.parseInt(fiveDigits.substring(3, 4));
		    	    int z = Integer.parseInt(fiveDigits.substring(4, 5));
		    	    
		    	    // find the product of each of the five digits
		    	    int product = v * w * x * y * z;
		    	    
		    	    // keep track of the largest product
		    	    if(product > largest)
		    	    {
		    	    	largest = product;
		    	    }
		       }
		       System.out.println("Largest = " + largest);
		       bro.close( );
		    }
		 
		    catch( FileNotFoundException filenotfoundexxption )
		    {
		      System.out.println( "1000.txt, does not exist" );
		    }
		 
		    catch( IOException ioexception )
		    {
		      ioexception.printStackTrace( );
		    }
		  }
	}

One Possible Solution: Python

# Python version = 2.7.2
# Platform = win32

fjf = open('1000.txt', 'rU')
bcm = fjf.readlines()
hws = ''.join(bcm)
bvc = hws.replace('\n', '')
fjf.close()

largest = 0

for i in range(0, (len(bvc) - 4)):
    fiveDigits = bvc[i:(i + 5)]

    x1 = int(fiveDigits[0:1])
    x2 = int(fiveDigits[1:2])
    x3 = int(fiveDigits[2:3])
    x4 = int(fiveDigits[3:4])
    x5 = int(fiveDigits[4:5])
    
    product = x1 * x2 * x3 * x4 * x5
    
    if product > largest:
        largest = product
        
print "Greatest product is: %s" % largest

Euler Project