• SRM144 DIV1 300


    一般的编程题,注意考虑边界情况和各种约束的完备性,详情见测试用例

     1 class BinaryCode:
     2 
     3     def decode(self, message):
     4         enc = [int(ch) for ch in message]
     5         return (self._decodeBy(enc,0), self._decodeBy(enc,1))
     6 
     7     def _conact(self, nlist):
     8         s = ''
     9         for i in nlist:
    10             s = s + str(i)
    11         return s
    12 
    13     def _get(self, a, i):
    14         if 0 <= i < len(a):
    15             return a[i]
    16         else:
    17             return 0
    18 
    19     def _decodeBy(self, enc, first):
    20         ori = [first] 
    21         for i in range(1, len(enc)):
    22             x = enc[i-1] - self._get(ori,i-1) - self._get(ori,i-2)
    23             if not x in [0, 1]:
    24                 return 'NONE'
    25             ori.append(x)
    26 
    27         if enc[-1] != self._get(ori, len(ori)-1) + self._get(ori, len(ori)-2):
    28             return 'NONE'
    29 
    30         return self._conact(ori)
    31 
    32 # test
    33 o = BinaryCode()
    34 
    35 # test: len(message) = 1
    36 assert(('0', 'NONE') == o.decode("0"))
    37 
    38 # test: 最后一个数的推导受到2个条件的约束, 是否都进行了验证
    39 assert(('NONE', 'NONE') == o.decode("112"))
    40 
    41 # test: 是否每个数都进行了01验证
    42 assert(('NONE', 'NONE') == o.decode("932"))
    43 
    44 # test case
    45 assert(( "011100011",  "NONE" ) == o.decode("123210122"))
    46 assert(( "01",  "10" ) == o.decode("11"))
    47 assert(("NONE",  "NONE") == o.decode("123210120"))
    48 assert(("NONE",  "NONE") == o.decode("3"))
    49 assert(("01101001101101001101001001001101001",
    50   "10110010110110010110010010010110010") == o.decode("12221112222221112221111111112221111"))
    View Code
  • 相关阅读:
    HDU_1242_Rescue
    HDU_1175_连连看
    HDU_1072_Nightmare
    HDU_2544_最短路
    POJ_2195_Going Home
    POJ_3565_Ants
    KM算法(Kuhn-Munkres)
    POJ_2536_Gopher II
    ODATA 云驱动 http://www.cdata.com/cloud/
    Wijmo 5 与Breeze 的组合,及与METRONIC 的集成
  • 原文地址:https://www.cnblogs.com/valaxy/p/3391097.html
Copyright © 2020-2023  润新知