-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathvalidator.py
executable file
·39 lines (32 loc) · 931 Bytes
/
validator.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
#!/usr/bin/env python3
# validator.py
from functools import reduce
from operator import mul
import io
import numpy as np
import random
import re
import subprocess
import transform
def choose(n, r):
assert n >= r
r = max(r, n-r)
if r == 0:
return 1
numer = reduce(mul, range(n, n-r, -1))
denom = reduce(mul, range(1, r+1))
return numer//denom
random.getrandbits(128)
POSSIBLE_DEALS = choose(52, 13) * choose(39, 13) * choose(26, 13)
def random_deal():
return random.randrange(POSSIBLE_DEALS)
def hex_random_deal():
return hex(random_deal())[2:]
if __name__ == '__main__':
args = ['./buck-out/gen/validate', hex_random_deal()]
completed = subprocess.run(args, stdout=subprocess.PIPE, encoding='utf-8')
f = io.StringIO(completed.stdout)
group = transform.parseStream(f)
for k, v in group.items():
v = np.asarray(v, dtype=np.float32)
print(k, v.shape)