I was working on a problem at HackerRank. It’s called text wrap problem. I was able to solve it with the following code.
def wrap(string, max_width):
result = ''
lines = len(string) / max_width
last_chars = len(string) % max_width
for i in range(int(lines)):
start_index = i * max_width
result += string[start_index:start_index+max_width] + '\n'
if last_chars > 0:
result += string[-last_chars:]
return result
Then, I headed to Discussions section to see if a smarter person posted a better and more concise code. There was one.
def wrap(string, max_width):
return "\n".join([string[i:i+max_width] for i in range(0, len(string), max_width)])
In essence, it’s pretty much the same logic but it’s more concise though I think it’s kind of harder to read. One of the important things we have to consider when coding is whether the code is maintainable and readable. But there are smarter people out there… Always learning.