Étant donné un réel (n), une valeur maximale que ce réel peut être (supérieure) et une valeur minimale que ce réel peut être (inférieure), comment pouvons-nous le plus efficacement couper n, de sorte qu'il reste entre inférieur et supérieur ?
Bien sûr, utiliser un tas d'instructions if peut le faire, mais c'est ennuyeux ! Qu'en est-il des solutions plus compactes et élégantes/amusantes ?
Ma propre tentative rapide (C/C++):
float clip( float n, float lower, float upper )
{
n = ( n > lower ) * n + !( n > lower ) * lower;
return ( n < upper ) * n + !( n < upper ) * upper;
}
Je suis sûr qu'il y a d'autres meilleures façons de le faire, c'est pourquoi je mets ça là-bas ..!