Cantor set not working

And in another, “wth you doing this in Dynamo for?” …

variables : A B
constants : none
start : A {starting character string}
rules : (A → ABA), (B → BBB)

I think it’s lines 30 and 35 causing the issue… But because I am enumerating through the points the list length has to match the length of the list of letters.

Anyone got any ideas?

Btw - from wiki

Just been told each line represents a single iteration…
ARRRGH…

#start again :expressionless:

Hi @Alien ,

There are some issues in your code, especially regarding the vectors you’ve hard coded into your system, since you’re getting more lines and gaps each iteration this gap should become narrower and narrower, however that’s not possible since you have pre-defined the Vector lengths.

See if this helps:

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

# Parameters
TOTAL_ITERATIONS = 5
INITIAL_LENGTH = 100.0
Y_DISTANCE = 20.0

def generate_cantor_set(start_x, end_x, y, iteration):
    lines = []
    
    if iteration >= 0:
        lines.append(Line.ByStartPointEndPoint(Point.ByCoordinates(start_x, y, 0), Point.ByCoordinates(end_x, y, 0)))

    if iteration > 0:
        segment_length = (end_x - start_x) / 3.0
        next_y = y + Y_DISTANCE  # Use Y to offset each iteration

        lines.extend(generate_cantor_set(start_x, start_x + segment_length, next_y, iteration - 1))
        lines.extend(generate_cantor_set(end_x - segment_length, end_x, next_y, iteration - 1))

    return lines

# Generate Cantor set
OUT = generate_cantor_set(0, INITIAL_LENGTH, 0, TOTAL_ITERATIONS - 1)

1 Like

I realised the whole lot was wrong.
I had misunderstood the sequence.

I’ve made another post now where it works :smiley:

Your code is far more concise though ! Awesome, thanks :smiley: