示例#1
0
文件: sparse.py 项目: Androbos/MoAL
if __name__ == '__main__':
    from os import getcwd
    from os import sys
    sys.path.append(getcwd())

from MOAL.helpers.display import Section
from MOAL.helpers.display import prnt
from MOAL.helpers.display import print_h2
from MOAL.helpers.datamaker import make_sparselist
from MOAL.helpers.datamaker import make_sparsematrix
from MOAL.helpers.text import gibberish2
from pprint import pprint as ppr
from random import randrange as rr

DEBUG = True if __name__ == '__main__' else False


if DEBUG:
    with Section('Sparse linear data structures'):
        max = 100
        density = 0.1
        items = {rr(0, max): gibberish2() for _ in range(int(max * density))}
        splist = make_sparselist(items, max)
        prnt('Sparse list', splist)

        sparse_data = {(x, x): gibberish2() for x in range(0, 10)}
        sparsematrix = make_sparsematrix(sparse_data, max, rows=10, cols=10)
        print_h2('Sparse matrix')
        ppr(sparsematrix)
示例#2
0
            pnode['foo'] = {'foo': 'bar'}
        except MutableAccessException:
            print('Successfully blocked write of existing version.')

        print_h2('Persistent full node')
        pfatnode = FullyPersistentNode()
        # Updating and overriding existing data
        print(pfatnode)
        pfatnode['foo'] = {'bar': 'baz'}
        print(pfatnode)
        pfatnode['bar'] = {'baz': 'bar'}
        print(pfatnode)
        print_simple('Current fat node data', pfatnode.get_current())

        for _ in range(2):
            pfatnode[gibberish2()] = {gibberish2(): gibberish2()}
            print_simple('Fat node data', pfatnode.versions)

        print_h2('Persistent confluent')
        confluent = ConfluentlyPersistentNode()
        confluent['foo'] = {gibberish2(): gibberish2()}
        confluent['bar'] = {gibberish2(): gibberish2()}
        confluent['bim'] = {gibberish2(): gibberish2()}
        confluent['baz'] = {gibberish2(): gibberish2()}
        print_simple('Confluent node data', confluent.versions)

        confluent.meld('melded_example', versions=['foo', 'bar', 'baz', 'bim'])
        print_simple('Confluent node data', confluent.versions)

        print_h2('Persistent partial Fat Node')
        confluentfat = ConfluentlyPersistentFatNode()
示例#3
0
文件: sparse.py 项目: terry07/MoAL
__author__ = """Chris Tabor ([email protected])"""

if __name__ == '__main__':
    from os import getcwd
    from os import sys
    sys.path.append(getcwd())

from MOAL.helpers.display import Section
from MOAL.helpers.display import prnt
from MOAL.helpers.display import print_h2
from MOAL.helpers.datamaker import make_sparselist
from MOAL.helpers.datamaker import make_sparsematrix
from MOAL.helpers.text import gibberish2
from pprint import pprint as ppr
from random import randrange as rr

DEBUG = True if __name__ == '__main__' else False

if DEBUG:
    with Section('Sparse linear data structures'):
        max = 100
        density = 0.1
        items = {rr(0, max): gibberish2() for _ in range(int(max * density))}
        splist = make_sparselist(items, max)
        prnt('Sparse list', splist)

        sparse_data = {(x, x): gibberish2() for x in range(0, 10)}
        sparsematrix = make_sparsematrix(sparse_data, max, rows=10, cols=10)
        print_h2('Sparse matrix')
        ppr(sparsematrix)
示例#4
0
    def _hash(self, data):
        return tiger.new(data).hexdigest()


if DEBUG:
    with Section('Hashed array tree'):
        data = {
            0: {'edges': [1, 2, 3], 'is_root': True},
            1: {'edges': [], 'parent': 0},
            2: {'edges': [4], 'parent': 0},
            3: {'edges': [5], 'parent': 0},
            4: {'edges': [], 'parent': 0},
            5: {'edges': [], 'parent': 0},
        }
        for k, node in data.iteritems():
            node['val'] = gibberish2()

        print_h2('Merkle Tree')
        merkle = MerkleTree(data)
        for k, node in merkle.vertices.iteritems():
            print('Node edges: {}, Child hash: {}'.format(
                node['edges'], node['val']))

        print_h2('Tiger Tree Hash')
        data[0]['edges'].remove(3)
        tth = TigerTreeHash(data)
        for k, node in tth.vertices.iteritems():
            print('Node edges: {}, Child hash: {}'.format(
                node['edges'], node['val']))
示例#5
0
                     for _ in range(4)}
                }
            })

        prnt('List comprehension', [x**2 for x in range(10) if x % 2 == 0])
        prnt('List comprehension - nested',
             [[x**y for x in range(1, 4) if x % 2 == 0] for y in range(1, 8)])

        wtf = [[_nested(min=x), _nested(max=y)]
               for x, y in enumerate(range(1, 10))]
        print_h2('List comprehensions - triple nested')
        ppr(wtf)

        print_h2('Dictionary and list comprehensions, combined')
        dl_combined = {
            txt.gibberish2(): _nested(min=x, max=x * 2)
            for x in range(8)
        }
        ppr(dl_combined)

        print_h2('Set comprehension')
        set_comp = set([choice(range(100)) for _ in range(10)])
        ppr(set_comp)

        print_h2('Frozenset comprehension')
        frozen_set_comp = frozenset([choice(range(100)) for _ in range(10)])
        ppr(frozen_set_comp)

        print_h2('Tuple comprehension')
        tup = tuple((x, x * 2) for x in range(5))
        ppr(tup)
示例#6
0
            pnode['foo'] = {'foo': 'bar'}
        except MutableAccessException:
            print('Successfully blocked write of existing version.')

        print_h2('Persistent full node')
        pfatnode = FullyPersistentNode()
        # Updating and overriding existing data
        print(pfatnode)
        pfatnode['foo'] = {'bar': 'baz'}
        print(pfatnode)
        pfatnode['bar'] = {'baz': 'bar'}
        print(pfatnode)
        print_simple('Current fat node data', pfatnode.get_current())

        for _ in range(2):
            pfatnode[gibberish2()] = {gibberish2(): gibberish2()}
            print_simple('Fat node data', pfatnode.versions)

        print_h2('Persistent confluent')
        confluent = ConfluentlyPersistentNode()
        confluent['foo'] = {gibberish2(): gibberish2()}
        confluent['bar'] = {gibberish2(): gibberish2()}
        confluent['bim'] = {gibberish2(): gibberish2()}
        confluent['baz'] = {gibberish2(): gibberish2()}
        print_simple('Confluent node data', confluent.versions)

        confluent.meld('melded_example', versions=['foo', 'bar', 'baz', 'bim'])
        print_simple('Confluent node data', confluent.versions)

        print_h2('Persistent partial Fat Node')
        confluentfat = ConfluentlyPersistentFatNode()