skip to content
tlam://snippet
cd ..

Regret

It's a tough one, but it's true. Funny how we are actually not that complicated...

regret.php · 91 lines · php
<?phpclass Person{    private string $name;    private array $pastDecisions = [];    private array $regrets = [];    private float $selfForgiveness = 0.5; // Scale: 0 (never forgive) to 1 (always forgive)    public function __construct(string $name)    {        $this->name = $name;    }    public function makeDecision(string $decision): void    {        echo "$this->name is about to decide: $decision\n";        $regretFactor = $this->calculateRegretFactor($decision);                if ($regretFactor > 0.7) {            echo "Hesitation... This reminds of past regrets.\n";        }        if ($regretFactor > 0.9) {            echo "Paralyzed by past mistakes, $this->name avoids deciding.\n";            return;        }                echo "$this->name proceeds with: $decision\n";                $this->storeDecision($decision);    }    private function calculateRegretFactor(string $decision): float    {        $similarRegrets = array_filter($this->regrets, fn($regret) => $this->isSimilar($regret, $decision));        return count($similarRegrets) / max(1, count($this->pastDecisions));    }    private function storeDecision(string $decision): void    {        $this->pastDecisions[] = $decision;        if ($this->wasBadChoice($decision)) {            echo "Regret settles in...\n";            $this->regrets[] = $decision;        }    }    private function isSimilar(string $pastDecision, string $newDecision): bool    {        return levenshtein($pastDecision, $newDecision) < 5; // Arbitrary similarity threshold    }    private function wasBadChoice(string $decision): bool    {        return rand(0, 10) < 3; // 30% chance a decision leads to regret    }    public function reflectOnPast(): void    {        echo "$this->name is reflecting...\n";        if (empty($this->regrets)) {            echo "No regrets to dwell on.\n";            return;        }        $selfForgivenessAdjustment = (1 - $this->selfForgiveness) * count($this->regrets);                echo "$this->name feels the weight of past mistakes, adjusted by self-forgiveness: $selfForgivenessAdjustment\n";    }    public function forgiveYourself(): void    {        echo "$this->name takes a deep breath and lets go of regrets...\n";        $this->regrets = array_slice($this->regrets, round(count($this->regrets) * (1 - $this->selfForgiveness)));        $this->selfForgiveness += 0.1;        if ($this->selfForgiveness > 1) {            $this->selfForgiveness = 1;        }    }}// Example usage$john = new Person("John");$john->makeDecision("Take a new job");$john->makeDecision("Move to another city");$john->reflectOnPast();$john->forgiveYourself();$john->reflectOnPast();

replies (1)

login to reply.