Skip to content

Commit aa34381

Browse files
committed
Initial Commit
0 parents  commit aa34381

26 files changed

Lines changed: 493 additions & 0 deletions

aliquotSum.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import sys
2+
3+
classificationList = ['Alpha', 'Gamma', 'Beta']
4+
5+
6+
def calculateIndex(diff):
7+
if diff == 0:
8+
return 0
9+
return diff//abs(diff)
10+
11+
12+
def aliquotSum(n):
13+
return sum([x for x in range(1, n//2 + 1) if n % x == 0])
14+
15+
16+
def classify(n):
17+
return classificationList[calculateIndex(int(n) - aliquotSum(int(n))) + 1]
18+
19+
20+
print(classify(sys.argv[1]))

allDigitsEvenPerfectSquare.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import sys
2+
import math
3+
4+
START, LIMIT = 1000, 10000
5+
6+
7+
def allDigitsEven(num: int) -> bool:
8+
return not 1 in [int(x) & 1 for x in str(num)]
9+
10+
11+
def perfectSquare(num: int) -> bool:
12+
squareRoot = math.sqrt(num)
13+
return math.ceil(squareRoot) == math.floor(squareRoot)
14+
15+
16+
def numberList() -> list:
17+
return [num for num in range(START, LIMIT) if allDigitsEven(num) and perfectSquare(num)]
18+
19+
20+
print(numberList())

armstrong.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import sys
2+
START, LIMIT = int(sys.argv[1]), int(sys.argv[2])
3+
4+
5+
def make_armstrong(a: int, b: int) -> [int]:
6+
return [x for x in range(a, b) if is_armstrong(x)]
7+
8+
9+
def is_armstrong(n: int) -> bool:
10+
return n == sum(cubes(digits(n)))
11+
12+
13+
def cubes(ds: int) -> int:
14+
return [d**len(ds) for d in ds]
15+
16+
17+
def digits(n: int) -> [int]:
18+
return [int(ch) for ch in str(n)]
19+
20+
21+
print(make_armstrong(START, LIMIT))

armstrongNumbersRange.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import sys
2+
3+
4+
def countDigits(num: int) -> int:
5+
return len(str(num))
6+
7+
8+
def calculate(num: int) -> int:
9+
lenNum = countDigits(num)
10+
return sum([int(i)**lenNum for i in str(num)])
11+
12+
13+
def armstrong(start: int, stop: int) -> list:
14+
return [x for x in range(start, stop+1) if calculate(x) == x]
15+
16+
17+
print(armstrong(int(sys.argv[1]), int(sys.argv[2])))

collatz.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import sys
2+
3+
4+
def odd(n: int) -> bool:
5+
return n % 2 == 1
6+
7+
8+
def nextTerm(p: int) -> int:
9+
return 3*p+1 if odd(p) else p//2
10+
11+
12+
def series(start: int) -> [int]:
13+
if start == 4:
14+
return [4, 2, 1]
15+
else:
16+
return [start]+series(nextTerm(start))
17+
18+
19+
print(series(int(sys.argv[1])))

digitalRoot.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import sys
2+
3+
4+
def digitalRoot(num):
5+
return num % 9 if num % 9 else 9
6+
7+
8+
print(digitalRoot(int(sys.argv[1])))

encryptString.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import sys
2+
3+
dictionary = {'a': 0, 'e': 1, 'o': 2, 'u': 3}
4+
5+
6+
def changeCharacter(ch):
7+
return str(dictionary[ch]) if ch in dictionary else ch
8+
9+
10+
def newString(string):
11+
return ''.join(changeCharacter(x) for x in string)
12+
13+
14+
def encrypt(string):
15+
return newString(string[::-1])+'aca'
16+
17+
18+
print(encrypt(sys.argv[1]))

factorialTrailingZeros.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import sys
2+
3+
4+
def factorialTrailingZeros(num: int) -> int:
5+
count = 0
6+
i = 5
7+
while num//i:
8+
count += num//i
9+
i *= 5
10+
return count
11+
12+
13+
print(factorialTrailingZeros(int(sys.argv[1])))

fairRations.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
ODD = 'O'
2+
EVEN = 'E'
3+
4+
5+
def checkOdd(array: int) -> bool:
6+
return array & 1
7+
8+
9+
def is_solvable(loavesInHand: [int]) -> bool:
10+
return not checkOdd(sum(loavesInHand))
11+
12+
13+
def numberToEO(num: int) -> str:
14+
return ODD if checkOdd(num) else EVEN
15+
16+
17+
def convert(loaves: [int]) -> str:
18+
return ''.join([numberToEO(x) for x in loaves])
19+
20+
21+
def rsolve(oeloaves: str) -> int:
22+
if oeloaves.count(ODD) == 0:
23+
return 0
24+
if oeloaves[0] == EVEN:
25+
return rsolve(oeloaves[1:])
26+
if oeloaves[0] == ODD and oeloaves[1] == ODD:
27+
return 2 + rsolve(oeloaves[2:])
28+
if oeloaves[0] == ODD and oeloaves[1] == EVEN:
29+
return 2 + rsolve(ODD + oeloaves[2:])
30+
31+
32+
def solve(oeloaves: str) -> int:
33+
Es = oeloaves.split(ODD)
34+
relevantEs = Es[1::2]
35+
return sum([2*len(x)+2 for x in relevantEs])

groupAnagrams.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import sys
2+
3+
4+
def generateKey(word):
5+
return ''.join(sorted(word.lower()))
6+
7+
8+
def makeDictionary(array):
9+
dictionary = {}
10+
11+
for word in array:
12+
key = generateKey(word)
13+
if key in dictionary.keys():
14+
dictionary[key].append(word.lower())
15+
else:
16+
dictionary[key] = []
17+
dictionary[key].append(word.lower())
18+
19+
return dictionary
20+
21+
22+
def groupAnagrams(words):
23+
anagramDictionary = makeDictionary(words)
24+
25+
return [anagramDictionary[key] for key in anagramDictionary]
26+
27+
28+
print(groupAnagrams(sys.argv[1:]))

0 commit comments

Comments
 (0)