Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/suddi/coding-challenges
Solutions to common coding challenge questions answered in Python, JavaScript, C++ and Go
https://github.com/suddi/coding-challenges
algorithm-challenges coding-challenges python
Last synced: 15 days ago
JSON representation
Solutions to common coding challenge questions answered in Python, JavaScript, C++ and Go
- Host: GitHub
- URL: https://github.com/suddi/coding-challenges
- Owner: suddi
- License: mit
- Created: 2016-11-27T05:48:17.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-04-01T23:02:31.000Z (8 months ago)
- Last Synced: 2024-10-12T13:43:44.720Z (about 1 month ago)
- Topics: algorithm-challenges, coding-challenges, python
- Language: C++
- Homepage:
- Size: 3.17 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Coding Challenges
[![CircleCI](https://circleci.com/gh/suddi/coding-challenges.svg?style=svg)](https://circleci.com/gh/suddi/coding-challenges)
[![codecov](https://codecov.io/gh/suddi/coding-challenges/branch/master/graph/badge.svg)](https://codecov.io/gh/suddi/coding-challenges)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f49da84091a24ef8bae87bdc4ed10423)](https://www.codacy.com/app/Suddi/coding-challenges)
[![David](https://img.shields.io/david/suddi/coding-challenges.svg)](https://david-dm.org/suddi/coding-challenges)
[![David](https://img.shields.io/david/dev/suddi/coding-challenges.svg)](https://david-dm.org/suddi/coding-challenges?type=dev)
[![license](https://img.shields.io/github/license/suddi/coding-challenges.svg)](https://github.com/suddi/coding-challenges/blob/master/LICENSE)[![codecov](https://codecov.io/gh/suddi/coding-challenges/branch/master/graphs/commits.svg)](https://codecov.io/gh/suddi/coding-challenges)
Solutions to common coding challenge questions answered in Python 3.8, Node.js 12, C++ 11 and Go 1.14.
## Setup
````sh
# Using virtualenvwrapper to manage virtual environments
pip install virtualenvwrapper
````````sh
mkvirtualenv coding-challenges# Install dependencies for Python
pip install --requirement requirements.txt --requirement test_requirements.txt# Install dependencies for Node.js
npm install
````## Lint
````sh
# Lint Python code with Pylint
python setup.py lint# Lint Node.js code with Eslint
npm run lint
````## Test
````sh
# Run Python doctests with Pytest
python setup.py test# Run Node.js doctests with Mocha and jsdoctest
npm test# Run C++ doctests with doctest.h at c++/doctest.h
node cpp_runner.js
````## Python Cheatsheet
### General
````py
# Swap numbers a, b
a = 3 # O(1)
b = 2 # O(1)
# a = 2, b = 3
a, b = b, a # O(1)# Format print statements
# a = 2, b = 3
print("a = {0}, b = {1}".format(a, b)) # O(1)# False
all([3, 2, -1, 0]) # O(N)# True
any([3, 2, -1, 0]) # O(N)# '0b1000'
bin(8) # O(1)# '0x58'
hex(88) # O(1)# True
bool(-1) # O(1)# '0'
chr(48) # O(1)
# 'A'
chr(65) # O(1)
# 'a'
chr(97) # O(1)
# 97
ord('a') # O(1)# See all operations available
dir(list) # O(1)# Get position and value during iteration
position, value = enumerate([3, 2, -1, 0]) # O(N)# Iterate through range
range(0, 5) # O(N)# Take input from stdin
a = input('What is your name? ') # O(1)# True
isinstance([3, 2, 1], list) # O(1)# 'el'
'hello'[slice(1, 3, 1)] # O(j - i)# ['e', 'h', 'l', 'l', 'o']
sorted('hello') # O(N)
````### Functional Programming
````py
# [2, 4, 6]
list(map(lambda x: x * 2, [1, 2, 3])) # O(N)# [5, 7, 9]
list(map(lambda x, y: x + y, [1, 2, 3], [4, 5, 6])) # O(N)# [1, 3]
list(filter(lambda x: x % 2, [1, 2, 3])) # O(N)
````### Math
````py
# Set to infinity
a = float('inf') # O(1)# Set to negative infinity
a = float('-inf') # O(1)# Raise to exponential power
# 8
2 ** 3 # O(1)
# 8
pow(2, 3) # O(1)# 32.3
abs(-32.3) # O(1)# Returns a tuple containing the quotient and remainder
# (2, 2)
divmod(8, 3) # O(1)# 4.22
round(4.222, 2) # O(1)# 9
sum([3, 4, 2]) # O(1)
````### String Operations
````py
a = 'python is awesome!' # O(1)# 'Python is awesome!'
a.capitalize() # O(1)# 'python is awesome!'
a.lower() # O(N)# 'PYTHON IS AWESOME!'
a.upper() # O(N)# 'Python Is Awesome!'
a.title() # O(N)# 2
a.count('o') # O(1)# True
a.endswith('!') # O(1)# False
a.startswith('javascript') # O(1)# 7
a.find('is') # O(N)# -1
a.find('not') # O(N)# 7
a.index('is') # O(N)# a = 'python is awesome'
a = a[:-1] # O(N)# a = 'pythonisawesome'
a = a.replace(' ', '') # O(N)# True
a.isalnum() # O(N)# True
a.isalpha() # O(N)# False
a.isdecimal() # O(N)# False
a.isdigit() # O(N)# True
a.isidentifier() # O(N)# False
a.isnumeric() # O(N)# False
a.isspace() # O(N)# False
a.istitle() # O(1)# True
a.islower() # O(N)# False
a.isupper() # O(N)# '-pythonisawesome-pythonisawesome-'
a.join('---') # O(N)# 'pythonisawesome '
a.ljust(20) # O(N)# ' pythonisawesome'
a.rjust(20) # O(N)# 'PYTHONISAWESOME'
a.swapcase() # O(N)# 'pythonisawesome'
a.lstrip() # O(N)# 'pythonisawesome'
a.rstrip() # O(N)# 'pythonisawesome'
a.strip() # O(N)# ['python', 'awesome']
a.split('is') # O(N)
````### List Operations
````py
a = [5] # O(1)# a = 5
a[0] # O(1)# 1
len(a) # O(1)# a = [5, 4]
a.append(4) # O(1)b = [3, 2] # O(1)
# a = [5, 4, 3, 2]
a.extend(b) # O(len(b)) => O(N)b = [1, 0] # O(1)
# [5, 4, 3, 2, 1, 0]
a + b # O(len(b)) => O(N)# b = 2, a = [5, 4, 3]
b = a.pop() # O(1)# a = []
a.clear() # O(1)# a = [5, 4, 3, 2, 1, 0]
a = [5, 4, 3, 2, 1, 0] # O(1)# [3, 2]
a[2:4] # O(4 - 2) => O(j - i)# b = [5, 4, 3, 2, 1, 0]
b = [5, 4, 3, 2, 1, 0] # O(1)# True
a == b # O(N)# False
a != b # O(N)# a = [6, 5, 4, 3, 2, 1, 0]
a.insert(0, 6) # O(N)# a = [5, 4, 3, 2, 1, 0]
del a[0] # O(N)# a = [5, 3, 2, 1, 0]
a.remove(4) # O(N)v = 9 # O(1)
# False
v in a # O(N)# [5, 3, 2, 1, 0]
a.copy() # O(N)# b = 5, a = [3, 2, 1, 0]
b = a.pop(0) # O(N)# 0
min(a) # O(N)# 3
max(a) # O(N)# a = [0, 1, 2, 3]
a.reverse() # O(N)# a = [0, 1, 2, 3], b = [0, 10, 20, 30]
b = []
for value in a: # O(N)
b.append(value * 10) # O(1)# a = [0, 1, 2, 3], b = [0, 10, 20, 30]
b = map(lambda v: v * 10, a) # O(N)# a = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]
a = 3 * a # O(3N) => O(kN)# a = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3]
a.sort() # O(NlogN)# a = [3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0]
a.sort(reverse=True) # O(NlogN)# 9
a.index(0) # O(N)# 3
a.count(1) # O(N)
````### Dictionary Operations
````py
a = {'i': 4, 'j': 5, 'k': 6, 'l': 9, 'm': 2} # O(1)# 4
a['i'] # O(1)# a = {'i': 1, 'j': 5, 'k': 6, 'l': 9, 'm': 2}
a['i'] = 1 # O(1)# 5
len(a) # O(1)# a = {'j': 5, 'k': 6, 'l': 9, 'm': 2}
del a['i'] # O(1)# 10
a.get('i', 10) # O(1)# a = {'j': 5, 'k': 6, 'l': 9, 'm': 2, 'i': 1}
a.setdefault('i', 1) # O(1)# 1, a = {'j': 5, 'k': 6, 'l': 9, 'm': 2}
a.pop('i') # O(1)# ('m', 2), a = {'j': 5, 'k': 6, 'l': 9}
a.popitem() # O(1)v = 9
# False
v in a # O(1)# ['j', 'k', 'l']
a.keys() # O(1)# [5, 6, 9]
a.values() # O(1)# [('j', 5), ('k', 6), ('l', 9)]
a.items() # O(1)# a = {}
a.clear() # O(1)b = [('c', 1), ('d', 3)]
# a = {'c': 1, 'd': 3}
a = dict(b) # O(N)# False
a == b # O(N)
# True
a == dict(b) # O(N)# True
a != b # O(N)# a = {'c': 12, 'd': 3}
a['c'] = 12 # O(1)# 'c'
min(a) # O(N)# 'd'
max(a) # O(N)b = ['a', 'e', 'i', 'o', 'u'] # O(1)
# a = {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'vowel', 'u': 'vowel'}
a = a.fromkeys(b, 'vowel') # O(N)# {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'vowel', 'u': 'vowel'}
a.copy() # O(N)# {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'meh', 'u': 'vowel', 'y': 'not-really-a-vowel'}
a.update({'y': 'not-really-a-vowel', 'o': 'meh'}) # O(N)
````### Tuple Operations
````py
a = (4, 5, 6, 9, 2) # O(1)# 4
a[0] # O(1)# 5
len(a) # O(1)# [6, 9]
a[2:4] # O(4 - 2) => O(j - i)b = [1, 3] # O(1)
# b = (1, 3)
tuple(b) # O(len(b)) => O(N)# False
a == b # O(N)# True
a != b # O(N)v = 9 # O(1)
# True
v in a # O(N)# 2
min(a) # O(N)# 9
max(a) # O(N)b = []
# b = [8, 10, 12, 18, 4]
for v in a # O(N)
b.append(a * 2) # O(1)# (4, 5, 6, 9, 2, 4, 5, 6, 9, 2, 4, 5, 6, 9, 2)
3 * a # O(3N) => O(kN)# 3
a.count(2) # O(N)# 4
a.index(2) # O(N)
````### Set Operations
````py
a = set([4, 5, 6, 9, 2, 4]) # O(1)# 5
len(a) # O(1)# a = {2, 4, 5, 6, 7, 9}
a.add(7) # O(1)v = 9 # O(1)
# True
v in a # O(1)# a = {2, 4, 5, 7, 9}
a.remove(6) # O(1)# a = {2, 4, 7, 9}
a.discard(5) # O(1)# 2, a = {4, 7, 9}
a.pop() # O(1)# a = {}
a.clear() # O(1)b = [1, 1, 3] # O(1)
a = {1, 3}
a = set(b) # O(len(b)) => O(N)b = {} # O(1)
# a = {1, 3}, b = {1, 2, 3, 6}
for v in a # O(N)
b.add(a * 2) # O(1)# False
a == b # O(N)# True
a != b # O(N)# True
a < b # O(N)# True
a <= b # O(N)# False
a > b # O(N)# False
a >= b # O(N)# {1, 2, 3, 6}
a | b # O(len(a) + len(b)) => O(M + N)# {1, 3}
a & b # O(len(a) + len(b)) => O(M + N)# {}
a - b # O(len(a) + len(b)) => O(M + N)# {2, 6}
a ^ b # O(len(a) + len(b)) => O(M + N)# {1, 3}
a.copy() # O(N)# 1
min(a) # O(N)# 3
max(a) # O(N)
````### Object Operations
````py
class A():
def __init__(self): # O(1)
self.a = 42 # O(1)v = A() # O(1)
# False
hasattr(v, 'b') # O(1)# 42
getattr(v, 'a') # O(1)# v.a = 42, v.b = 36
setattr(v, 'b', 36) # O(1)# v.b = 36
delattr(v, 'a') # O(1)
````