Skip to content

Instantly share code, notes, and snippets.

@Wendly
Created May 14, 2017 17:17
Show Gist options
  • Save Wendly/363d2393edc03a7ce9bad72a0ada8b6f to your computer and use it in GitHub Desktop.
Save Wendly/363d2393edc03a7ce9bad72a0ada8b6f to your computer and use it in GitHub Desktop.
p = 1 / 25.5622
step = 1000
p = p / step
n = 800 * step
P = [[1, 0, 0, 0]]
for i in range(1, 8):
P.append([0, 0, 0, 0])
for i in range(8, n + 1):
p0 = P[i - 8][0] * (1 - p)
p1 = P[i - 8][0] * p + P[i - 4][1] * (1 - p)
p2 = P[i - 4][1] * p + P[i - 2][2] * (1 - p)
p3 = P[i - 2][2] * p + P[i - 1][3] * (1 - p)
P.append([p0, p1, p2, p3])
print(P[n][0] + P[n][1] + P[n][2] + P[n][3])
@Wendly
Copy link
Author

Wendly commented May 14, 2017

p = 1 / 25.5622
step = 1000
p = p / step
n = 800 * step

P = [[1, 0, 0, 0]]

for i in range(1, n + 1):
    p0 = P[i - 1][0] * (1 - (p / 8))
    p1 = P[i - 1][0] * (p / 8) + P[i - 1][1] * (1 - (p / 4))
    p2 = P[i - 1][1] * (p / 4) + P[i - 1][2] * (1 - (p / 2))
    p3 = P[i - 1][2] * (p / 2) + P[i - 1][3] * (1 - p)
    P.append([p0, p1, p2, p3])

print(P[n][0] + P[n][1] + P[n][2] + P[n][3])

@mrjohannchang
Copy link

package main

import "fmt"

func main() {
	safePSet := []float64{1, 0, 0, 0}
	var l, v, p float64
	var n int

	fmt.Scanf("%d", &n)

	l = 400
	v = 4
	p = 1 / 25.5622 * l / v / float64(n)

	for i := 0; i < n; i++ {
		bufPSet := make([]float64, 4)
		bufPSet[0] = safePSet[0] * (1 - p)
		bufPSet[1] = safePSet[0]*p + safePSet[1]*(1-2*p)
		bufPSet[2] = safePSet[1]*2*p + safePSet[2]*(1-4*p)
		bufPSet[3] = safePSet[2]*4*p + safePSet[3]*(1-8*p)
		safePSet = bufPSet
	}

	fmt.Println(safePSet[0] + safePSet[1] + safePSet[2] + safePSet[3])
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment