mail@pastecode.io avatar
2 months ago
1.4 kB
ef longest_square_root_sequence(bag_list):
    max_len = 0
    sequence_lengths = {}  # Dictionary to store the length of longest sequence ending at each number
    for num in bag_list:
        length = 1  # Length of sequence ending at the current number
        # Check if sequence ending at this number has already been computed
        if num in sequence_lengths:
        # Compute the square root of the current number
        sqrt_num = num ** 0.5
        # Loop while the square root is an integer and positive
        while sqrt_num.is_integer() and sqrt_num > 0:
            sqrt_num = int(sqrt_num)  # Convert to integer if it's a perfect square
            if sqrt_num in sequence_lengths:
                # If sequence ending at the square root has already been computed,
                # update the length and break out of the loop
                length += sequence_lengths[sqrt_num] - 1
            length += 1  # Increment the length of the sequence
            sqrt_num = bag_list.index(sqrt_num) ** 0.5  # Update square root using index
        # Update the maximum length
        max_len = max(max_len, length)
        # Store the length of the sequence ending at the current number
        sequence_lengths[num] = length
    return max_len
Leave a Comment