79587179

Date: 2025-04-22 18:15:36
Score: 0.5
Natty:
Report link

Some optimizations on the suggestion by @Eastsun are:

from typing import Iterator

def permutations(items: str) -> Iterator[list[str]]:
    yield from _permutations_rec(list(items), 0)

def _permutations_rec(items: list[str], index: int) -> Iterator[list[str]]:
    if index == len(items):
        yield items
    else:
        for i in range(index, len(items)):
            items[index], items[i] = items[i], items[index]  # swap
            yield from _permutations_rec(items, index + 1)
            items[index], items[i] = items[i], items[index]  # backtrack

# print permutations
for x in permutations('abc'):
    print(''.join(x))
Reasons:
  • Long answer (-0.5):
  • Has code block (-0.5):
  • User mentioned (1): @Eastsun
  • Low reputation (0.5):
Posted by: bterwijn