I'm working on code to solder the Project Euler problem #8. This is the one 
where you have to find the greatest product of any five digits found in order 
in a one thousand digit number. It sort of worked briefly. This version 
worked(I had line 25 uncommented):

https://github.com/wackyvorlon/marker/blob/02eff43b98597ad45e38c7269ad4e4ae55eb7165/euler8.pl

I pushed the product on to the end of @products. I then had to sort them, and 
was having trouble making that work. This is the current state of the code:

https://github.com/wackyvorlon/marker/blob/master/euler8.pl

/usr/bin/myperl is a link to the perlbrew install in my home directory, 
currently version 5.16.1. This is the output when I try running it:

Use of uninitialized value in subtraction (-) at ./euler8.pl line 24 (#1)
    (W uninitialized) An undefined value was used as if it were already
    defined.  It was interpreted as a "" or a 0, but maybe it was a mistake.
    To suppress this warning assign a defined value to your variables.
    
    To help you figure out what was undefined, perl will try to tell you
    the name of the variable (if any) that was undefined.  In some cases
    it cannot do this, so it also tells you what operation you used the
    undefined value in.  Note, however, that perl optimizes your program
    anid the operation displayed in the warning may not necessarily appear
    literally in your program.  For example, "that $foo" is usually
    optimized into "that " . $foo, and the warning will refer to the
    concatenation (.) operator, even though there is no . in
    your program.



I've copied and pasted the code below, for those who don't want to trek over to 
github:

#!/usr/bin/myperl -w
# euler8.pl --- Euler Problem 8
# Author: Paul Anderson <wackyvorlon@paul-andersons-macbook-pro-3.local>
# Created: 14 Aug 2012
# Version: 0.01

use warnings;
use diagnostics;
use 5.16.0;

#use strict;
no strict;


# The number.

$numb="7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";

$result=0;


for ($numb=~/(\d)(\d)(\d)(\d)(\d)/gi) {
    $cur = $1*$2*$3*$4*$5;          # Put the product in a variable.
    pos $numb=(pos $numb) - 4;                   # Reset position where 
matching will begin.
                                             # pos $num defaults to the 
position just
                                             # after the *last* character in 
our match.
                                             # We want our second match to 
begin after
                                             # the *first* character.
    if ( $cur > $result) {
        $result=$cur;
        
    }
    
}

print "\nGreatest value is $result.\n";


As it stands, I'm baffled. Any thoughts on what's wrong?
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to