我使用以下代码解决了Golang中的“比较三胞胎”,但它说答案是错误的。 当我在本地环境中运行代码时,它会显示所需的结果。
(here is the link to the problem at HackerRank)
以下是代码。
package main
import "fmt"
func main() {
a, b := ReadArrays()
sa, sb := CompareIt(a, b)
fmt.Printf("A: %d, B: %d\n", sa, sb)
}
func CompareIt(a, b []int) (int, int) {
var scoreA int
var scoreB int
for i := 0; i < 3; i++ {
if a[i] > b[i] {
scoreA += 1
} else if b[i] > a[i] {
scoreB += 1
}
}
return scoreA, scoreB
}
func ReadArrays() ([]int, []int) {
a := make([]int, 3)
fmt.Println("Please enter the first 3 digits separated by space or comma")
for i := range a {
fmt.Scanf("%d", &a[i])
}
b := make([]int, 3)
fmt.Println("Please enter the second 3 digits separated by space or comma")
for i := range b {
fmt.Scanf("%d", &b[i])
}
return a, b
}
当我在本地环境中运行此代码时,它要求我在终端输入前3位数字,然后要求我插入其他3位数字,然后代码比较它并将分数给予A和B根据挑战的要求。
答案 0 :(得分:7)
您的输出与预期输出不匹配:
你的输出(标准输出)
Please enter the first 3 digits separated by space or comma
Please enter the second 3 digits separated by space or comma
A: 1, B: 1
预期产出
1 1
你的印刷方式超出了他们的要求。您也正在为计算机制作此程序而不是一个人。您不需要文本提示。
删除多余的打印:
package main
import "fmt"
func main() {
a, b := ReadArrays()
sa, sb := CompareIt(a, b)
fmt.Printf("%d %d", sa, sb)
}
func CompareIt(a, b []int) (int, int) {
var scoreA int
var scoreB int
for i := 0; i < 3; i++ {
if a[i] > b[i] {
scoreA += 1
} else if b[i] > a[i] {
scoreB += 1
}
}
return scoreA, scoreB
}
func ReadArrays() ([]int, []int) {
a := make([]int, 3)
for i := range a {
fmt.Scanf("%d", &a[i])
}
b := make([]int, 3)
for i := range b {
fmt.Scanf("%d", &b[i])
}
return a, b
}