36 lines
738 B
Go
36 lines
738 B
Go
package main
|
|
|
|
import (
|
|
"collatz/collatz"
|
|
"collatz/parsing"
|
|
"log"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
sequence, err := runCollatz()
|
|
if err != nil {
|
|
log.Fatalf("Error calculating Collatz: %v", err)
|
|
}
|
|
printSequence(sequence)
|
|
}
|
|
|
|
func printSequence(sequence collatz.Sequence) {
|
|
builder := new(strings.Builder)
|
|
log.Printf("Collatz sequence with %d iterations:", sequence.Iterations)
|
|
for i, num := range sequence.Sequence {
|
|
if i != 0 {
|
|
builder.WriteString(" -> ")
|
|
}
|
|
builder.WriteString(num.String())
|
|
}
|
|
log.Println(builder.String())
|
|
}
|
|
|
|
func runCollatz() (collatz.Sequence, error) {
|
|
parser := new(parsing.Cliargs)
|
|
calculator := collatz.NewCalculator(parser)
|
|
sequence, err := calculator.CalculateCollatz()
|
|
return sequence, err
|
|
}
|