Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.19 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "bufio"
  5. _    "bytes"
  6.     "fmt"
  7.     "os"
  8.     "time"
  9. )
  10.  
  11. func canonicalize(s string) string {
  12.     c := s + s[:len(s)-1]
  13.     best := s
  14.     for i := 1; i < len(s); i++ {
  15.         if c[i:i+len(s)] < best {
  16.             best = c[i : i+len(s)]
  17.         }
  18.     }
  19.     return best
  20. }
  21.  
  22. func main() {
  23.     seen := make(map[string][]string)
  24.  
  25.     // START TIMER
  26.     start := time.Now()
  27.  
  28.     f, err := os.Open("/etc/passwd")
  29.     if err != nil {
  30.       // or check error by using error checking func in os package
  31.       fmt.Println("err file i/o")
  32.       return
  33.     }
  34.     defer f.Close()
  35.  
  36.  
  37.     reader := bufio.NewReader(f)
  38.  
  39.     for {
  40.     s, _, err := reader.ReadLine()
  41.         if err != nil {
  42.           break
  43.         }
  44.         word := string(s) // it's AoB
  45.         n := canonicalize(word)
  46.         seen[n] = append(seen[n], word)
  47.     }
  48.  
  49.  
  50.     for _, words := range seen {
  51.         if len(words) == 4 {
  52.             fmt.Printf("%v\n", words)
  53.             break
  54.         }
  55.     }
  56.    
  57.     // END TIMER AND PRINT RESULT
  58.     end := time.Now()
  59.     fmt.Printf("Result: %s (%d) nano(%d)\n", end.Sub(start), end.Unix()-start.Unix(), end.UnixNano()-start.UnixNano())
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement