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