コード例 #1
0
ファイル: straightsort.py プロジェクト: dgdell/algorithm-elf
    def straightsort(self, r):
        DRIVER.simulate_function_call('straightsort', 5, sys._getframe())
        r.frame = sys._getframe()
        result = None

        n = Integer()
        n.declare()
        i = Indexpointer()
        i.declare()
        DRIVER.simulate_statement(9, sys._getframe())
        DRIVER.simulate_statement(10, sys._getframe())
        n.assign(pascal.high(r))
        DRIVER.simulate_statement(11, sys._getframe())
        i.assign(Pointer(r))
        i.assign(Integer(2) - Integer(1))
        _for_end = n
        while True:
            DRIVER.simulate_statement(12, sys._getframe())
            i.assign(i + Integer(1))
            if i > _for_end: break
            DRIVER.simulate_statement(13, sys._getframe())
            _straipass = self.straipass(r, i)
            DRIVER.simulate_function_return()
            DRIVER.simulate_statement(13, sys._getframe())
            _straipass
        DRIVER.simulate_statement(14, sys._getframe())

        r.frame = sys._getframe(1)

        n.destroy()
        i.destroy()

        return result
コード例 #2
0
ファイル: inorder.py プロジェクト: dgdell/algorithm-elf
    def inorder(self, bt):
        DRIVER.simulate_function_call('inorder', 7, sys._getframe())
        bt = bt.clone()
        bt.declare()
        result = None

        DRIVER.simulate_statement(8, sys._getframe())
        DRIVER.simulate_statement(9, sys._getframe())
        if bt != Pointer():
            DRIVER.simulate_statement(11, sys._getframe())
            _inorder = self.inorder(bt.get()['lchild'])
            DRIVER.simulate_function_return()
            DRIVER.simulate_statement(11, sys._getframe())
            _inorder
            DRIVER.simulate_statement(12, sys._getframe())
            _visit = self.visit(bt)
            DRIVER.simulate_function_return()
            DRIVER.simulate_statement(12, sys._getframe())
            _visit
            DRIVER.simulate_statement(13, sys._getframe())
            _inorder = self.inorder(bt.get()['rchild'])
            DRIVER.simulate_function_return()
            DRIVER.simulate_statement(13, sys._getframe())
            _inorder
        DRIVER.simulate_statement(15, sys._getframe())

        bt.destroy()

        return result
コード例 #3
0
ファイル: postorder.py プロジェクト: dgdell/algorithm-elf
    def postorder(self, bt):
        bt.clone()
        Driver.simulate_function_call('postorder', 1, locals())
        Result = None

        Driver.simulate_statement(2)
        Driver.simulate_statement(3)
        if bt != Pointer():
            Driver.simulate_statement(5)
            bt.get()['value'].select()
            Driver.simulate_statement(6)
            _postorder = self.postorder(bt.get()['lchild'])
            Driver.simulate_function_return()
            Driver.simulate_statement(6)
            _postorder
            Driver.simulate_statement(7)
            bt.get()['value'].select()
            Driver.simulate_statement(8)
            _postorder = self.postorder(bt.get()['rchild'])
            Driver.simulate_function_return()
            Driver.simulate_statement(8)
            _postorder
            Driver.simulate_statement(9)
            bt.get()['value'].select()
            Driver.simulate_statement(10)
            _visit = self.visit(bt)
            Driver.simulate_function_return()
            Driver.simulate_statement(10)
            _visit
        Driver.simulate_statement(12)

        return Result
コード例 #4
0
 def run(self):
     DRIVER.simulate_program_entry('quicksort', 43)
     DRIVER.simulate_statement(44, sys._getframe())
     first.assign(Pointer(qklist))
     DRIVER.simulate_statement(44, sys._getframe())
     last.assign(Pointer(qklist))
     DRIVER.simulate_statement(45, sys._getframe())
     first.assign(pascal.low(qklist))
     DRIVER.simulate_statement(45, sys._getframe())
     last.assign(pascal.high(qklist))
     DRIVER.simulate_statement(46, sys._getframe())
     _qksort = self.qksort(qklist, first, last)
     DRIVER.simulate_function_return()
     DRIVER.simulate_statement(46, sys._getframe())
     _qksort
     DRIVER.simulate_statement(47, sys._getframe())
コード例 #5
0
 def run(self):
     DRIVER.simulate_program_entry('mergesort', 54)
     DRIVER.simulate_statement(55, sys._getframe())
     first.assign(Pointer(meglist))
     DRIVER.simulate_statement(55, sys._getframe())
     last.assign(Pointer(meglist))
     DRIVER.simulate_statement(56, sys._getframe())
     first.assign(pascal.low(meglist))
     DRIVER.simulate_statement(56, sys._getframe())
     last.assign(pascal.high(meglist))
     DRIVER.simulate_statement(57, sys._getframe())
     pascal.setlength(buflist, last - first + Integer(1))
     DRIVER.simulate_statement(58, sys._getframe())
     _mergesort = self.mergesort(meglist, buflist.get(), first, last)
     DRIVER.simulate_function_return()
     DRIVER.simulate_statement(58, sys._getframe())
     _mergesort
     DRIVER.simulate_statement(59, sys._getframe())
コード例 #6
0
ファイル: inorder.py プロジェクト: dgdell/algorithm-elf
 def run(self):
     DRIVER.simulate_program_entry('inorder', 23)
     DRIVER.simulate_statement(24, sys._getframe())
     root.assign(Pointer(bintree))
     DRIVER.simulate_statement(25, sys._getframe())
     _inorder = self.inorder(root)
     DRIVER.simulate_function_return()
     DRIVER.simulate_statement(25, sys._getframe())
     _inorder
     DRIVER.simulate_statement(26, sys._getframe())
コード例 #7
0
 def run(self):
     DRIVER.simulate_program_entry('postorder', 21)
     DRIVER.simulate_statement(22, sys._getframe())
     root.assign(Pointer(bintree))
     DRIVER.simulate_statement(23, sys._getframe())
     _postorder = self.postorder(root)
     DRIVER.simulate_function_return()
     DRIVER.simulate_statement(23, sys._getframe())
     _postorder
     DRIVER.simulate_statement(24, sys._getframe())
コード例 #8
0
    def qksort(self, r, s, t):
        DRIVER.simulate_function_call('qksort', 8, sys._getframe())
        r.frame = sys._getframe()
        s = s.clone()
        s.declare()
        t = t.clone()
        t.declare()
        result = None

        k = Indexpointer()
        k.declare()
        DRIVER.simulate_statement(11, sys._getframe())
        DRIVER.simulate_statement(12, sys._getframe())
        k.assign(Pointer(r))
        DRIVER.simulate_statement(13, sys._getframe())
        if s < t:
            DRIVER.simulate_statement(15, sys._getframe())
            _qkpass = self.qkpass(r, s, t, k)
            DRIVER.simulate_function_return()
            DRIVER.simulate_statement(15, sys._getframe())
            _qkpass
            DRIVER.simulate_statement(16, sys._getframe())
            _qksort = self.qksort(r, s, k - Integer(1))
            DRIVER.simulate_function_return()
            DRIVER.simulate_statement(16, sys._getframe())
            _qksort
            DRIVER.simulate_statement(17, sys._getframe())
            _qksort = self.qksort(r, k + Integer(1), t)
            DRIVER.simulate_function_return()
            DRIVER.simulate_statement(17, sys._getframe())
            _qksort
        DRIVER.simulate_statement(19, sys._getframe())

        r.frame = sys._getframe(1)
        s.destroy()
        t.destroy()

        k.destroy()

        return result
コード例 #9
0
ファイル: straightsort.py プロジェクト: dgdell/algorithm-elf
    def straipass(self, r, i):
        DRIVER.simulate_function_call('straipass', 16, sys._getframe())
        r.frame = sys._getframe()
        i = i.clone()
        i.declare()
        result = None

        x = Integer()
        x.declare()
        j = Indexpointer()
        j.declare()
        DRIVER.simulate_statement(20, sys._getframe())
        DRIVER.simulate_statement(21, sys._getframe())
        j.assign(Pointer(r))
        DRIVER.simulate_statement(22, sys._getframe())
        r[Integer(0)].assign(r[i])
        DRIVER.simulate_statement(23, sys._getframe())
        j.assign(i - Integer(1))
        DRIVER.simulate_statement(24, sys._getframe())
        x.assign(r[i])
        DRIVER.simulate_statement(25, sys._getframe())
        while x < r[j]:
            DRIVER.simulate_statement(27, sys._getframe())
            r[j + Integer(1)].assign(r[j])
            DRIVER.simulate_statement(28, sys._getframe())
            j.assign(j - Integer(1))
        DRIVER.simulate_statement(30, sys._getframe())
        r[j + Integer(1)].assign(r[Integer(0)])
        DRIVER.simulate_statement(31, sys._getframe())

        r.frame = sys._getframe(1)
        i.destroy()

        x.destroy()
        j.destroy()

        return result
コード例 #10
0
ファイル: inorder.py プロジェクト: dgdell/algorithm-elf
# -*- coding: utf-8 -*-
#
# This script is generated by Algorithm Elf 1.2.1

import sys
import pascal
from aftype import DRIVER, datapool
from aftype import Char, Integer, Boolean, Real
from aftype import String, Array
from aftype import Enum, Set, Record, Pointer
from aftype import Queue, Tree, Indexpointer

root = Pointer()
root.declare()

class AlgorithmInstance(object):

    def __init__(self):
        bintree.declare()
        root.declare()

    def inorder(self, bt):
        DRIVER.simulate_function_call('inorder', 7, sys._getframe())
        bt = bt.clone()
        bt.declare()
        result = None

        DRIVER.simulate_statement(8, sys._getframe())
        DRIVER.simulate_statement(9, sys._getframe())
        if bt != Pointer():
            DRIVER.simulate_statement(11, sys._getframe())
コード例 #11
0
 def __init__(self, value=None, cls=Integer):
     Pointer.__init__(self, cls=cls)
     self.frame = sys._getframe(1)
コード例 #12
0
    def merge(self, rs, s, m, n, rn):
        DRIVER.simulate_function_call('merge', 25, sys._getframe())
        rs = rs.clone()
        rs.declare()
        s = s.clone()
        s.declare()
        m = m.clone()
        m.declare()
        n = n.clone()
        n.declare()
        rn.frame = sys._getframe()
        result = None

        i = Indexpointer()
        i.declare()
        j = Indexpointer()
        j.declare()
        k = Indexpointer()
        k.declare()
        ki = Integer()
        ki.declare()
        DRIVER.simulate_statement(29, sys._getframe())
        DRIVER.simulate_statement(30, sys._getframe())
        i.assign(Pointer(rs))
        DRIVER.simulate_statement(30, sys._getframe())
        j.assign(Pointer(rs))
        DRIVER.simulate_statement(30, sys._getframe())
        k.assign(Pointer(rs))
        DRIVER.simulate_statement(31, sys._getframe())
        i.assign(s)
        DRIVER.simulate_statement(31, sys._getframe())
        j.assign(m + Integer(1))
        DRIVER.simulate_statement(31, sys._getframe())
        k.assign(s - Integer(1))
        DRIVER.simulate_statement(32, sys._getframe())
        while (i <= m) and (j <= n):
            DRIVER.simulate_statement(34, sys._getframe())
            k.assign(k + Integer(1))
            DRIVER.simulate_statement(35, sys._getframe())
            if rs[i] <= rs[j]:
                DRIVER.simulate_statement(37, sys._getframe())
                rn[k].assign(rs[i])
                DRIVER.simulate_statement(38, sys._getframe())
                i.assign(i + Integer(1))
            else:
                DRIVER.simulate_statement(42, sys._getframe())
                rn[k].assign(rs[j])
                DRIVER.simulate_statement(43, sys._getframe())
                j.assign(j + Integer(1))
        DRIVER.simulate_statement(46, sys._getframe())
        if i <= m:
            ki.assign(k + Integer(1) - Integer(1))
            _for_end = n
            while True:
                DRIVER.simulate_statement(47, sys._getframe())
                ki.assign(ki + Integer(1))
                if ki > _for_end: break
                DRIVER.simulate_statement(48, sys._getframe())
                rn[ki].assign(rs[i + ki - k - Integer(1)])
        DRIVER.simulate_statement(49, sys._getframe())
        if j <= n:
            ki.assign(k + Integer(1) - Integer(1))
            _for_end = n
            while True:
                DRIVER.simulate_statement(50, sys._getframe())
                ki.assign(ki + Integer(1))
                if ki > _for_end: break
                DRIVER.simulate_statement(51, sys._getframe())
                rn[ki].assign(rs[j + ki - k - Integer(1)])
        DRIVER.simulate_statement(52, sys._getframe())

        rs.destroy()
        s.destroy()
        m.destroy()
        n.destroy()
        rn.frame = sys._getframe(1)

        i.destroy()
        j.destroy()
        k.destroy()
        ki.destroy()

        return result
コード例 #13
0
    
def val(x):
    pass
    
def write(f, *args):
    s = f.value
    for p in args:
        s = "{0} {1}".format(s, p.value)
    print s,

def writeln(f, *args):
    write(f, *args)
    print

if __name__ == '__main__':
    p1 = Pointer(Integer)
    print p1.name
    new(p1)

    p1.get().assign(Integer(123))
    print p1.get()

    s = String(String("123"))
    p1.assign(s)
    p1.get().assign(String("456"))
    print p1.get()

    write("123")
    writeln("123456:", 6, 7)
    write("aaa")
    write("bbb")