Prendre la valeur absolue (je suppose que le modulo sur les nombre négatifs va retourner -1 et pas 1)
Ok : -3%2!=0 => true
Bon, j'ai été mauvais sur ce coup-là...
Vérifier qu'il s'agit bien d'un nombre avant d'essayer d'utiliser %
Alors là fait plutôt :
!!(x%2)
x%2 retourne +-1 pour un nombre impair uniquement, donc tu as true pour un nombre impair uniquement.
Si tu as autre chose qu'un nombre dans x, tu as false.
Certes, ici, !!("19"%2) est vrai, parce que JS caste tout seul "19" dans 19.
Mais si tu veux tester si tu as un nombre à la base, tu fais autre chose que tester s'il est impair.
Vérifier qu'il s'agit d'un entier (merci les langages sans typage statique)
Hmm.. !!(19.32%2) va retourner true. !!(18.77%2) aussi.
Math.abs(x%2)==1 alors ?
Ça va te sortir true s'il s'agit d'une représentation d'un entier impair.
Faut sortir une fonction, mais ça marche.
Vérifier qu'il n'y a pas d'overflow dans le nombre
Pas ton problème : tu travailles avec les données reçues, une valeur en overflow n'est pas un entier impair. Ça aurait peut-être pu l'être si la valeur souhaitée était impaire et que sa représentation ne provoquait pas d'overflow, mais tu n'as pas reçu un entier impair en paramètre de ta fonction, donc false.
Après, faut choisir. Ça dépend vraiment de ce dont tu as besoin. Est-ce que isOdd c'est « est-ce que c'est une représentation d'un entier impair ? » ou « est ce que c'est impair s'il s'agit d'une représentation d'un entier ? », là ça dépend vraiment d'où tu mets le curseur de la cohérence de tes variables.
En tout cas il ne me viendrait jamais à l'esprit d'importer un module pour tester la parité d'un nombre !
Autre commentaire :
Je crois que t'as pas pigé que c'était du 2nd degré ;)
Le JS est-il soluble dans le second degré ?
Faut il inventer des degrés fractals d'humour pour appréhender npm ?
Vous avez trois heures.
[^] # Re: Ha ouais, quand même...
Posté par Yth (Mastodon) . En réponse au journal Une backdoor vient d’être trouvée dans un paquet npm connu. Évalué à 4.
Ok : -3%2!=0 => true
Bon, j'ai été mauvais sur ce coup-là...
Alors là fait plutôt :
!!(x%2)
x%2 retourne +-1 pour un nombre impair uniquement, donc tu as true pour un nombre impair uniquement.
Si tu as autre chose qu'un nombre dans x, tu as false.
Certes, ici, !!("19"%2) est vrai, parce que JS caste tout seul "19" dans 19.
Mais si tu veux tester si tu as un nombre à la base, tu fais autre chose que tester s'il est impair.
Hmm.. !!(19.32%2) va retourner true. !!(18.77%2) aussi.
Math.abs(x%2)==1 alors ?
Ça va te sortir true s'il s'agit d'une représentation d'un entier impair.
Faut sortir une fonction, mais ça marche.
Pas ton problème : tu travailles avec les données reçues, une valeur en overflow n'est pas un entier impair. Ça aurait peut-être pu l'être si la valeur souhaitée était impaire et que sa représentation ne provoquait pas d'overflow, mais tu n'as pas reçu un entier impair en paramètre de ta fonction, donc false.
Après, faut choisir. Ça dépend vraiment de ce dont tu as besoin. Est-ce que isOdd c'est « est-ce que c'est une représentation d'un entier impair ? » ou « est ce que c'est impair s'il s'agit d'une représentation d'un entier ? », là ça dépend vraiment d'où tu mets le curseur de la cohérence de tes variables.
En tout cas il ne me viendrait jamais à l'esprit d'importer un module pour tester la parité d'un nombre !
Autre commentaire :
Le JS est-il soluble dans le second degré ?
Faut il inventer des degrés fractals d'humour pour appréhender npm ?
Vous avez trois heures.
Yth.