filter

 avatar
unknown
python
3 years ago
3.3 kB
102
Indexable
def fill(arr,i):    
    m1,m2,m3 = 0,0,0
    c1,c2,c3 = "a","a","a"
    
    gm = 0
    gc = "a"
    
    if i-2 >=0:
        ca = 0
        cb = 0
        
        for j in range(i-2, i+1):
            if arr[j] == "a":
                ca+=1
            elif arr[j] == "b":
                cb+= 1
                
        if ca < cb:
            arr[i] = "a"
            # print(arr)
            return arr
        else:
            arr[i] = "b"
            # print(arr)
            return arr
        
        
    if i-1 >=0 and i+1 < len(arr):
        ca = 0
        cb = 0
        
        for j in range(i-1, i+2):
            if arr[j] == "a":
                ca+=1
            elif arr[j] == "b":
                cb+= 1
        if ca < cb:
            arr[i] = "a"
            # print(arr)
            return arr
        else:
            arr[i] = "b"
            # print(arr)
            return arr
            
    if i+2 < len(arr):
        ca = 0
        cb = 0
        
        for j in range(i, i+3):
            if arr[j] == "a":
                ca+=1
            elif arr[j] == "b":
                cb+= 1
        if ca < cb:
            arr[i] = "a"
            # print(arr)
            return arr
        else:
            arr[i] = "b"
            # print(arr)
            return arr
    
    arr[i] = "a"
    # print(arr)    
    return arr
    
def calMax(arr,i):    
    m1,m2,m3 = 0,0,0
    c1,c2,c3 = "a","a","a"
    
    gm = 0
    gc = "a"
    
    if i-2 >=0:
        ca = 0
        cb = 0
        
        for j in range(i-2, i+1):
            if arr[j] == "a":
                ca+=1
            elif arr[j] == "b":
                cb+= 1
                
        if ca < cb:
            c1 = "b"
            m1 = cb
            gm = cb
            gc = "b"
        else:
            m1 = ca
            gm = ca
        
        
    if i-1 >=0 and i+1 < len(arr):
        ca = 0
        cb = 0
        
        for j in range(i-1, i+2):
            if arr[j] == "a":
                ca+=1
            elif arr[j] == "b":
                cb+= 1
        if ca < cb:
            c2 = "b"
            m2 = cb
            
        else:
            m2 = ca
        
        if m2 > gm:
            gm = m2
            gc = c2
            
    if i+2 < len(arr):
        ca = 0
        cb = 0
        
        for j in range(i, i+3):
            if arr[j] == "a":
                ca+=1
            elif arr[j] == "b":
                cb+= 1
        if ca < cb:
            c3 = "b"
            m3 = cb
        else:
            m3 = ca
            
        if m3 > gm:
            gm = m3
            gc = c3
        
    return gm,gc
def main():
    s = "aa??aa"
    
    s = list(map(str, s))
    for i in range(len(s)):
        if s[i] == "?":
            count, c = calMax(s,i)
            
            if count == 2:
                if c == "a":
                    s[i] = "b"
                else:
                    s[i] = "a"
    # print("".join(s))
    
    for i in range(len(s)):
        if s[i] == "?":
            l = fill(s,i)
            
    print("".join(s)) 
    
main()
Editor is loading...