Skip to content

Instantly share code, notes, and snippets.

View voith's full-sized avatar
👨‍🎓
Building on top of Ethereum

Voith voith

👨‍🎓
Building on top of Ethereum
View GitHub Profile
@voith
voith / nth_lexographic_permutation.py
Last active November 12, 2019 04:20
millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9
from math import factorial
numbers = list(range(10))
nth_perm = 1000000
total_numbers = len(numbers)
num = ''
def get_factorial_divisor(factorial, dividend):
@voith
voith / sum_of_2_non_abundant.py
Created November 10, 2019 00:49
sum of all the positive integers which cannot be written as the sum of two abundant numbers.
from math import sqrt
def sum_of_divisors(number):
_sum = 1
nsqrt = int(sqrt(number))
for i in range(2, nsqrt + 1):
if number % i == 0:
_sum += i
if (number / i != nsqrt):
@voith
voith / sum_amicable.py
Created November 5, 2019 16:40
sum of all the amicable numbers under 10000
from math import sqrt
def _sum_of_proper_divisors(n, sum_of_proper_divisors):
_sum = 1
sqrt_n = int(sqrt(n))
for i in range(2, sqrt_n+1):
if n % i == 0:
_sum += i
if n // i != i:
_sum += n // i
@voith
voith / no_sundays.py
Created November 5, 2019 13:03
Calculate number of Sundays that fell on the first of the month during the twentieth century.
def check_if_leap_year(year: int) -> bool:
if (
year % 4 == 0 and year % 100 != 0
) or (
year % 400 == 0
):
return True
else:
return False
@voith
voith / maximum_path_sum.py
Created November 5, 2019 09:22
find maximum sum in a triangle of numbers while moving from top to bottom
arr = [
[75],
[95, 64],
[17, 47, 82],
[18, 35, 87, 10],
[20, 4, 82, 47, 65],
[19, 1, 23, 75, 3, 34],
[88, 2, 77, 73, 7, 63, 67],
[99, 65, 4, 28, 6, 16, 70, 92],
[41, 41, 26, 56, 83, 40, 80, 70, 33],
@voith
voith / no_of_prime_factors.py
Created October 22, 2019 21:48
First triangle number to have over five hundred divisors
from collections import defaultdict
from math import sqrt
def number_prime_factors(n):
factors = defaultdict(int)
while(n % 2 == 0):
factors[2] += 1
n = n // 2
@voith
voith / matrix_adjacent_product.py
Created October 22, 2019 10:16
Greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?
matrix = [
[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],
[49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0],
[81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65],
[52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],
[22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80],
[24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50],
[32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70],
[67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21],
[24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72],
@voith
voith / sieve_of_eratosthenes.py
Last active October 21, 2019 17:44
sum of first 2000000 prime numbers
"""
sum of first 2000000 prime numbers
output: 142913828922
"""
num = 2000000
sieve = [True] * num
sieve[0] = False
i = 2
while (i * i <= num):
import asyncio
import json
import websockets
from web3.providers import WebsocketProvider
class CustomWebsocketProvider(WebsocketProvider):
@voith
voith / script.sh
Created August 21, 2019 12:08
Readline fix for version 7 on OSX
# I use py-env to handle different python versions.
# When I installed python3.7 the `libreadline.7.dylib` image went missing.
# the fix was to create a softlink of the new dylib
ln -s /usr/local/opt/readline/lib/libreadline.8.0.dylib /usr/local/opt/readline/lib/libreadline.7.dylib