Skip to content

Instantly share code, notes, and snippets.

@sixthgear
Last active December 12, 2015 00:38
Show Gist options
  • Select an option

  • Save sixthgear/4684796 to your computer and use it in GitHub Desktop.

Select an option

Save sixthgear/4684796 to your computer and use it in GitHub Desktop.
def fn(n, c):
num = 0
a = range(1, n/2+1) + (n%2)*[0]
b = range(n, n/2, -1)
for _ in range(n-1 + n%2):
for aa, bb in zip(a, b):
if aa and bb:
yield (num/min(c, n/2)+1, aa, bb)
num += 1
a, b = a[0:1]+b[0:1]+a[1:-1], b[1:]+a[-1:]
print "fn(4,2):"
for m in fn(4,2):
print "%d: %d vs %d" % (m)
print "fn(5,2):"
for m in fn(5,2):
print "%d: %d vs %d" % (m)
print "fn(6,3):"
for m in fn(6,3):
print "%d: %d vs %d" % (m)
print "fn(7,2):"
for m in fn(7,2):
print "%d: %d vs %d" % (m)
print "fn(23,7):"
for m in fn(23,7):
print "%d: %d vs %d" % (m)
fn(4,2):
1: 1 vs 4
1: 2 vs 3
2: 1 vs 3
2: 4 vs 2
3: 1 vs 2
3: 3 vs 4
fn(5,2):
1: 1 vs 5
1: 2 vs 4
2: 1 vs 4
2: 5 vs 3
3: 1 vs 3
3: 5 vs 2
4: 3 vs 2
4: 4 vs 5
5: 1 vs 2
5: 3 vs 4
fn(6,2):
1: 1 vs 6
1: 2 vs 5
2: 3 vs 4
2: 1 vs 5
3: 6 vs 4
3: 2 vs 3
4: 1 vs 4
4: 5 vs 3
5: 6 vs 2
5: 1 vs 3
6: 4 vs 2
6: 5 vs 6
7: 1 vs 2
7: 3 vs 6
8: 4 vs 5
fn(6,3):
1: 1 vs 6
1: 2 vs 5
1: 3 vs 4
2: 1 vs 5
2: 6 vs 4
2: 2 vs 3
3: 1 vs 4
3: 5 vs 3
3: 6 vs 2
4: 1 vs 3
4: 4 vs 2
4: 5 vs 6
5: 1 vs 2
5: 3 vs 6
5: 4 vs 5
fn(7,2):
1: 1 vs 7
1: 2 vs 6
2: 3 vs 5
2: 1 vs 6
3: 7 vs 5
3: 2 vs 4
4: 1 vs 5
4: 6 vs 4
5: 2 vs 3
5: 1 vs 4
6: 6 vs 3
6: 7 vs 2
7: 4 vs 3
7: 5 vs 2
8: 6 vs 7
8: 1 vs 3
9: 4 vs 7
9: 5 vs 6
10: 1 vs 2
10: 3 vs 7
11: 4 vs 5
fn(23,7):
1: 1 vs 23
1: 2 vs 22
1: 3 vs 21
1: 4 vs 20
1: 5 vs 19
1: 6 vs 18
1: 7 vs 17
2: 8 vs 16
2: 9 vs 15
2: 10 vs 14
2: 11 vs 13
2: 1 vs 22
2: 23 vs 21
2: 2 vs 20
3: 3 vs 19
3: 4 vs 18
3: 5 vs 17
3: 6 vs 16
3: 7 vs 15
3: 8 vs 14
3: 9 vs 13
4: 10 vs 12
4: 1 vs 21
4: 22 vs 20
4: 23 vs 19
4: 2 vs 18
4: 3 vs 17
4: 4 vs 16
5: 5 vs 15
5: 6 vs 14
5: 7 vs 13
5: 8 vs 12
5: 10 vs 11
5: 1 vs 20
5: 21 vs 19
6: 22 vs 18
6: 23 vs 17
6: 2 vs 16
6: 3 vs 15
6: 4 vs 14
6: 5 vs 13
6: 6 vs 12
7: 8 vs 11
7: 9 vs 10
7: 1 vs 19
7: 20 vs 18
7: 21 vs 17
7: 22 vs 16
7: 23 vs 15
8: 2 vs 14
8: 3 vs 13
8: 4 vs 12
8: 6 vs 11
8: 7 vs 10
8: 8 vs 9
8: 1 vs 18
9: 19 vs 17
9: 20 vs 16
9: 21 vs 15
9: 22 vs 14
9: 23 vs 13
9: 2 vs 12
9: 4 vs 11
10: 5 vs 10
10: 6 vs 9
10: 7 vs 8
10: 1 vs 17
10: 18 vs 16
10: 19 vs 15
10: 20 vs 14
11: 21 vs 13
11: 22 vs 12
11: 2 vs 11
11: 3 vs 10
11: 4 vs 9
11: 5 vs 8
11: 6 vs 7
12: 1 vs 16
12: 17 vs 15
12: 18 vs 14
12: 19 vs 13
12: 20 vs 12
12: 22 vs 11
12: 23 vs 10
13: 2 vs 9
13: 3 vs 8
13: 4 vs 7
13: 5 vs 6
13: 1 vs 15
13: 16 vs 14
13: 17 vs 13
14: 18 vs 12
14: 20 vs 11
14: 21 vs 10
14: 22 vs 9
14: 23 vs 8
14: 2 vs 7
14: 3 vs 6
15: 4 vs 5
15: 1 vs 14
15: 15 vs 13
15: 16 vs 12
15: 18 vs 11
15: 19 vs 10
15: 20 vs 9
16: 21 vs 8
16: 22 vs 7
16: 23 vs 6
16: 2 vs 5
16: 3 vs 4
16: 1 vs 13
16: 14 vs 12
17: 16 vs 11
17: 17 vs 10
17: 18 vs 9
17: 19 vs 8
17: 20 vs 7
17: 21 vs 6
17: 22 vs 5
18: 23 vs 4
18: 2 vs 3
18: 1 vs 12
18: 14 vs 11
18: 15 vs 10
18: 16 vs 9
18: 17 vs 8
19: 18 vs 7
19: 19 vs 6
19: 20 vs 5
19: 21 vs 4
19: 22 vs 3
19: 23 vs 2
19: 12 vs 11
20: 13 vs 10
20: 14 vs 9
20: 15 vs 8
20: 16 vs 7
20: 17 vs 6
20: 18 vs 5
20: 19 vs 4
21: 20 vs 3
21: 21 vs 2
21: 22 vs 23
21: 1 vs 11
21: 12 vs 9
21: 13 vs 8
21: 14 vs 7
22: 15 vs 6
22: 16 vs 5
22: 17 vs 4
22: 18 vs 3
22: 19 vs 2
22: 20 vs 23
22: 21 vs 22
23: 1 vs 10
23: 11 vs 9
23: 12 vs 7
23: 13 vs 6
23: 14 vs 5
23: 15 vs 4
23: 16 vs 3
24: 17 vs 2
24: 18 vs 23
24: 19 vs 22
24: 20 vs 21
24: 1 vs 9
24: 10 vs 8
24: 11 vs 7
25: 12 vs 5
25: 13 vs 4
25: 14 vs 3
25: 15 vs 2
25: 16 vs 23
25: 17 vs 22
25: 18 vs 21
26: 19 vs 20
26: 1 vs 8
26: 9 vs 7
26: 10 vs 6
26: 11 vs 5
26: 12 vs 3
26: 13 vs 2
27: 14 vs 23
27: 15 vs 22
27: 16 vs 21
27: 17 vs 20
27: 18 vs 19
27: 1 vs 7
27: 8 vs 6
28: 9 vs 5
28: 10 vs 4
28: 11 vs 3
28: 12 vs 23
28: 13 vs 22
28: 14 vs 21
28: 15 vs 20
29: 16 vs 19
29: 17 vs 18
29: 1 vs 6
29: 7 vs 5
29: 8 vs 4
29: 9 vs 3
29: 10 vs 2
30: 11 vs 23
30: 12 vs 21
30: 13 vs 20
30: 14 vs 19
30: 15 vs 18
30: 16 vs 17
30: 1 vs 5
31: 6 vs 4
31: 7 vs 3
31: 8 vs 2
31: 9 vs 23
31: 10 vs 22
31: 11 vs 21
31: 12 vs 19
32: 13 vs 18
32: 14 vs 17
32: 15 vs 16
32: 1 vs 4
32: 5 vs 3
32: 6 vs 2
32: 7 vs 23
33: 8 vs 22
33: 9 vs 21
33: 10 vs 20
33: 11 vs 19
33: 12 vs 17
33: 13 vs 16
33: 14 vs 15
34: 1 vs 3
34: 4 vs 2
34: 5 vs 23
34: 6 vs 22
34: 7 vs 21
34: 8 vs 20
34: 9 vs 19
35: 10 vs 18
35: 11 vs 17
35: 12 vs 15
35: 13 vs 14
35: 1 vs 2
35: 3 vs 23
35: 4 vs 22
36: 5 vs 21
36: 6 vs 20
36: 7 vs 19
36: 8 vs 18
36: 9 vs 17
36: 10 vs 16
36: 11 vs 15
37: 12 vs 13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment