1
phrase='hello overflow'
sequence='00100011101010000110101011000110110100'
tree=[
       [
         [
           [' ', 'f'],
           ['h', 'r']
         ],
         [
           ['w', 'v'],
           'e'
         ]
       ],
       ['l', 'o']
     ]

リスト「ツリー」の反復を行うのに少し問題があります。私がやりたいことは、ビットの入力ストリーム、この場合は「シーケンス」、「ツリー」が各ビットに応じて繰り返されることです。次に例を示します。

「シーケンス」の最初の 4 ビット (0010) に対応する「フレーズ」の文字「h」が必要な場合は、tree[0][0][1][0] に移動する必要があります。

これを行う方法について 2 つのアイデアがあります。そのうちの 1 つは、次のような for ループを使用することです。

for bit in phrase:
    if len(tree[bit])>1:
        calls recursive method, plus some rules

def recursive(list,bit):
    return list[bit]

しかし、再帰メソッドのループ内では、ストリームから新しいビットをフィードできないため、問題が発生します。

もう1つは、「シーケンス」と「ツリー」の間で何らかの並列反復を使用することです。

誰でもこれに光を当てることができますか?

4

1 に答える 1

1

再帰は必要ありません。シーケンス内のビットをループするだけです。から始めpos = treeます。各ビットについて、ツリーを下に移動しますpos = pos[bit]。まだリストの場合posは、次のビットに進みます。がリストでない場合posは、そこに文字を出力posし、ルートに戻してtree次のビットに進みます。posnot equal toでループを抜けるとtree、不完全なコードを受け取ったというエラーに注意してください。

于 2013-04-28T15:47:31.297 に答える