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
#!/usr/bin/env python3 | |
from typing import Callable, Iterable, T | |
def my_min(iterable: Iterable[T], key: Callable[[T, ...], Any]=lambda x: x) -> T: | |
iterator = iter(iterable) | |
try: | |
lowest = key(next(iterator)) |
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
#!/usr/bin/env python3 | |
from typing import Callable, Iterable, T | |
def my_max(iterable: Iterable[T], key: Callable[[T, ...], Any]=lambda x: x) -> T: | |
iterator = iter(iterable) | |
try: | |
highest = key(next(iterator)) |
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
#!/usr/bin/env python3 | |
def text_to_bin(text: str) -> str: | |
"""Takes a string, converts it to a space-separated string of binary numbers""" | |
result = [] | |
for char in text: | |
unicode_value = ord(char) | |
binary = format(unicode_value, '#010b') |
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
#!/usr/bin/env python3 | |
from typing import Callable, Iterable, T | |
def my_reduce(func: Callable[[T, T], T], iterable: Iterable[T]) -> T: | |
""" | |
Iterates over the given iterable and feeds the values | |
through the given function until the iterable is | |
exhausted, returning the final function value. | |
""" |
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
#!/usr/bin/env python3 | |
from typing import Any, Callable, Generator, Iterable, T | |
def my_filter(func: Callable[[T], Any], iterable: Iterable[T]) -> Generator[T, None, None]: | |
"""Yields all values from the iterable for which the function returns a truthful value""" | |
for value in iterable: | |
if func(value): | |
yield value |
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
#!/usr/bin/env python3 | |
from typing import Any, Callable, Generator, Iterable, List | |
def my_map(func: Callable[[Any, ...], Any], *iterables: List[Iterable[Any]]) -> Generator[Any, None, None]: | |
""" | |
Mimics the built-in map function, accepting any number of iterables | |
and yielding values returned by the given function. | |
""" | |
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
#!/usr/bin/env python3 | |
from typing import Optional, List, Generator | |
def prime_gen(limit: Optional[int]=None) -> Generator[int, None, None]: | |
"""Generates prime numbers with an optional upper limit""" | |
primes = [2] | |
n = 3 | |
while limit is None or limit >= n: | |
for prime in primes: |
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
#!/usr/bin/env python3 | |
from typing import List | |
class RSAConfig: | |
def __init__(self, p, q, e, d): | |
self.p = p | |
self.q = q | |
self.n = p * q | |
self.phi = (p-1) * (q-1) | |
self.e = e |
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
#!/usr/bin/env python3 | |
# Written by Lari Liuhamo | |
import string | |
from typing import Generator | |
def caesar_cipher(message: str, shift: int, alphabet=string.ascii_uppercase) -> str: | |
""" | |
Performs the Caesar cipher on a given message (string) by shifting all characters using the given shift. |
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
from collections import deque | |
from typing import Generator | |
import warnings | |
def n_fibonacci(n: int = 2) -> Generator[int, None, None]: | |
""" | |
Returns a generator that yields the values of a Fibonacci sequence of a given 'base'. | |
When `n == 0`, the returned sequence simplifies to an infinite sequence of `0`. |