Created
February 4, 2015 12:11
-
-
Save teh/6c79fd8ca3c560bf1caa to your computer and use it in GitHub Desktop.
data generators
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random | |
import collections | |
# Generic n-ary tree | |
RoseTree = collections.namedtuple('RoseTree', 'a children') | |
def gen_int(): | |
def _gen_int(rng, size): | |
return rng.randrange(0, size) | |
return _gen_int | |
def gen_v(g): | |
def _gen_v(rng, size): | |
n = rng.randrange(0, size) | |
return [g(rng, size) for _ in range(n)] | |
return _gen_v | |
def fmap(f, g): | |
def _fmap(rng, size): | |
result = g(rng, size) | |
return f(result) | |
return _fmap | |
rng = random.Random() | |
print gen_int()(rng, 20) | |
v = gen_v(gen_int()) | |
print v(rng, 10) | |
print fmap(lambda x: x * 2, v)(rng, 10) | |
even_v = gen_v(fmap(lambda x: x * 2, gen_int())) | |
print even_v(rng, 10) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment