Add files via upload

now it's here
This commit is contained in:
TheLie0 2017-03-19 14:12:48 +01:00 committed by GitHub
parent d9906524c8
commit 35b162fc9d
7 changed files with 185 additions and 0 deletions

85
builtin_filters.py Normal file
View file

@ -0,0 +1,85 @@
import math
def Modulo2(num):
return num % 2
def Modulo3(num):
return num % 3
def Digits(num):
return int(math.log10(num)) + 1
def IsPrime(num):
if num == 1:
return 0
elif num == 2:
return 1
primeVar = 1
digits = int(math.log10(num)) + 1
if digits > 12:
for divider in range(2, int(num/10000000000)):
if num % divider == 0:
primeVar = 0
for i in range(2,10000000001):
for divider in range(int((i-1)*num/10000000000), int(i*num/10000000000)):
if num % divider == 0:
primeVar = 0
return primeVar
elif digits > 9:
for divider in range(2, int(num/10000000)):
if num % divider == 0:
primeVar = 0
for i in range(2,10000001):
for divider in range(int((i-1)*num/10000000), int(i*num/10000000)):
if num % divider == 0:
primeVar = 0
return primeVar
elif digits > 6:
for divider in range(2, int(num/10000)):
if num % divider == 0:
primeVar = 0
for i in range(2,10001):
for divider in range(int((i-1)*num/10000), int(i*num/10000)):
if num % divider == 0:
primeVar = 0
return primeVar
elif digits > 3:
for divider in range(2, int(num/10)):
if num % divider == 0:
primeVar = 0
for i in range(2,11):
for divider in range(int((i-1)*num/10), int(i*num/10)):
if num % divider == 0:
primeVar = 0
return primeVar
else:
for divider in range(2,num):
if num % divider == 0:
primeVar = 0
return primeVar
def Mod2Vis(num):
if Modulo2(num) == 0:
return " "
else:
return "X"
def Mod3Vis(num):
if Modulo3(num) == 0:
return " "
elif Modulo3(num) == 1:
return "X"
else:
return "O"
def PrimeVis(num):
if IsPrime(num) == 0:
return "_"
else:
return "X"

BIN
builtin_filters.pyc Normal file

Binary file not shown.

4
custom_filters.py Normal file
View file

@ -0,0 +1,4 @@
#put your own filters right here...
"""Example filter:
def AddOne(num):
return num + 1"""

BIN
custom_filters.pyc Normal file

Binary file not shown.

32
main.py Normal file
View file

@ -0,0 +1,32 @@
from triangle import Triangle, BeautifyTri, FilterTri
print """Hi! I'm glad You chose me as your go to Pascal's Triangle software! You are currently running my main.py,
so I assume You're interested in using my friendly I/O access. Feel free to also implement my functions
in any of your own code. For now, I will just ask you for the numbers of lines you want and which filter
to apply. A filter usually applies some function to each number in the triangle. You can create your own
filters in custom_filters.py. If you don't know what to do use the filter "help" ;). Have Fun!"""
while True:
error = False
try:
size = int(raw_input("Number of rows: "))
except ValueError:
print "Damn, I couldn't get that number. Please only use numerical characters here..."
error = True
if not error:
filter = raw_input("Filter: ")
if filter == "none":
print BeautifyTri(Triangle(size))
elif filter == "help" or filter == "Help" or filter == "HELP":
print """Here are all the builtin filters, try them out as you like:
- Modulo2
- Modulo3
- Digits
- IsPrime
- Mod2Vis
- Mod3Vis
- PrimeVis
!The Prime family of filters might take a while for triangles over 20 rows!"""
else:
print BeautifyTri(FilterTri(Triangle(size), filter))

64
triangle.py Normal file
View file

@ -0,0 +1,64 @@
from builtin_filters import *
from custom_filters import *
def Triangle(size):
"""takes int size. Generates a pascals triangle with that number of rows."""
if size == 1:
return [[1]]
else:
rows = Triangle(size-1)
newRow = [1]
for index in range(len(rows[-1])-1):
newRow.append(rows[-1][index] + rows[-1][index+1])
newRow.append(1)
rows.append(newRow)
return rows
def BeautifyTri(triangle = Triangle(10)):
"""takes triangle (default is normal Tri with length 10), returns middle-aligned tri."""
rowStrList = []
outStr = ""
for row in triangle:
rowStr = ""
for num in row:
rowStr += str(num) + " "
rowStrList.append(rowStr[:len(rowStr)])
for rowStr in rowStrList:
while len(rowStr) < len(rowStrList[-1]):
rowStr = " " + rowStr
if len(rowStr) < len(rowStrList[-1]):
rowStr += " "
rowStr += "\n"
outStr += rowStr
return outStr
def FilterTri(inTri = Triangle(10), filterFunc = Modulo2):
"""takes triangle inTri and/or function filterFunc (defaults are Triangle(10) and Modulo2).
Returns filtered Triangle."""
failed = False
if type(filterFunc) == str:
try:
filterFunc = eval(filterFunc)
except NameError:
failed = True
if failed:
print """This filter doesn't seem to exist :/ I imagine it would be really
cool if it did... Maybe create it? ^^ But since it would be really
boring if nothing happened, have a normal pascal's triangle."""
return Triangle(10)
outTri = []
for row in inTri:
outRow = []
for num in row:
try:
outNum = filterFunc(num)
outRow.append(outNum)
except NameError:
failed = True
outTri.append(outRow)
if failed:
print """This filter doesn't seem to exist :/ I imagine it would be really
cool if it did... Maybe create it? ^^ But since it would be really
boring if nothing happened, have a normal pascal's triangle."""
return Triangle(10)
return outTri

BIN
triangle.pyc Normal file

Binary file not shown.