Advertisement
Guest User

Untitled

a guest
Sep 10th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.40 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "math"
  6.     "sort"
  7.     "strconv"
  8.     "strings"
  9. )
  10.  
  11. type Nums struct {
  12.     element string
  13.     pow     float64
  14. }
  15.  
  16. type Elements []Nums
  17.  
  18. func (e Elements) Len() int {
  19.     return len(e)
  20. }
  21.  
  22. func (e Elements) Less(i, j int) bool {
  23.     return e[i].pow < e[j].pow
  24. }
  25.  
  26. func (e Elements) Swap(i, j int) {
  27.     e[i], e[j] = e[j], e[i]
  28. }
  29.  
  30. func main() {
  31.     var elements Elements
  32.  
  33.     var step int
  34.     fmt.Scan(&step)
  35.  
  36.     for i := 0; i < step; i++ {
  37.         var data string
  38.         fmt.Scan(&data)
  39.         s := Nums{element: data, pow: 0}
  40.         ss := powing(s)
  41.         elements = append(elements, ss)
  42.     }
  43.     //fmt.Printf("%+v\n", elements)
  44.  
  45.     sort.Sort(elements)
  46.     fmt.Println("Case 1:")
  47.     for i := 0; i < len(elements); i++ {
  48.         fmt.Println(elements[i].element)
  49.     }
  50. }
  51.  
  52. func powing(data Nums) Nums {
  53.     if strings.Contains(data.element, "^") {
  54.         nums_string := strings.Split(data.element, "^")
  55.         var nums = []float64{}
  56.  
  57.         for i := 0; i < len(nums_string); i++ {
  58.             szam, err := strconv.ParseFloat(nums_string[i], 64)
  59.             if err != nil {
  60.                 fmt.Println("kurva")
  61.             }
  62.             nums = append(nums, szam)
  63.         }
  64.         for i := 0; i < len(nums); i++ {
  65.             if data.pow == 0 {
  66.                 data.pow = math.Pow(nums[i], nums[i+1])
  67.             } else {
  68.                 if i != len(nums)-1 {
  69.                     data.pow = math.Pow(data.pow, nums[i+1])
  70.                 }
  71.  
  72.             }
  73.         }
  74.         return data
  75.     } else {
  76.         nume, _ := strconv.ParseFloat(data.element, 64)
  77.         data.pow = nume
  78.         return data
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement