Changeset 33793

Show
Ignore:
Timestamp:
06/05/09 03:45:29 (4 years ago)
Author:
nishio
Message:

finished get_python_encoder, get_python_decoder

Location:
lang/python/retrograde
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/python/retrograde/mapgenerator.py

    r33785 r33793  
    9191        self.var_name = var_name  
    9292        utils.set_node_name(self) 
    93         assert n > 1 
     93        #assert n > 1 
    9494        self.vars = [(utils.INT_TYPE, var_name, "[0, %d)" % n)] 
    9595 
     
    168168            # 正規化のコードを入れる 
    169169            result += ["if %s_1:" % oname] 
    170             result += ["    %s, %s = %s_0, %s_1" % (r1vname, r2vname, r1vname, r2vname)] 
     170            for typ, v, com in self.r1.vars: 
     171                result += utils.indent(["%s = %s_0" % (v, v)]) 
     172            for typ, v, com in self.r2.vars: 
     173                result += utils.indent(["%s = %s_1" % (v, v)]) 
    171174            result += ["else:"] 
    172             result += ["    %s, %s = %s_1, %s_0" % (r1vname, r2vname, r1vname, r2vname)] 
     175            for typ, v, com in self.r1.vars: 
     176                result += utils.indent(["%s = %s_1" % (v, v)]) 
     177            for typ, v, com in self.r2.vars: 
     178                result += utils.indent(["%s = %s_0" % (v, v)]) 
    173179 
    174180        result += self.r1.get_python_encoder(context)  
     
    195201            r2vname = self.r2.var_name 
    196202            result += ["if %s_0:" % oname] 
    197             result += ["    %s_1, %s_0 = %s, %s" % (r1vname, r2vname, r1vname, r2vname)] 
     203            for typ, v, com in self.r1.vars: 
     204                result += utils.indent(["%s_1 = %s" % (v, v)]) 
     205            for typ, v, com in self.r2.vars: 
     206                result += utils.indent(["%s_0 = %s" % (v, v)]) 
    198207            result += ["else:"] 
    199             result += ["    %s_0, %s_1 = %s, %s" % (r1vname, r2vname, r1vname, r2vname)] 
     208            for typ, v, com in self.r1.vars: 
     209                result += utils.indent(["%s_0 = %s" % (v, v)]) 
     210            for typ, v, com in self.r2.vars: 
     211                result += utils.indent(["%s_1 = %s" % (v, v)]) 
    200212 
    201213        return result 
     
    371383                "%s = %s + %s" % (rname1, name, rname0),] 
    372384        else: 
    373             # FIXME 
    374385            result += [ 
    375386                "n = %d" % (n - 1), 
  • lang/python/retrograde/test.py

    r33785 r33793  
    169169else: 
    170170    if is_bar_1: 
    171         foo, bar = foo_0, bar_1 
    172     else: 
    173         foo, bar = foo_1, bar_0 
     171        foo = foo_0 
     172        bar = bar_1 
     173    else: 
     174        foo = foo_1 
     175        bar = bar_0 
    174176    choice0 = foo 
    175177    choice1 = bar 
     
    218220    bar = choice1 
    219221    if is_bar_0: 
    220         foo_1, bar_0 = foo, bar 
    221     else: 
    222         foo_0, bar_1 = foo, bar 
     222        foo_1 = foo 
     223        bar_0 = bar 
     224    else: 
     225        foo_0 = foo 
     226        bar_1 = bar 
    223227is_bar_1 = not(is_bar_xor ^ is_bar_0)""" 
    224228 
     
    273277else: 
    274278    if is_bar_1: 
    275         foo, bar = foo_0, bar_1 
    276     else: 
    277         foo, bar = foo_1, bar_0 
     279        foo = foo_0 
     280        bar = bar_1 
     281    else: 
     282        foo = foo_1 
     283        bar = bar_0 
    278284    choice0 = foo 
    279285    take0 = bar 
     
    322328    bar = take0 
    323329    if is_bar_0: 
    324         foo_1, bar_0 = foo, bar 
    325     else: 
    326         foo_0, bar_1 = foo, bar 
     330        foo_1 = foo 
     331        bar_0 = bar 
     332    else: 
     333        foo_0 = foo 
     334        bar_1 = bar 
    327335is_bar_1 = not(is_bar_xor ^ is_bar_0)""" 
     336 
    328337def test_unordered_or_take_decode(): 
    329338    _reset() 
     
    364373 
    365374 
    366 def test_kirin_size(): 
     375def test_kirin_encode_decode(): 
     376    _reset() 
    367377    r = Resource(10, "X") 
    368     Mochigoma = NoChoice() 
     378    Mochigoma = Choice(1, "dummy") 
    369379    Player = Choice(2, "kirin_player") 
    370380    Kirin = Unordered( 
     
    372382            Or(r.take("kirin"),  
    373383               Mochigoma, 
    374                "kirin_is_not_mochigoma"), 
     384               "kirin_is_mochigoma"), 
    375385            Player)) 
    376     print Kirin 
    377     print Kirin.get_python_encoder({"X": 10}) 
    378     print Kirin.get_python_decoder({"X": 10}) 
     386 
     387    params = dict(kirin_0=0, kirin_1=1,  
     388                  kirin_player_0=0, kirin_player_1=0,  
     389                  kirin_is_mochigoma_0=False, kirin_is_mochigoma_1=False) 
     390    ns = en_de_code( 
     391        Kirin, {"X": []}, 
     392        **params) 
     393 
     394    params = dict(kirin_0=0, dummy_1=0, 
     395                  kirin_player_0=0, kirin_player_1=0,  
     396                  kirin_is_mochigoma_0=False, kirin_is_mochigoma_1=True) 
     397    ns = en_de_code( 
     398        Kirin, {"X": []}, 
     399        **params) 
     400 
     401    params = dict(dummy_0=0, dummy_1=0,  
     402                  kirin_player_0=0, kirin_player_1=0,  
     403                  kirin_is_mochigoma_0=True, kirin_is_mochigoma_1=True) 
     404    ns = en_de_code( 
     405        Kirin, {"X": []}, 
     406        **params) 
     407 
    379408 
    380409if __name__ == "__main__": 
     
    382411    test_lion_decode() 
    383412    test_kirin_size() 
     413    test_kirin_encode_decode() 
     414 
    384415    test_or_encode() 
    385416    test_or_decode()