LAB RESTRICTIONS, PLEASE READ: Do not add any imports, the ones that you need will be given to you. You may not use any lists or list methods, or any while loops. Within your loops, you MUST NOT use any break or continue statements. Please also do not use try-except statements, you should be able to anticipate or prevent any errors from happening at all!
def loopy_madness(string1: str, string2: str) -> str: """ Given two strings <string1> and <string2>, return a new string that contains letters from these two strings "interwoven" together, starting with the first character of <string1>. If the two strings are not of equal length, then start looping "backwards-and-forwards" in the shorter string until you come to the end of the longer string.
"interwoven" (or "interweaving") means constructing a new string by taking the first letter from the first string, adding the first letter of the second string, adding the second letter of the first string, adding the second letter of the second string, and so on.
"backwards-and-forwards" is a custom looping term. First the loop starts at position 1 (index 0) and goes until position n (i.e., the end). Once the loop reaches position n, it goes backwards, starting at position n - 1 and goes to position 1 (index 0). This repeats until the two strings are interwoven. For example, the backwards-and-forwards operations of "abc" would be "abcbabcba..."
Examples: If you are given "abc" and "123", then the output string is "a1b2c3". This is after taking "a" from the first string, adding "1" from the second string, adding "b" from the first string, and so on.
Things get more interesting when you are given two strings that differ in length. For example, if you are given "abcde" and "12", then the output would be "a1b2c1d2e1". Notice how the shorter string loops around when it runs out of characters, and continues looping until the longer string is exhausted.
Another example of the "backwards-and-forwards" implementation given two strings of differing length: "abcdfe" and "123", then the output would be "a1b2c3d2f1e2".
Note that the first string could be shorter too, for example, given "ab" and "123", the output would be "a1b2a3".
Precondition: both input strings will NOT be empty.
Hint: a good sanity check is to ensure that your output string is exactly twice the length of the longer input string :) >>> loopy_madness("abc", "123") "a1b2c3" >>> loopy_madness("abc", "abc") "aabbcc" >>> loopy_madness("abc", "@#$") "a@b#c$" >>> loopy_madness("1", "abc") "1a1a1a" """
Expert Solution
This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.