Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
non-int one-liner solution in Creative category for Number Base by CDG.Axel
# it's strange to use internal int function for this, so i wrote solution manually
def checkio(str_number: str, radix: int) -> int:
return ((mn := ord(max(str_number))) == (conv := lambda x: x - 48 - 7 * (x > 64))) or (
sum(conv(n) * radix ** i for i, n in enumerate(map(ord, str_number[::-1]))) if conv(mn) < radix else -1)
"""
# non one-line solution
def checkio(str_number: str, radix: int) -> int:
res, fail = 0, False
for n in map(ord, str_number):
add = n - 48 - 7 * (n > 64)
fail = fail or add >= radix
res = res * radix + add
return -1 if fail else res
"""
if __name__ == '__main__':
print('Example:')
print(checkio("AF", 16))
# These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio("AF", 16) == 175, "Hex"
assert checkio("101", 2) == 5, "Bin"
assert checkio("101", 5) == 26, "5 base"
assert checkio("Z", 36) == 35, "Z base"
assert checkio("AB", 10) == -1, "B > A = 10"
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")
Nov. 2, 2021
Comments: