Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "bufio"
- "fmt"
- "net"
- "strconv"
- "os"
- //"time"
- )
- func check(err error, message string) {
- if err != nil {
- panic(err)
- }
- //fmt.Printf("%s\n", message)
- }
- func FiboLoop1(n int) uint64 {
- f := make([]uint64, n+1, n+2)
- if n < 2 {
- f = f[0:2]
- }
- f[0] = 0
- f[1] = 1
- for i := 2; i <= n; i++ {
- f[i] = f[i-1] + f[i-2]
- }
- return uint64(f[n])
- }
- func FiboLoop2(n int) uint64 {
- a := 0
- b := 1
- for i := 0; i < n; i++ {
- temp := a
- a = b
- b = temp + a
- }
- return uint64(a)
- }
- func makeFibo(n int) string {
- result := " "
- for i:=0; i<=n; i++ {
- result += strconv.FormatUint(FiboLoop2(i), 10) + " "
- }
- return result + "\r\n"
- }
- func main() {
- if (len(os.Args) != 2 ) {
- fmt.Println("Port number must be the 1st and only argument!")
- return
- }
- ln, err := net.Listen("tcp", ":"+os.Args[1])
- check(err, "Server is ready.")
- for {
- conn, err := ln.Accept()
- check(err, "Accepted connection.")
- go func() {
- buf := bufio.NewReader(conn)
- //for {
- num, err := buf.ReadString('\n')
- if err != nil {
- conn.Write([]byte("Invalid input\r\n"))
- conn.Close()
- return
- }
- //fmt.Println(num[:len(num)-2])
- //fmt.Println(len(num))
- numFib, err := strconv.Atoi(num[:len(num)-2])
- if err != nil {
- conn.Write([]byte("Invalid input\r\n"))
- conn.Close()
- return
- }
- //fmt.Printf("Fibonacchi number: %d\n", numFib)
- //startLoop := time.Now()
- result := makeFibo(numFib)
- //fmt.Printf("\nIt took %s to make FIBO\n", time.Since(startLoop))
- conn.Write([]byte(result))
- conn.Close()
- //}
- }()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement