import sys
APP = sys.argv[0].split('/')[-1]
def usage():
print("Usages:")
print("%s <-L #|-n #|-l #>" % APP)
print("%s <-f infile> <-o outfile>" % APP)
print("")
print(" -L : print # items of suite")
print(" -l : return the nearest item")
print(" -n : print # index of suite")
print("")
print("-E : end of index in array of fibonnaci numbers")
print("-S : start of index in array of fibonnaci numbers")
print("-Z : size fibonnaci list")
print("")
print("-f : source file")
print("-o : dest file")
print("")
sys.exit()
def fibonnaci_list(n):
ret = []
i = 0
b = 0
a = 1
while( i < n ):
i += 1
ret.append(b)
t = a
a = b
b = t+b
return(ret)
i,a,b = 0,1,0
n,l = 10,2**64
t = 0
lim = 0
dolist = 0
last = 0
src_file = ""
dst_file = ""
start = 0
end = 256
size = 2000
for id in range(1,len(sys.argv[1:])+1):
av = sys.argv[id]
if av == "-h":
usage()
if av == "-S":
start = sys.argv[id+1]
if av == "-E":
end = sys.argv[id+1]
if av == "-Z":
size = sys.argv[id+1]
if av == "-L":
dolist = 1
n = int(sys.argv[id+1])
if av == "-f":
src_file = sys.argv[id+1]
if av == "-o":
dst_file = sys.argv[id+1]
if av == "-n":
n = int(sys.argv[id+1])
lim = 0
elif av == "-l":
l = int(sys.argv[id+1])
n = l
lim = 1
if src_file:
r = fibonnaci_list(int(size))[int(start):int(end)]
d = b""
b = open(src_file,"rb").read()
while i < len(b):
c = b[i]
e = c^(r[i%len(r)]%256)
d += bytes([e])
i += 1
if dst_file:
open(dst_file,"wb").write(d)
else:
print(d)
exit()
while( i < n ):
i += 1
if dolist == 1:
if b <= l:
print("%-3s | %s" % (i,b))
else:
if lim == 0:
if i == n:
print("%-3s | %s" % (i,b))
if lim == 1:
if b < l:
last = b
else:
break
t = a
a = b
b = t+b