Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
state machine solution in Clear category for Reveal the Number by Sim0000
def reveal_num(line: str) -> int | float | None:
sign = ''
val = ''
digit = False
dot = False
for c in line:
if c in '+-' and not digit and not dot:
sign = c
elif c == '.' and not dot:
val += c
dot = True
elif c.isdigit():
val += c
digit = True
if val:
if dot:
return float(sign + val)
else:
return int(sign + val)
print("Example:")
print(reveal_num("+A%+-1-0..."))
# These "asserts" are used for self-checking
assert reveal_num("F0(t}") == 0
assert reveal_num("Utc&g") == None
assert reveal_num("-aB%|_-+2ADS.12+3.ADS1.2") == 2.12312
assert reveal_num("-aB%|_+-2ADS.12+3.ADS1.2") == -2.12312
assert reveal_num("zVâ„–1}3;o.vEf``C.WqTY0") == 13.0
assert reveal_num("!3B'j=(}89JQ6aWvN*%5@uy.r)B
Jan. 8, 2023
Comments: