### Project Euler: Problem 8

The next problem in our collection of maxscript experiments in Project Euler is problem No. 8:

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`

For a change, this is quite a no-brainer. I saved the number in the original format of individual lines as a txt file and used a `memStream` to read it. Although I could have just as well used `fileStream`, this is supposed to be a little faster. The sole purpose of the `_int` function is to shorten the code later on. All the lines are appended to a `string` (using `stringStream` didn't result in any benefit), which is then iterated over and for each five numbers a product is calculated and assigned to a `midResult` variable. If it is bigger than a previously saved value, we replace it with it:

````(`
`    fn _int str =`
`        nr = str as integer`

`    fn getNum filePath =`
`    (`
`        local result = ""`
`        local fileStream = memStreamMgr.openFile filePath`

`        while NOT fileStream.eos() do`
`            append result (fileStream.readLine())`

`        memStreamMgr.close fileStream`
`        result`
`    )`

`    local nr = getNum "Z:\Euler\prob8.txt"`
`    local length = nr.count - 4`
`    local midResult, result = 0`

`    for i = 1 to length`
`        where (midResult = _int(nr[i])*_int(nr[i+1])*_int(nr[i+2])*_int(nr[i+3])*_int(nr[i+4])) > result do`
`            result = midResult`
`    result`
`)`
```

DISCLAIMER: All scripts and snippets are provided as is under Creative Commons Zero (public domain, no restrictions) license. The author and this blog cannot be held liable for any loss caused as a result of inaccuracy or error within these web pages. Use at your own risk.

Drew Norris