Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "math"
- )
- func vystrel(krok int) int{
- /*
- Idea:
- Trpazlik sa pohybuje linearne, linearna funkcia je dana dvomi parametrami (a, b), teda y=a*x+b
- x nam predstavuje krok a y je pozicia
- Chceme iterovat cez (a, b) tak aby sme ich vyskusali vsetky.
- Pre urcity krok mame pevne dane (a, b), ktore skusame.
- Vyuzivame zobrazenia N->N*N , teda krok->(a,b).
- Nasledne poziciu dopocitam podla a*krok+b.
- Inverznu funkciu ku Cantorovej parovacej funkcii som prebral z
- https://en.wikipedia.org/wiki/Pairing_function#Cantor_pairing_function
- */
- var t int
- var a int
- var b int
- w = int((math.Sqrt(float64(8*krok+1))-1)/2)
- t = (w*w+w)/2
- a = krok - t
- b = w - a
- //fmt.Println(krok,w, t, a, b, a*krok+b)
- return a*krok+b
- }
- func main() {
- fmt.Println("Trpazlik sa pohybuje A*krok+B")
- var a int
- var b int
- fmt.Println("Zadaj A: ")
- a = 4 //fmt.Scan(&a)
- fmt.Println("Zadaj B: ")
- b = 3 //fmt.Scan(&b)
- for i:= 0; i < 50; i++ {
- pozicia_trpazlika := a*i+b
- pozicia_vystrelu := vystrel(i)
- if pozicia_trpazlika == pozicia_vystrelu {
- fmt.Println("Trpazlik zastreleny na pozicii", pozicia_trpazlika)
- return
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement