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 / sum_spiral_diagonals.py
Created November 28, 2019 02:42
sum of the numbers on the diagonals in a 1001 by 1001 spiral
grid_size = 1001
num = grid_size ** 2
sum_diagonals = num
for i in range(grid_size - 1, 0, -2):
for _ in range(4):
num -= i
sum_diagonals += num
print(sum_diagonals)
@voith
voith / quadratic_primes.py
Created November 16, 2019 19:38
Find the product of the coefficients, a and b, for the quadratic expression (n**2+n+41) that produces the maximum number of primes for consecutive values of n, starting with n=0.
from math import sqrt
MAX = 999999
sieve = [True] * (MAX + 1)
sieve[0], sieve[1] = False, False
for i in range(2, int(sqrt(MAX)) + 1):
if sieve[i] is True:
for j in range(2 * i, MAX, i):
@voith
voith / reciprocal_cycles.py
Created November 12, 2019 03:59
value of d < 1000 for which 1/d contains the longest recurring cycle in its decimal fraction par
largest_num = 1000
largest_divisor = 3
longest_cycle = 1
rdigits = ''
def get_divide_result(i):
seen_remainders = [False] * i
remainder = 10 % i
cycle_count = 0
while remainder!= 0 and seen_remainders[remainder] is False:
@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],