Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
"Unix Match. Part 2" solution in Clear category for Unix Match. Part 2 by iskenderunbtr
def unix_match(filename: str, pattern: str) -> bool:
if filename==pattern:return True
if "[" in pattern and "]" in pattern:
start=pattern.index("[")
end=pattern.index("]")+1
newPattern=pattern[start:end]
pattern=pattern.replace(newPattern, "?")
for ind in range(len(filename)):
if filename[ind]!= pattern[ind] and pattern[ind]!="?":
return False
if filename[ind]!= pattern[ind] and pattern[ind]=="?":
if "!" in newPattern and filename[ind] in newPattern:
return False
elif "!" not in newPattern and filename[ind] not in newPattern:
return False
elif filename!=pattern:return False
return True
if __name__ == '__main__':
print("Example:")
print(unix_match('somefile.txt', '*'))
# These "asserts" are used for self-checking and not for an auto-testing
assert unix_match('somefile.txt', 'somefile.txt') == True
assert unix_match('1name.txt', '[!abc]name.txt') == True
assert unix_match('log1.txt', 'log[!0].txt') == True
assert unix_match('log1.txt', 'log[1234567890].txt') == True
assert unix_match('log1.txt', 'log[!1].txt') == False
print("Coding complete? Click 'Check' to earn cool rewards!")
June 26, 2020