我正在努力学习 Go,我决定使用 Project Euler 来帮助我。
我正在尝试将 #8 移植到 Go。
这是在 Javascript 中
// Split our input into an array
n = n.split("");
// Loop through every 13 length chuck multiplying them. Keep track of the largest
var largest = 0;
for (var i = 0; i < (n.length - 12); i++) {
var b = n.slice(i, i + 13);
var product = b.reduce(function(prev, current) {
return prev * Number(current);
}, 1);
if (product > largest) {
largest = product;
}
}
console.log(largest);
这是我在 Go 中的端口
import (
"fmt"
"strconv"
"strings"
)
func main() {
// Get an array of ints
var grid []int
var stringGrid []string = strings.Split(data, "")
for i := 0; i < 1000; i++ {
cell, _ := strconv.Atoi(stringGrid[i])
grid = append(grid, cell)
}
// Find the largest one
largest := 0
for i := 0; i < len(grid)-12; i++ {
a := grid[i : i+13]
total := 1
for b := 0; b < len(a); b++ {
total *= a[b]
}
if total > largest {
largest = total
}
}
fmt.Println(largest)
}
我不知道出了什么问题,如果我给它们加上一堆打印,就会吐出相同的数字序列,但是 Go 似乎没有在做乘法,对吧?!?我手动检查了一遍。一定是我遗漏了一些小东西吗?
蓝山帝景
相关分类