Advertisement
Guest User

Untitled

a guest
Nov 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.98 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "bufio"
  5.     "fmt"
  6.     "net"
  7.     "strconv"
  8.     "os"
  9.     //"time"
  10. )
  11.  
  12. func check(err error, message string) {
  13.     if err != nil {
  14.         panic(err)
  15.     }
  16. }
  17.  
  18. func FiboLoop1(n int) uint64 {
  19.     f := make([]uint64, n+1, n+2)
  20.     if n < 2 {
  21.         f = f[0:2]
  22.     }
  23.     f[0] = 0
  24.     f[1] = 1
  25.     for i := 2; i <= n; i++ {
  26.         f[i] = f[i-1] + f[i-2]
  27.     }
  28.     return uint64(f[n])
  29. }
  30.  
  31. func FiboLoop2(n int) uint64 {
  32.     a := 0
  33.     b := 1
  34.     // Iterate until desired position in sequence.
  35.     for i := 0; i < n; i++ {
  36.         // Use temporary variable to swap values.
  37.         temp := a
  38.         a = b
  39.         b = temp + a
  40.     }
  41.     return uint64(a)
  42. }
  43.  
  44.  
  45. func FiboRecursive(n int) int{
  46.     if n <= 1 {
  47.         return n
  48.     }
  49.     return FiboRecursive(n-1) + FiboRecursive(n-2)
  50. }
  51.  
  52.  
  53. func makeFibo(n int) string {
  54.     result := " "
  55.     for i:=0; i<=n; i++ {
  56.         result += strconv.FormatUint(FiboLoop1(i), 10) + " "
  57.     }
  58.     return result + "\r\n"
  59. }
  60.  
  61.  
  62. func main() {
  63.     if (len(os.Args) != 2 ) {
  64.         fmt.Println("Port number must be the 1st and only argument!")
  65.         return
  66.     }
  67.     ln, err := net.Listen("tcp", ":"+os.Args[1])
  68.     check(err, "Server is ready.")
  69.  
  70.     for {
  71.         conn, err := ln.Accept()
  72.         check(err, "Accepted connection.")
  73.  
  74.         go func() {
  75.             buf := bufio.NewReader(conn)
  76.  
  77.             //for {
  78.             num, err := buf.ReadString('\n')
  79.             if err != nil {
  80.                 conn.Write([]byte("Invalid input\r\n"))
  81.                 conn.Close()
  82.                 return
  83.             }
  84.             //fmt.Println(num[:len(num)-2])
  85.             //fmt.Println(len(num))
  86.  
  87.             numFib, err := strconv.Atoi(num[:len(num)-2])
  88.             if err != nil {
  89.                 conn.Write([]byte("Invalid input\r\n"))
  90.                 conn.Close()
  91.                 return
  92.             }
  93.             //fmt.Printf("Fibonacchi number: %d\n", numFib)
  94.  
  95.             //startLoop := time.Now()
  96.     //      result := makeFibo(numFib)
  97.  
  98.             result := FiboRecursive(numFib)
  99.             fmt.Println(result)
  100.        
  101.            
  102.  
  103.             //fmt.Printf("\nIt took %s to make FIBO\n", time.Since(startLoop))
  104.  
  105.             conn.Write([]byte(strconv.Itoa(result)))
  106.             conn.Close()
  107.             //}
  108.         }()
  109.     }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement