I’m trying to move each character in a string, until the end of the string, and print each of those. But, without reusing the original string.
So say for the string “hello”, the result would be:
hello ehllo elhlo ellho elloh # here it use this string from the last result, instead of the original one leloh lleoh ... hello # last result
In the above example, the original string appear two times, even though i said “without reusing original string” but bear in mind it’s just there to illustrate the example better.
Here the code i made so far:
import sys def move_char_by_increment(string, char, increment): char_list = list(string) old_index = char_list.index(char) char = char_list.pop(old_index) new_index = old_index + increment char_list.insert(new_index, char) return ''.join(char_list) string = sys.argv[1] total_char_input = len(string) for char in string: for i in range(0,total_char_input): print(move_char_by_increment(string, char, i)) sys.exit()
This succeed in moving character one by one until end of string, But, it does reuse the original string instead of doing it like in the above example…i couldn’t find a way to make it do what i want.
Advertisement
Answer
It is kind of like insertion sort. Do you like this answer?
lst = list("hello") for _ in range(len(lst)): for i in range(len(lst) - 1): lst[i], lst[i + 1] = lst[i + 1], lst[i] print("".join(lst))
output
ehllo elhlo ellho elloh leloh lleoh lloeh llohe llohe lolhe lohle lohel olhel ohlel ohell ohell hoell heoll helol hello