import numpy as np

def computeEquationNumber(nDof,element_data):
    nElements=len(element_data)
    numEquations=[]
    for i in range(nElements):
        # Total numEquations 
        elementConnectivity=element_data[i][1]
        # elementCoords=[element_data[i][3],element_data[i][4]]
        # elementLength=np.linalg.norm(elementCoords[1]-elementCoords[0])
        numEquationsElem=[]
        # if elementLength==0: #spring element
        #     for j in range(len(elementConnectivity)):
        #         numEquationsElem.append(elementConnectivity[j]+2)
        # else:
        #     for j in range(len(elementConnectivity)):
        #         for k in range(nDof):
        #             numEquationsElem.append(elementConnectivity[j]*nDof+k)
        for j in range(len(elementConnectivity)):
            for k in range(nDof):
                numEquationsElem.append(elementConnectivity[j]*nDof+k)
        numEquations.append(numEquationsElem)

    # #Impose equal dofs constraints
    # if constraints is not None:
    #     indexRemove = 0
    #     previousMasterGlobalDofTot=[] #without the removal of the previous slave dofs
    #     previousMasterGlobalDof=[] #with the removal of the previous slave dofs
    #     for line in constraints:
    #         masterNode = line[0]
    #         slaveNode = line[1]
    #         extraRemove = 0
    #         for i in range(2, len(line)):  # Skip the first two elements
    #             masterGlobalDofTot=masterNode * nDof + line[i]
    #             if masterGlobalDofTot in previousMasterGlobalDofTot:
    #                 masterGlobalDOF = previousMasterGlobalDof[previousMasterGlobalDofTot.index(masterGlobalDofTot)]
    #             else:
    #                 masterGlobalDOF = masterGlobalDofTot - indexRemove
               
    #             slaveGlobalDOF = slaveNode * nDof + line[i]  - indexRemove
    #             # Replace slave DOFs with master DOFs in numEquations
    #             for eq in numEquations:
    #                 for j in range(len(eq)):
    #                     if eq[j] == slaveGlobalDOF:
    #                         eq[j] = masterGlobalDOF
    #             extraRemove+=1
    #             previousMasterGlobalDofTot.append(masterGlobalDofTot)
    #             previousMasterGlobalDof.append(masterGlobalDOF)
    #         if extraRemove >0:
    #             for eq in numEquations:
    #                 for j in range(len(eq)):
    #                     if eq[j] > slaveGlobalDOF:
    #                         eq[j] -= extraRemove            
    #         indexRemove += extraRemove
    #         test = 0

    # # Remove duplicate indices in each line of numEquations
    # for i in range(len(numEquations)):
    #     count = {}
    #     for index in numEquations[i]:
    #         if index in count:
    #             count[index] += 1
    #         else:
    #             count[index] = 1
    #     numEquations[i] = [index for index in numEquations[i] if count[index] == 1]


                
    
    return numEquations