Skip to content

Instantly share code, notes, and snippets.

@dunossauro
Last active April 11, 2018 18:33
Show Gist options
  • Save dunossauro/ae125f02f5b5db28628585b26b21e205 to your computer and use it in GitHub Desktop.
Save dunossauro/ae125f02f5b5db28628585b26b21e205 to your computer and use it in GitHub Desktop.
random par ou impar (functional example)
"""
Exemplo para ajudar a responder o problema de aninhamento em https://gist.github.com/AndersonFirmino/b0300923094a5a8450018c5bd32c9de8
"""
from itertools import filterfalse
from functools import partial
from random import choice, random
def pipe(*funcs):
def inner(data, funcs=funcs):
result = data
for f in funcs:
result = f(result)
return result
return inner
is_par = lambda x: x % 2 == 0
filter_par = partial(filter, is_par)
filter_impar = partial(filterfalse, is_par)
random_sorted = partial(sorted, key=lambda x: random())
flaged = pipe(range, tuple, filter_par, random_sorted, choice)
non_flaged = pipe(range, tuple, filter_impar, random_sorted, choice)
def odd_or_even(flag, limit):
"""Retorna um numero aleatorio pelo limite
:param flag:
:param limit:
:return:
"""
return flaged(limit) if flag else non_flaged(limit)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment