Oplossing : uitdaging voor gegevenstypen
Hier vindt u één oplossing voor de vorige uitdagingen.
Een programma schrijven om de Fibonacci-reeks te berekenen
De oplossing voor deze uitdaging kan ongeveer hetzelfde zijn als in dit voorbeeld:
package main
import "fmt"
func fibonacci(n int) []int {
if n < 2 {
return make([]int, 0)
}
nums := make([]int, n)
nums[0], nums[1] = 1, 1
for i := 2; i < n; i++ {
nums[i] = nums[i-1] + nums[i-2]
}
return nums
}
func main() {
var num int
fmt.Print("What's the Fibonacci sequence you want? ")
fmt.Scanln(&num)
fmt.Println("The Fibonacci sequence is:", fibonacci(num))
}
Een Romeinse numerieke vertaler maken
De oplossing voor deze uitdaging kan ongeveer hetzelfde zijn als in dit voorbeeld:
package main
import (
"fmt"
)
func romanToArabic(numeral string) int {
romanMap := map[rune]int{
'M': 1000,
'D': 500,
'C': 100,
'L': 50,
'X': 10,
'V': 5,
'I': 1,
}
arabicVals := make([]int, len(numeral)+1)
for index, digit := range numeral {
if val, present := romanMap[digit]; present {
arabicVals[index] = val
} else {
fmt.Printf("Error: The roman numeral %s has a bad digit: %c\n", numeral, digit)
return 0
}
}
total := 0
for index := 0; index < len(numeral); index++ {
if arabicVals[index] < arabicVals[index+1] {
arabicVals[index] = -arabicVals[index]
}
total += arabicVals[index]
}
return total
}
func main() {
fmt.Println("MCLX is", romanToArabic("MCLX"))
fmt.Println("MCMXCIX is ", romanToArabic("MCMXCIX"))
fmt.Println("MCMZ is", romanToArabic("MCMZ"))
}