def get_new_index(oldindex, str):
newindex = 0
for c in str:
if c != '-':
if oldindex == 0:
return newindex
oldindex -= 1
newindex += 1
return 1 / 0 # should never get here
def printv(i, s):
i = get_new_index(i, s)
print(i, s[i])
str = "---------------LL---NE--HVKTHTEEK---PF-ICTVCR-KS----------"
# E's are located: ^ ^^
printv(12, str) # 1-indexed position of third E
printv(11, str) # 0-indexed position of third E
printv(0, str) # edge case test
printv(1, str)
printv(22, str) # edge case test
# printv(23, str) # index is too high, error
ZGVmIGdldF9uZXdfaW5kZXgob2xkaW5kZXgsIHN0cik6CiAgICBuZXdpbmRleCA9IDAKCiAgICBmb3IgYyBpbiBzdHI6CiAgICAgICAgaWYgYyAhPSAnLSc6CiAgICAgICAgICAgIGlmIG9sZGluZGV4ID09IDA6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3aW5kZXgKICAgICAgICAgICAgb2xkaW5kZXggLT0gMQogICAgICAgIG5ld2luZGV4ICs9IDEKCiAgICByZXR1cm4gMSAvIDAgIyBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUKCmRlZiBwcmludHYoaSwgcyk6CiAgICBpID0gZ2V0X25ld19pbmRleChpLCBzKQogICAgcHJpbnQoaSwgc1tpXSkKCnN0ciA9ICItLS0tLS0tLS0tLS0tLS1MTC0tLU5FLS1IVktUSFRFRUstLS1QRi1JQ1RWQ1ItS1MtLS0tLS0tLS0tIgoKIyAgICAgIEUncyBhcmUgbG9jYXRlZDogICAgIF4gICAgICAgIF5eCgpwcmludHYoMTIsIHN0cikgIyAxLWluZGV4ZWQgcG9zaXRpb24gb2YgdGhpcmQgRQpwcmludHYoMTEsIHN0cikgIyAwLWluZGV4ZWQgcG9zaXRpb24gb2YgdGhpcmQgRQpwcmludHYoMCwgc3RyKSAgIyBlZGdlIGNhc2UgdGVzdApwcmludHYoMSwgc3RyKQpwcmludHYoMjIsIHN0cikgIyBlZGdlIGNhc2UgdGVzdAojIHByaW50digyMywgc3RyKSAjIGluZGV4IGlzIHRvbyBoaWdoLCBlcnJvcg==