2012-12-09 5 views
0

Lindenmayer 시스템으로 Fractal을 작성하려면 문자열에 재귀 적으로 추가해야합니다. 어쨌든, 본질적으로 String = "A"로 시작하고 반복 할 때마다 (즉, 깊이 0에서 시작하여 깊이가 같을 때까지 여러 번 프로세스를 수행함)문자열 내 문자열을 동시에 교체하기

" A "를"BrArB "로, 모든 B를"AlBlA "로 변환합니다. 문제는, 내가 이들 중 하나를 할 때마다, 다른 하나가하는 것을 더하고, 알고리즘을 망쳐 버리는 것입니다. 내가 "A"로 시작

... 는 "BrArB"에 가야는 ... 는 "AlBlArBrArBrAlBlA"

가 있어야하지만 난 그 3 단계해야보다 더 많이 더 얻을.

제안 사항? 둘 다 동시에 할 수 있다면 문제는 해결 될 것입니다.

+0

"하지만 제 3 단계에서해야 할 것보다 많은 정보를 얻습니다."에는 유용한 정보가 없습니다. 정확한 ** ** 당신이 수행 한 내용과 관련 실제 코드를 게시하십시오. – SomeWittyUsername

+0

내 끔찍한 감각은 당신의 문제가 3 번 줄에 있음을 말해 줍니 다. – Sheena

답변

0

시도하여지도 :

맨끝 = 'LRF'

공리 = '필터를 사용하여 모든 비 터미널 심볼을 제거 할 수 있습니다 끝에

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) 

'. 조인 (공리에 c가 있으면 터미널에 c)

희망이 있습니다.

관련 문제