Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Number Base by Rafal.U
def checkio(str_number, radix):
n = len(str_number) # długość stringa
number = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
if radix <= 36:
p = 0 # potęga
wynik = 0 # początkowy wynik sumy po kolejnych znakach
while n > 0:
n -= 1 # warunek petli while przechodzenie po kolejnych znakach string od ostatniego do pierwszego
wynik += number.index(str_number[n])*(radix**p) # suma kolejnych znaków razy potega przy odpowiedniej podstawie (radix)
p += 1 # zwiekszenie potegi
if number.index(str_number[n-1]) >= radix: # "AB" 10 B>A>10 sprawdzenie
return -1
return wynik
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
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"
Oct. 30, 2016