more shit
This commit is contained in:
parent
9f338ba2d7
commit
c6b545836a
10 changed files with 309 additions and 32 deletions
84
akstest.py
Normal file
84
akstest.py
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
'''
|
||||||
|
cache = {}
|
||||||
|
|
||||||
|
def binomcoeffb(n,k):
|
||||||
|
nom = 1
|
||||||
|
denum = 1
|
||||||
|
for i in range(n-k):
|
||||||
|
nom *= (n-i)
|
||||||
|
denum *= (i+1)
|
||||||
|
v = nom//denum
|
||||||
|
cache[(n,k)] = v
|
||||||
|
return v
|
||||||
|
|
||||||
|
def binomcoeffc(n,k):
|
||||||
|
if (n,k) in cache:
|
||||||
|
return cache[(n,k)]
|
||||||
|
if n == k or k == 0:
|
||||||
|
return 1
|
||||||
|
v = binomcoeffc(n-1,k-1) + binomcoeffc(n-1,k)
|
||||||
|
cache[(n,k)] = v
|
||||||
|
return v
|
||||||
|
|
||||||
|
def binomcoeff(n,k):
|
||||||
|
try:
|
||||||
|
v = binomcoeffc(n,k)
|
||||||
|
except RuntimeError:
|
||||||
|
v = binomcoeffb(n,k)
|
||||||
|
return v
|
||||||
|
|
||||||
|
def binomcoeffi():
|
||||||
|
l = [1,2,1]
|
||||||
|
i = 3
|
||||||
|
yield (i,l[1:-1])
|
||||||
|
|
||||||
|
while True:
|
||||||
|
i += 1
|
||||||
|
nl = [1]
|
||||||
|
for j in range(len(l)-1):
|
||||||
|
nl.append( l[j]+l[j+1] )
|
||||||
|
nl.append(1)
|
||||||
|
l = nl
|
||||||
|
yield (i,l[1:-1])
|
||||||
|
|
||||||
|
def is_prime(n):
|
||||||
|
if n <= 1:
|
||||||
|
return False
|
||||||
|
for n
|
||||||
|
bc = binomcoeff(n,k)
|
||||||
|
r = bc % n
|
||||||
|
# print("%d %% %d = %d" % (bc,n,r))
|
||||||
|
if r != 0:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
'''
|
||||||
|
class PrimeGenerator:
|
||||||
|
def __init__(self):
|
||||||
|
self.coeffs = [1,1]
|
||||||
|
self.prime = 1
|
||||||
|
|
||||||
|
def nextPrime(self):
|
||||||
|
self.step()
|
||||||
|
while not self.check():
|
||||||
|
self.step()
|
||||||
|
return self.prime
|
||||||
|
|
||||||
|
def step(self):
|
||||||
|
l = [1]
|
||||||
|
for j in range(len(self.coeffs)-1):
|
||||||
|
l.append(self.coeffs[j] + self.coeffs[j+1])
|
||||||
|
l.append(1)
|
||||||
|
self.coeffs = l
|
||||||
|
self.prime += 1
|
||||||
|
|
||||||
|
def check(self):
|
||||||
|
for i in range(1,len(self.coeffs)//2+1):
|
||||||
|
if self.coeffs[i] % self.prime != 0:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
pg = PrimeGenerator()
|
||||||
|
|
||||||
|
for i in range(10001):
|
||||||
|
print("%d: %d" % (i,pg.nextPrime()) )
|
20
back2black.py
Normal file
20
back2black.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
from sys import stdout as out
|
||||||
|
|
||||||
|
p = {}
|
||||||
|
for i in range(1,91):
|
||||||
|
p[i] = 0
|
||||||
|
|
||||||
|
for i in range(2,91):
|
||||||
|
n = i
|
||||||
|
while n <= 90:
|
||||||
|
p[n]+=1
|
||||||
|
n += i
|
||||||
|
|
||||||
|
for i in range(9):
|
||||||
|
for j in range(10):
|
||||||
|
if p[i*10+j+1] % 2 == 0:
|
||||||
|
out.write("o")
|
||||||
|
else:
|
||||||
|
out.write(" ")
|
||||||
|
out.write("\n")
|
||||||
|
|
43
binomial.py
43
binomial.py
|
@ -1,34 +1,13 @@
|
||||||
def pascal(n):
|
def binomcoeff(n,k):
|
||||||
if n == 0:
|
nom = 1
|
||||||
return [1]
|
denum = 1
|
||||||
p = [1,1]
|
for i in range(n-k):
|
||||||
for i in range(n-1):
|
nom *= (n-i)
|
||||||
pn = [1]
|
denum *= (i+1)
|
||||||
for j in range(len(p)-1):
|
v = nom//denum
|
||||||
pn.append(p[j]+p[j+1])
|
return v
|
||||||
pn.append(1)
|
|
||||||
p = pn
|
|
||||||
return p
|
|
||||||
|
|
||||||
def binomial(n):
|
def E(n,k):
|
||||||
i = n
|
return binomcoeff(2*n+k,n)*binomcoeff(n+k,n)//2
|
||||||
j = 0
|
|
||||||
for c in pascal(n):
|
|
||||||
yield (c,i,j)
|
|
||||||
i -= 1
|
|
||||||
j += 1
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
print(E(1,2), E(2,1), E(2,2), E(3,1))
|
||||||
print("Form: (x+y)^n")
|
|
||||||
x = float(input("Insert x:"))
|
|
||||||
y = float(input("Insert y:"))
|
|
||||||
n = int(input("Insert n:"))
|
|
||||||
|
|
||||||
assert(n>0)
|
|
||||||
res = 0
|
|
||||||
s = []
|
|
||||||
for (c,i,j) in binomial(n):
|
|
||||||
s.append("%d*(%.2f)^%d*(%.2f)^%d" % (c,x,i,y,j))
|
|
||||||
res += c * x**i * y**j
|
|
||||||
print(" + ".join(s))
|
|
||||||
print("Result: %f" % res)
|
|
||||||
|
|
30
check_prime.py
Normal file
30
check_prime.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
from sys import argv
|
||||||
|
|
||||||
|
def binomcoeff(n,k):
|
||||||
|
nom = 1
|
||||||
|
denum = 1
|
||||||
|
for i in range(n-k):
|
||||||
|
nom *= (n-i)
|
||||||
|
denum *= (i+1)
|
||||||
|
v = nom//denum
|
||||||
|
return v
|
||||||
|
|
||||||
|
def is_prime(n):
|
||||||
|
if n <= 1:
|
||||||
|
return False
|
||||||
|
for k in range(1,n):
|
||||||
|
bc = binomcoeff(n,k)
|
||||||
|
r = bc % n
|
||||||
|
# print("%d %% %d = %d" % (bc,n,r))
|
||||||
|
if r != 0:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
if len(argv) > 1:
|
||||||
|
p = int(argv[1])
|
||||||
|
if is_prime(p):
|
||||||
|
print("%d is a prime" % p)
|
||||||
|
else:
|
||||||
|
print("%d is not a prime" % p)
|
||||||
|
else:
|
||||||
|
print("%s <number>" % argv[0])
|
29
crc3.py
Normal file
29
crc3.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
from math import log, floor
|
||||||
|
|
||||||
|
tobin = lambda v: v>0 and tobin(v>>1).lstrip('0')+str(v&1) or '0'
|
||||||
|
|
||||||
|
def calcremainder(v,coeff):
|
||||||
|
n = floor(log(coeff,2))
|
||||||
|
v = v << n
|
||||||
|
r = v
|
||||||
|
while (r>>n) > 0:
|
||||||
|
m = floor(log(r,2))
|
||||||
|
p = coeff<<(m-n)
|
||||||
|
r = r ^ p
|
||||||
|
return v,r
|
||||||
|
|
||||||
|
def create(b,coeff=0b1011):
|
||||||
|
v,r = calcremainder(b,coeff)
|
||||||
|
return v+r
|
||||||
|
|
||||||
|
def check(b,coeff=0b1011):
|
||||||
|
_,r = calcremainder(b,coeff)
|
||||||
|
return r == 0
|
||||||
|
|
||||||
|
a = int("11010011101100",2)
|
||||||
|
|
||||||
|
print( "V:" + tobin( a ) )
|
||||||
|
c = create(a)+1
|
||||||
|
print("CRC-Data: " + tobin( c ) )
|
||||||
|
|
||||||
|
print("Correct?: " + ( check(c) and "Yes" or "No"))
|
30
goatdoor.py
Normal file
30
goatdoor.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
from random import shuffle, randint
|
||||||
|
|
||||||
|
result = { "swap": 0, "not_swap": 0 }
|
||||||
|
|
||||||
|
doors = [ 0, 0, 1]
|
||||||
|
door_indices = list(range(3))
|
||||||
|
|
||||||
|
for i in range(500):
|
||||||
|
shuffle(doors)
|
||||||
|
shuffle(door_indices)
|
||||||
|
door_chosen, door_opened, door_swap = door_indices
|
||||||
|
if doors[door_opened] == 1:
|
||||||
|
door_swap, door_opened = door_opened, door_swap
|
||||||
|
|
||||||
|
if doors[door_swap] == 1:
|
||||||
|
result["swap"] += 1
|
||||||
|
elif doors[door_chosen] == 1:
|
||||||
|
result["not_swap"] += 1
|
||||||
|
else:
|
||||||
|
print("WTF?")
|
||||||
|
break
|
||||||
|
|
||||||
|
p100 = result["swap"] + result["not_swap"]
|
||||||
|
|
||||||
|
p_swap = result["swap"]*100/p100
|
||||||
|
|
||||||
|
p_not_swap = result["not_swap"]*100/p100
|
||||||
|
|
||||||
|
print("Swap door\t: %.2f%%" % p_swap)
|
||||||
|
print("Don't swap door\t: %.2f%%" % p_not_swap)
|
26
johnsbeauty.py
Normal file
26
johnsbeauty.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
def countchars(s):
|
||||||
|
chars = list(map(chr,range(ord('a'),ord('z')+1)))
|
||||||
|
counts = {}
|
||||||
|
for c in s.lower():
|
||||||
|
if c not in chars:
|
||||||
|
continue
|
||||||
|
if c not in counts:
|
||||||
|
counts[c] = 1
|
||||||
|
else:
|
||||||
|
counts[c] += 1
|
||||||
|
|
||||||
|
keys = [ (c,counts[c]) for c in counts ]
|
||||||
|
keys.sort(key=lambda c: -c[1])
|
||||||
|
return keys
|
||||||
|
|
||||||
|
def maximumbeauty(s):
|
||||||
|
clist = countchars(s)
|
||||||
|
maxbeauty = 0
|
||||||
|
beauty = 26
|
||||||
|
for c, count in clist:
|
||||||
|
maxbeauty += count * beauty
|
||||||
|
beauty -= 1
|
||||||
|
return maxbeauty
|
||||||
|
|
||||||
|
for s in ["ABbCcc","Good luck in the Facebook Hacker Cup this year!","Ignore punctuation, please :)", "Sometimes test cases are hard to make up.","So I just go consult Professor Dalves"]:
|
||||||
|
print("%s: %d" % (s, maximumbeauty(s)))
|
24
piart.py
Normal file
24
piart.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
import svgwrite as svg
|
||||||
|
import random
|
||||||
|
|
||||||
|
def randomcolor():
|
||||||
|
r = random.randint(100,200)
|
||||||
|
g = random.randint(100,200)
|
||||||
|
b = random.randint(100,200)
|
||||||
|
|
||||||
|
return "#%02X%02X%02X" % (r,g,b)
|
||||||
|
|
||||||
|
dg = svg.Drawing('piart.svg', size=(1920,1080), profile="full")
|
||||||
|
|
||||||
|
#Background
|
||||||
|
bg = dg.add(dg.g(id='background', fill='#2C2E2F'))
|
||||||
|
bg.add(dg.rect(insert=(0,0),size=(u'100%',u'100%'),rx=0,ry=0))
|
||||||
|
|
||||||
|
#circle
|
||||||
|
circle = dg.add(dg.g(id='circle'))
|
||||||
|
for x in range(1,111):
|
||||||
|
for y in range(1,62):
|
||||||
|
circle.add(dg.circle(center=(10+5+x*17,10+5+y*17),r=5,fill=randomcolor()))
|
||||||
|
|
||||||
|
dg.save()
|
||||||
|
|
2
piart.svg
Normal file
2
piart.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 324 KiB |
53
spr.py
Normal file
53
spr.py
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
A = "A"
|
||||||
|
B = "B"
|
||||||
|
C = "C"
|
||||||
|
#D = "D"
|
||||||
|
E = "E"
|
||||||
|
F = "F"
|
||||||
|
|
||||||
|
nodes = [A,B,C,E,F]
|
||||||
|
|
||||||
|
edges = {
|
||||||
|
(A,B,3),
|
||||||
|
(A,C,4),
|
||||||
|
# (B,D,5),
|
||||||
|
(B,E,2),
|
||||||
|
# (C,D,1),
|
||||||
|
# (D,E,2),
|
||||||
|
# (D,F,4),
|
||||||
|
(E,F,6)
|
||||||
|
}
|
||||||
|
|
||||||
|
def getadjacent(node, edges):
|
||||||
|
adjacent = set()
|
||||||
|
for (s,t,l) in edges:
|
||||||
|
if s == node:
|
||||||
|
adjacent.add( (t,l) )
|
||||||
|
elif t == node:
|
||||||
|
adjacent.add( (s,l) )
|
||||||
|
return adjacent
|
||||||
|
|
||||||
|
|
||||||
|
def spr(s,t, nodes, edges):
|
||||||
|
nodes = set(nodes)
|
||||||
|
m = { s:(0,[s])}
|
||||||
|
S = set([s])
|
||||||
|
S2 = set(S)
|
||||||
|
while S < nodes:
|
||||||
|
for s in set(S2):
|
||||||
|
S2.remove( s )
|
||||||
|
l,p = m[s]
|
||||||
|
for (ad,sl) in getadjacent(s, edges):
|
||||||
|
if ad not in S:
|
||||||
|
m[ad] = (l+sl,p+[ad])
|
||||||
|
else:
|
||||||
|
ad_l,_ = m[ad]
|
||||||
|
if ad_l > l+sl:
|
||||||
|
m[ad] = (l+sl,p+[ad])
|
||||||
|
S.add( ad )
|
||||||
|
S2.add( ad )
|
||||||
|
return m[t]
|
||||||
|
|
||||||
|
|
||||||
|
print( spr(A,F, nodes, edges) )
|
||||||
|
|
Loading…
Reference in a new issue