Skip to content

replaceAllBar 에서 무한루프 현상.. #3

Description

@Wonder-donbury

안녕하세요. 이 리포지토리가 아직 운영되는지는 모르겠지만,
무한루프가 유독 생기는 코드가 있어 공유드립니다.
barStr이 계속 무한생성되면서 cursor가 계속 +1이 되는 것 같아요.

def replaceAllBar(eqString: str) -> str:
    '''
    replace hat-like equation string.
    '''
    def replaceBar(eqString: str, barStr: str, barElem: str) -> str:
        cursor = 0
        iteration = 0                                                   # <-추가
        while True and iteration < 50:                                  # <-추가

            cursor = eqString.find(barStr)

            if cursor == -1:
                break
            try:
                eStart, eEnd = _findBrackets(eqString, cursor, direction=1)
                bStart, bEnd = _findOutterBrackets(eqString, cursor)
                elem = eqString[eStart:eEnd]
                
                beforeBar = eqString[0:bStart]
                afterBar = eqString[bEnd:]

                eqString = beforeBar + barElem + elem + afterBar
            except ValueError:
                return eqString
            iteration +=1
        if iteration == 50:                                             # <-추가
            eqString = eqString.replace(barStr, "\\overline")           # <-추가
            eqString = eqString.replace("\\overline\\overline", "")     # <-추가

        return eqString

    for barKey, barElem in barDict.items():
        eqString = replaceBar(eqString, barKey, barElem)
    return eqString

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions