-
Notifications
You must be signed in to change notification settings - Fork 0
/
Majority.py
54 lines (41 loc) · 920 Bytes
/
Majority.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
### Majority
import numpy as np
import pandas as pd
import math
def Initialize_Balls(N, prop):
balls = []
for trials in range(N):
balls.append(np.random.binomial(1, prop))
return balls
def CheckColor(i,j, balls):
if abs(balls[i] - balls[j]) == 0:
return 1
else:
return 0
def CheckColorConsecutives(i, j, k, balls):
if abs(CheckColor(i,j, balls) - CheckColor(j,k, balls)) == 0:
return 1
else:
return 0
def FindMajority(balls):
N = len(balls)
trials = 1
same_color_0 = set([])
same_color_1 = set([])
if CheckColor(0,1,balls) == 1:
same_color_0.add(0)
same_color_0.add(1)
else:
same_color_0.add(0)
same_color_1.add(1)
for i in range(2,N):
if CheckColor(1, i, balls) == 1:
same_color_0.add(i)
else:
same_color_1.add(i)
trials += 1
if trials >= math.ceil(N/2):
if len(same_color_0) > len(same_color_1):
return same_color_0
else:
return same_color_1