Advertisement
Guest User

Untitled

a guest
Oct 10th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.20 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "math"
  6. )
  7.  
  8. func vystrel(krok int) int{
  9.     /*
  10.     Idea:
  11.         Trpazlik sa pohybuje linearne, linearna funkcia je dana dvomi parametrami (a, b), teda y=a*x+b
  12.         x nam predstavuje krok a y je pozicia
  13.         Chceme iterovat cez (a, b) tak aby sme ich vyskusali vsetky.
  14.         Pre urcity krok mame pevne dane (a, b), ktore skusame.
  15.         Vyuzivame zobrazenia N->N*N , teda krok->(a,b).
  16.         Nasledne poziciu dopocitam podla a*krok+b.
  17.    
  18.     Inverznu funkciu ku Cantorovej parovacej funkcii som prebral z
  19.         https://en.wikipedia.org/wiki/Pairing_function#Cantor_pairing_function
  20.     */
  21.    
  22.     var t int
  23.     var a int
  24.     var b int
  25.    
  26.     w = int((math.Sqrt(float64(8*krok+1))-1)/2)
  27.     t = (w*w+w)/2
  28.     a = krok - t
  29.     b = w - a
  30.    
  31.    
  32.     //fmt.Println(krok,w, t, a, b, a*krok+b)
  33.    
  34.    
  35.     return a*krok+b
  36. }
  37.  
  38.  
  39. func main() {
  40.     fmt.Println("Trpazlik sa pohybuje A*krok+B")
  41.     var a int
  42.     var b int
  43.     fmt.Println("Zadaj A: ")
  44.     a = 4 //fmt.Scan(&a)
  45.     fmt.Println("Zadaj B: ")
  46.     b = 3 //fmt.Scan(&b)
  47.    
  48.     for i:= 0; i < 50; i++ {
  49.         pozicia_trpazlika := a*i+b
  50.         pozicia_vystrelu := vystrel(i)
  51.         if pozicia_trpazlika == pozicia_vystrelu {
  52.             fmt.Println("Trpazlik zastreleny na pozicii", pozicia_trpazlika)
  53.             return
  54.         }
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement