Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
#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
Exemple #4
0
#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