Understanding - Advanced, exercise 7
Text
The variable my_fn
contains the string of a family name in lowercase (e.g. "doe"
), and the variable my_mn
contains the string of ten 0-9 digits (e.g. "0000123456"
). Study the execution of the following functions when they are called as follows: f(my_fn, my_mn)
.
from collections import deque
def f(fn, mn):
stack = deque()
digits = list()
for i in range(len(fn)):
j = i % len(mn)
digits.append(int(mn[len(mn) - 1 - j]))
for idx, d in enumerate(reversed(digits)):
if idx < (len(digits) / 2):
stack.append((d, digits[idx]))
result = list()
for c in fn:
result.append(c)
while stack:
t = stack.pop()
if t[0] < len(fn) and t[1] < len(fn):
tmp = fn[t[0]]
result[t[0]] = fn[t[1]]
result[t[1]] = tmp
return "".join(result)
Hints
The function f
processes both the input strings in specific data structures, and then returns as result a list containing the characters of the input family name permuted according to the input 0-9 digits.
Additional material
The runnable Python file is available online. You can run it executing the command python exercise_7.py
in a shell, and then following the instructions on screen to specify the intended input.