Imaginez cette fonction courte pour fixer un nombre entre 0 et 255:
c = n => n > 0 ? n < 255 ? n : 255 : 0
S'agit-il de la version la plus courte possible d'une fonction de serrage avec JavaScript (sans les fonctionnalités ES.Next)?
PS: Je ne sais pas si c'est pertinent mais, le 0 et le 255 ne sont pas aléatoires, l'idée est de bloquer un nombre comme un entier non signé de 8 bits.
code-golf
math
tips
javascript
Ricardo Amaral
la source
la source
[0,n,255]
et de prendre l'élément central - cela pourrait-il être plus court?sort()
méthode JS utilise une comparaison lexicographique par défaut, ce qui nécessiterait un rappel explicite. (Quelque chose comme ça .)Réponses:
20 octets
Pour référence, il s'agit de la version originale sans espace et sans nommer la fonction:
Essayez-le en ligne!
19 octets
Nous pouvons enregistrer un octet en inversant la logique des tests ternaires et en utilisantn 255 n ≥ 232
n>>8
pour tester si est supérieur à . En raison de l'opération au niveau du bit, cela échouera cependant pour .Essayez-le en ligne!
19 octets
Celui-ci renvoie au lieu de mais fonctionne pour .Fa l s e 0 n ≥ 232
Essayez-le en ligne!
18 octets
En combinant les deux versions ci-dessus, nous nous retrouvons avec une fonction qui fonctionne pour et renvoie pour .256 - 232≤ n < 232 Fa l s e n < 0
Essayez-le en ligne!
Commenté
(Il s'agit d'une révision fixe du code proposé par @ValueInk dans les commentaires.)
17 octets
Nous pouvons aller plus loin en limitant la plage d'entrée valide à :−224<n≤224
Essayez-le en ligne!
Commenté
la source
n=>n>>8?255:n>0&&n
pour 18 octets , carfalse
peut être contraint à0
et cela faire tous les numéros négatifs évaluent àfalse
n>>8