Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Orhalimi's improved solution in Uncategorized category for Morse Clock by qria
def num_to_morse(number, length):
""" returns morse code representation of given number with given length """
morse = "" # contains result
for exp2 in reversed([2**i for i in range(4)]):
if exp2 <= number:
morse += "-"
number -= exp2
else:
morse += "."
return morse[-length:] # cut off first part to match given length
""" Alternative :
def num_to_morse(number, length):
binary = '{0:0lb}'.replace('l',str(length)).format(number)
return binary.replace('0','.').replace('1','-')
"""
def checkio(data):
numbers = data.split(':')
morses = [] # contains morse representations of numbers
for i, digits in enumerate(numbers):
if len(digits) == 1: # inputs might include single digit numbers
digits = '0' + digits
lengths = (2, 4) if i == 0 else (3, 4) # First length is exceptional
morses.append(" ".join(num_to_morse(int(d), l)
for d, l in zip(digits, lengths)))
return " : ".join(morses)
Nov. 13, 2013