add logo and update gcd and make lcm
This commit is contained in:
@ -1,3 +1,4 @@
|
||||

|
||||
# 30-seconds-of-code-python
|
||||
Python implementation of 30-seconds-of-code.
|
||||
|
||||
|
||||
16
scripts/pretty.py
Normal file
16
scripts/pretty.py
Normal file
@ -0,0 +1,16 @@
|
||||
from yapf.yapflib.yapf_api import FormatCode
|
||||
import re
|
||||
import pprint
|
||||
import os
|
||||
files = os.listdir('../snippets')
|
||||
codeRe = "```\s*python([\s\S]*?)```"
|
||||
for file in files:
|
||||
someFile = open("../snippets/" + file)
|
||||
fileData = someFile.read()
|
||||
someFile.close()
|
||||
originalCode = re.search(codeRe,fileData).group(0)
|
||||
formatedCode = FormatCode(re.split(codeRe,fileData)[1])
|
||||
fileToSave = fileData.replace(originalCode,('```python \n'+formatedCode[0]+'\n```\n'))
|
||||
someFile = open("../snippets/"+file,'w')
|
||||
someFile.write(fileToSave)
|
||||
someFile.close()
|
||||
@ -8,6 +8,8 @@ Uses the reduce function from the inbuild module `functools`. Also defines a met
|
||||
|
||||
```python
|
||||
from functools import reduce
|
||||
|
||||
|
||||
def spread(arg):
|
||||
ret = []
|
||||
for i in arg:
|
||||
@ -16,10 +18,22 @@ def spread(arg):
|
||||
else:
|
||||
ret.append(i)
|
||||
return ret
|
||||
|
||||
|
||||
def gcd(*args):
|
||||
numbers = []
|
||||
numbers.extend(spread(list(args)))
|
||||
def helperGcd(x,y):
|
||||
|
||||
def _gcd(x, y):
|
||||
return x if not y else gcd(y, x % y)
|
||||
return reduce((lambda x,y : helperGcd(x,y)),numbers)
|
||||
|
||||
return reduce((lambda x, y: _gcd(x, y)), numbers)
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
``` python
|
||||
gcd(8,36); # 4
|
||||
```
|
||||
40
snippets/lcm.md
Normal file
40
snippets/lcm.md
Normal file
@ -0,0 +1,40 @@
|
||||
### lcm
|
||||
|
||||
Returns the least common multiple of two or more numbers.
|
||||
|
||||
Use the `greatest common divisor (GCD)` formula and the fact that `lcm(x,y) = x * y / gcd(x,y)` to determine the least common multiple. The GCD formula uses recursion.
|
||||
|
||||
```python
|
||||
from functools import reduce
|
||||
|
||||
|
||||
def spread(arg):
|
||||
ret = []
|
||||
for i in arg:
|
||||
if isinstance(i, list):
|
||||
ret.extend(i)
|
||||
else:
|
||||
ret.append(i)
|
||||
return ret
|
||||
|
||||
|
||||
def lcm(*args):
|
||||
numbers = []
|
||||
numbers.extend(spread(list(args)))
|
||||
|
||||
def _gcd(x, y):
|
||||
return x if not y else gcd(y, x % y)
|
||||
|
||||
def _lcm(x, y):
|
||||
return x * y / _gcd(x, y)
|
||||
|
||||
return reduce((lambda x, y: _lcm(x, y)), numbers)
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
``` python
|
||||
lcm(12, 7); # 84
|
||||
lcm([1, 3, 4], 5); # 60
|
||||
```
|
||||
1
snippetsgcd.md
Normal file
1
snippetsgcd.md
Normal file
@ -0,0 +1 @@
|
||||
fileToSave
|
||||
BIN
stopwatch.png
Normal file
BIN
stopwatch.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 98 KiB |
Reference in New Issue
Block a user