CoddityTeam / movaicode

Concours mensuel du Pire Développeur de France
123 stars 10 forks source link

[movaicode/16] Ternaire ta mère #260

Open zearg opened 1 year ago

zearg commented 1 year ago
<?php

//⢋⣴⠒⡝⣿⣿⣿⣿⣿⡿⢋⣥⣶⣿⣿⣿⣿⣿⣿⣶⣦⣍⠻⣿⣿⣿⣿⣿⣷⣿
//⢾⣿⣀⣿⡘⢿⣿⡿⠋⠄⠻⠛⠛⠛⠻⠿⣿⣿⣿⣿⣿⣿⣷⣌⠻⣿⣿⣿⣿⣿
//⠄⠄⠈⠙⢿⣦⣉⡁⠄⠄⣴⣶⣿⣿⢷⡶⣾⣿⣿⣿⣿⡛⠛⠻⠃⠙⢿⣿⣿⣿
//⠄⠄⠄⠄⠄⠈⠉⣀⣀⣴⡟⢩⠁⠩⣝⢂⢨⣿⣿⣿⣿⢟⡛⣳⣶⣤⡘⠿⢋⣡
//⠄⠄⠄⠄⠄⠄⠘⣿⣿⣿⣿⣾⣿⣶⣿⣿⣿⣿⣿⣿⣿⣆⣈⣱⣮⣿⣷⡾⠟⠋
//⠄⠄⠄⠄⠄⠄⠄⠈⠿⠛⠛⣻⣿⠉⠛⠋⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠸⣿
//⠄⠄⠄⠄⢀⡠⠄⢒⣤⣟⠿⣿⣿⣿⣷⣤⣤⣀⣀⣉⣉⣠⣽⣿⣟⠻⣿⣿⡆⢻
//⠄⣀⠄⠄⠄⠄⠈⠋⠉⣿⣿⣶⣿⣟⣛⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣼⣿⡇⣸
//⣿⠃⠄⠄⠄⠄⠄⠄⠠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣾⣿⣿⣿⣿⣿⣿⠁⢿
//⡋⠄⠄⠄⠄⠄⠄⢰⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄
//⠋⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠂⠠
//⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⡿⠄⢈
//⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠛⠛⠿⠿⠿⢿⣿⡿⠟⢋⣴⣿⢿⡋⠄⠄
//⣠⣴⠶⠖⠂⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣠⣴⣾⣿⡿⢫⠞⠄⠄⠄
//⣿⣿⣿⣿⣾⣆⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣤⣶⣿⣿⣿⢿⣧⣶⠏⠄
//         SHREK AGENCE 2023
// Developpement - Conseil - Princesses

// 8=============D   0. PREPARATION DES INGREDIENTS    O=========8 \\
// Ingrédients utiles
$aTrier = 'IPA,FENOUIL,TOMATE,REDBULL,8.6,SALADE,POIREAUX';
$sel = md5('sel');
$lePoidsDeMaman = 211; // Livres évidemment, pas loin de 96kg

// Autres ingrédients
$choses = preg_split("/,/DJUsxim", $aTrier);
$trié = '';
$chosesATrierPositif = +1; // Si le count est en comptage positif TODO "+" inutile devant 1

// 8=============D   0.5 RECETTE PRINCIPALE    O=========8 \\
function chosesATrier($aTrier, $offset) {
    global $chosesATrierPositif; // Include du $chosesATrierPositif

    $combien = 6; // On estime qu'un bac à trier a environ 6 choses, vu sa taille.
    $offsetX = -1; // offsetX

    ($offset - $combien) === 0 ? ($chosesATrierPositif = -1) : null; // Remise en négatif du compte à trier positif si résultat neutre

    $combienOffsetted = $combien + $offset + $offsetX; // IMPORTANT, ne pas toucher

    return count($aTrier) === $combienOffsetted
        ?
        $combienOffsetted // Ok s'il y en a le compte
        : // Sinon, relancer le comptage, avec une différence d'x offset dont la somme est toujours positive (pas de bac moins que vide ^^)
        chosesATrier(
            $aTrier,
            ($combienOffsetted >= 0 ? $chosesATrierPositif ? $offset - 1 : $offset + 1 : -1 * $offset)
        );
}

// 8=============D   1. ON COMPTE LE NOMBRE DE CHOSES DANS LE BAC    O=========8 \\
$résultat = chosesATrier($choses, 0); // chelou2 : Retourne 6 /!\
// Fix du nombre ce choses
$résultat = $résultat + 1; // Sans déconner, j'ai pas compris pourquoi chosesATrier() retourne 7, mais affiche 6 ! Du coup j'ajoute 1

// 8===============D   2. ON COMPTE POUR CHAQUE CHOSE DANS LE BAC, SA LONGUEUR   O===========8 \\

$longueurChose = array();
for ($indiceDeChoses = $résultat; $indiceDeChoses > 0; $indiceDeChoses--) {
    $longueurChose[$choses[$résultat - $indiceDeChoses]] = strlen($choses[$résultat - $indiceDeChoses]);
}

// 8===============D   3. ON CHECK SI ON PEUT SALER L'INGREDIENT CRYPTé   O===========8 \\

foreach(array_keys($longueurChose) as $chose) {
    $trié .= ((int) (md5($chose.$longueurChose[$chose].$sel+$lePoidsDeMaman)) ? $chose. ' ' : '' );
}

echo $trié; // LE BAC
Matthieu-Coddity commented 1 year ago

pas vu venir l'offset ^^