def compressed_index_to_file_fibonacci(index, out_file_name): print "Compressing with fibonacci..." from kbp.univ import fibonacci import struct file_name = out_file_name + "_fibonacci" f = open(file_name, 'wb') for k, v in index.items(): word_len = len(k.encode("utf-8")) f.write(struct.pack('I', word_len)) f.write(k.encode("utf-8")) f.write(struct.pack('I', v[0])) entries = "" for i in v[1]: entries += fibonacci.encode(i + 1) if len(entries) % 32 != 0: zeroes = 32 - len(entries) % 32 for i in range(zeroes): entries += "0" numbers = [] count = len(entries) / 32 for idx in range(0, count): numbers.append(int(entries[idx * 32:(idx + 1) * 32], 2)) f.write(struct.pack('I', count)) for number in numbers: f.write(struct.pack('I', number)) f.close() return
def compressed_index_to_file_fibonacci(index, out_file_name): print "Compressing with fibonacci..." from kbp.univ import fibonacci import struct file_name = out_file_name + "_fibonacci" f = open(file_name, "wb") for k, v in index.items(): word_len = len(k.encode("utf-8")) f.write(struct.pack("I", word_len)) f.write(k.encode("utf-8")) f.write(struct.pack("I", v[0])) entries = "" for i in v[1]: entries += fibonacci.encode(i + 1) if len(entries) % 32 != 0: zeroes = 32 - len(entries) % 32 for i in range(zeroes): entries += "0" numbers = [] count = len(entries) / 32 for idx in range(0, count): numbers.append(int(entries[idx * 32 : (idx + 1) * 32], 2)) f.write(struct.pack("I", count)) for number in numbers: f.write(struct.pack("I", number)) f.close() return
#Kabopan - Readable Algorithms. Public Domain, 2007-2009 from kbp.univ.fibonacci import ( \ number, generate_numbers, decompose, recompose, encode, decode) assert number(20) == 6765 assert generate_numbers(20) == [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765] assert decompose(10) == [3, 6] assert decompose(6764) == [3, 5, 7, 9, 11, 13, 15, 17, 19] assert recompose(decompose(6764)) == 6764 assert encode(7) == "001011" assert encode(6764) == "00101010101010101011" assert decode("01011") == 4 assert decode("001011") == 7
#Kabopan - Readable Algorithms. Public Domain, 2007-2009 from kbp.univ.fibonacci import ( \ number, generate_numbers, decompose, recompose, encode, decode) assert number(20) == 6765 assert generate_numbers(20) == [ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 ] assert decompose(10) == [3, 6] assert decompose(6764) == [3, 5, 7, 9, 11, 13, 15, 17, 19] assert recompose(decompose(6764)) == 6764 assert encode(7) == "001011" assert encode(6764) == "00101010101010101011" assert decode("01011") == 4 assert decode("001011") == 7