0

Lindenmayer システムで Fractal を構築するには、String に再帰的に追加する必要があります。とにかく、基本的に String = "A" で開始し、再帰するたびに (つまり、深さ 0 から開始し、深さが等しい回数だけプロセスを実行します)

「A」のすべてのインスタンスを「BrArB」に、すべての B を「AlBlA」に変更します。問題は、これらのいずれかを実行するたびに、もう一方の実行に追加され、アルゴリズムが台無しになることです。

私は「A」から始めます...「BrArB」に行くべきです...そして「AlBlArBrArBrAlBlA」を持つべきです

しかし、私はその3番目のステップで必要以上に多くを得ています.

助言がありますか?両方を同時に行うことができれば、問題は解決します。

4

1 に答える 1

0

マップを使用してみてください:

grammar = {'A': 'BrArB', 'B': 'AlBlA'}

# number of rule substitutions
times = 8

# the starting point
axiom = 'A'

for n in xrange(times)
    axiom = sum( (list(grammar[c]) if c in grammar else [c] for c in axiom), [] )

axiom = ''.join(axiom)

最後に、フィルターを使用して、すべての非終端記号を削除したい場合があります。

端子 = 'lrf'

axiom = ''.join(c for c in axiom if c in TERMINALS)

それが役に立てば幸い!

于 2012-12-14T01:21:58.710 に答える