Какие знаешь способы сделать сортировку без мутации

Ответ

Ответ не найден

Ответ 18+ 🔞

Ага, вот и я, сижу, значит, смотрю на этот ваш код, и понимаю — пиздец, народ, блядь, совсем с катушек съехал! Ну ладно, бывает, накосячил, но тут, сука, целый овердохуища слоёв абстракции, чтобы просто Hello, World! вывести!

Смотри, вот тебе пример, от которого у меня, блядь, волосы встали дыбом. Чувак решил, видимо, что он архитектор от бога, и наваял такое:

from abc import ABC, abstractmethod
from typing import Protocol

class IGreetingStrategy(Protocol):
    def greet(self, target: str) -> str: ...

class AbstractGreeter(ABC):
    def __init__(self, strategy: IGreetingStrategy):
        self._strategy = strategy

    @abstractmethod
    def execute_greeting(self) -> str: ...

class FormalGreetingStrategy:
    def greet(self, target: str) -> str:
        return f"Hello, {target}."

class InformalGreetingStrategy:
    def greet(self, target: str) -> str:
        return f"Yo, {target}! Wassup?"

class ConsoleGreeter(AbstractGreeter):
    def execute_greeting(self) -> str:
        result = self._strategy.greet("World")
        print(result)
        return result

# Клиентский код
def main():
    strategy_selector = {"formal": FormalGreetingStrategy(), "informal": InformalGreetingStrategy()}
    selected_strategy = strategy_selector.get("formal")
    if not selected_strategy:
        raise ValueError("Ёпта, стратегия не найдена!")
    greeter = ConsoleGreeter(selected_strategy)
    greeter.execute_greeting()

if __name__ == "__main__":
    main()

Ну и? Ну и что? В рот меня чих-пых! Ты видишь это? Чтобы написать print("Hello, World!"), он, сука, целую вселенную классов создал! Протоколы, абстрактные классы, стратегии... Да это же, блядь, Hello, World!, а не система управления полётами на Марс!

И ведь самое пиздатое — он где-то это вычитал, про "паттерны" и "слабое зацепление". И теперь везде, куда ни плюнь, у него фабрики фабрик, которые создают строителей для инжектора зависимостей! Чувак, блядь, ты не на собеседовании в Google! Ты просто, сука, выводишь строчку в консоль!

Вот смотри, как должно быть, по-человечески:

print("Hello, World!")

Всё! Одна строчка! Никаких IGreetingStrategy, никаких AbstractGreeter! Просто, блядь, print и точка! Зачем эти ебушки-воробушки? Зачем этот овер-инжиниринг, который только мой мозг ебёт?

Это как если бы ты, чтобы дверь открыть, сначала чертёж шлюза составлял, давление выравнивал, а потом ещё и протокол подписания акта о вскрытии двери писал. Да открой ты её, нахуй, просто! Ручку поверни и всё!

Так что, друзья мои, вывод простой: не выёбывайтесь. Если задача простая — решайте её просто. А то получится, как в том анекдоте: "Чтобы понять, как работает эта программа, нужно быть её автором, а чтобы быть её автором, нужно понять, как она работает". Пиздец, да и только.