Skip to content

Commit e4bd561

Browse files
committed
feat: add python solution for future testing purposes
1 parent 15f11d5 commit e4bd561

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

main.py

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import argparse
2+
3+
import pdb, logging
4+
5+
logging.basicConfig(level=logging.DEBUG,
6+
filename='logs.log',
7+
filemode='w')
8+
9+
def main(arguments, options):
10+
for argument in arguments:
11+
recursion_times = int(argument)
12+
# initial input must be set manually to '1'
13+
number = "1"
14+
for i in xrange(1,recursion_times):
15+
number = say_number(str(number))
16+
print(number)
17+
18+
def say_number(number):
19+
"""Takes 'number' input and reads it out in the look-and-say method."""
20+
number_block = ""
21+
output_number = ""
22+
23+
for i,v in enumerate(number):
24+
number_block += v
25+
if ((i+1) >= len(number)) or not (number[i] == number[i+1]):
26+
#example: 111 will be expressed as '31', in other words 'three ones'
27+
block_expression = str(len(number_block)) + v
28+
output_number += block_expression
29+
logging.debug( """ End of Block. (number={n}, number_block={b},block_expression={e})
30+
""".format( n=number,
31+
b=number_block,
32+
e=block_expression ))
33+
number_block = ""
34+
# Prevent overflow by pruning to 500 digits and breaking.
35+
if len(output_number)>=500:
36+
logging.info(""" Reached 500 digit limit. Length of output is: {l}
37+
""".format( l= len(output_number )))
38+
output_number = output_number[0:500]
39+
break
40+
41+
logging.debug( """ End of say_number. (output_number={o}, number={n})
42+
""".format( o=output_number, n=number ))
43+
return output_number
44+
45+
46+
parser = argparse.ArgumentParser(description='Write description here')
47+
parser.add_argument('basic_arguments', nargs='*')
48+
49+
args = parser.parse_args()
50+
51+
main(args.basic_arguments, args)

0 commit comments

Comments
 (0)