diff options
Diffstat (limited to 'Godeps/_workspace/src/github.com/ethereum/serpent-go/serpent/examples/counterparty/heap.se')
-rw-r--r-- | Godeps/_workspace/src/github.com/ethereum/serpent-go/serpent/examples/counterparty/heap.se | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/Godeps/_workspace/src/github.com/ethereum/serpent-go/serpent/examples/counterparty/heap.se b/Godeps/_workspace/src/github.com/ethereum/serpent-go/serpent/examples/counterparty/heap.se deleted file mode 100644 index 4a43a3974..000000000 --- a/Godeps/_workspace/src/github.com/ethereum/serpent-go/serpent/examples/counterparty/heap.se +++ /dev/null @@ -1,69 +0,0 @@ -data heaps[2^50](owner, size, nodes[2^50](key, value)) -data heapIndex - -def register(): - i = self.heapIndex - self.heaps[i].owner = msg.sender - self.heapIndex = i + 1 - return(i) - -def push(heap, key, value): - assert msg.sender == self.heaps[heap].owner - sz = self.heaps[heap].size - self.heaps[heap].nodes[sz].key = key - self.heaps[heap].nodes[sz].value = value - k = sz + 1 - while k > 1: - bottom = self.heaps[heap].nodes[k].key - top = self.heaps[heap].nodes[k/2].key - if bottom < top: - tvalue = self.heaps[heap].nodes[k/2].value - bvalue = self.heaps[heap].nodes[k].value - self.heaps[heap].nodes[k].key = top - self.heaps[heap].nodes[k].value = tvalue - self.heaps[heap].nodes[k/2].key = bottom - self.heaps[heap].nodes[k/2].value = bvalue - k /= 2 - else: - k = 0 - self.heaps[heap].size = sz + 1 - -def pop(heap): - sz = self.heaps[heap].size - assert sz - prevtop = self.heaps[heap].nodes[1].value - self.heaps[heap].nodes[1].key = self.heaps[heap].nodes[sz].key - self.heaps[heap].nodes[1].value = self.heaps[heap].nodes[sz].value - self.heaps[heap].nodes[sz].key = 0 - self.heaps[heap].nodes[sz].value = 0 - top = self.heaps[heap].nodes[1].key - k = 1 - while k * 2 < sz: - bottom1 = self.heaps[heap].nodes[k * 2].key - bottom2 = self.heaps[heap].nodes[k * 2 + 1].key - if bottom1 < top and (bottom1 < bottom2 or k * 2 + 1 >= sz): - tvalue = self.heaps[heap].nodes[1].value - bvalue = self.heaps[heap].nodes[k * 2].value - self.heaps[heap].nodes[k].key = bottom1 - self.heaps[heap].nodes[k].value = bvalue - self.heaps[heap].nodes[k * 2].key = top - self.heaps[heap].nodes[k * 2].value = tvalue - k = k * 2 - elif bottom2 < top and bottom2 < bottom1 and k * 2 + 1 < sz: - tvalue = self.heaps[heap].nodes[1].value - bvalue = self.heaps[heap].nodes[k * 2 + 1].value - self.heaps[heap].nodes[k].key = bottom2 - self.heaps[heap].nodes[k].value = bvalue - self.heaps[heap].nodes[k * 2 + 1].key = top - self.heaps[heap].nodes[k * 2 + 1].value = tvalue - k = k * 2 + 1 - else: - k = sz - self.heaps[heap].size = sz - 1 - return(prevtop) - -def top(heap): - return(self.heaps[heap].nodes[1].value) - -def size(heap): - return(self.heaps[heap].size) |