main.go 764 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "io"
  6. "os"
  7. )
  8. func uniq(input io.Reader, output io.Writer) error {
  9. in := bufio.NewScanner(input)
  10. var prev string
  11. for in.Scan() {
  12. txt := in.Text()
  13. if txt == prev {
  14. continue
  15. }
  16. if txt < prev {
  17. return fmt.Errorf("file not sorted")
  18. }
  19. prev = txt
  20. fmt.Fprintln(output, txt)
  21. }
  22. return nil
  23. }
  24. func main() {
  25. err := uniq(os.Stdin, os.Stdout)
  26. if err != nil {
  27. panic(err.Error())
  28. }
  29. /*
  30. // Вариант с map плох для больших объемов данных
  31. in := bufio.NewScanner(os.Stdin)
  32. alreadySeen := make(map[string]bool)
  33. for in.Scan() {
  34. txt := in.Text()
  35. if _, found := alreadySeen[txt]; found {
  36. continue
  37. }
  38. alreadySeen[txt] = true
  39. fmt.Println(txt)
  40. }
  41. */
  42. }