La mise en place:
Un réseau social rapporte le nombre de votes d'une publication de deux manières: le nombre de votes positifs nets (nombre total de votes positifs - nombre total de votes négatifs) et le % de votes qui étaient des votes positifs , arrondi à l'entier le plus proche (0,5 arrondi). Le nombre de votes positifs nets est un entier (pas nécessairement positif), et le second est garanti comme étant un entier compris entre 0 et +100 inclus. Le nombre de votes positifs et le nombre de votes négatifs sont tous deux des nombres entiers 32 bits positifs ou nuls (vous pouvez spécifier signé ou non signé). Supposons que s'il n'y a aucun total de votes, le pourcentage de votes positifs est signalé comme nul.
Le défi:
Compte tenu de ces deux entiers (votes positifs nets et% votes positifs), quel est le programme le plus court que vous pouvez écrire qui détermine le plus petit nombre total de votes positifs que le message a reçus, avec toutes les contraintes ci-dessus satisfaites?
Les contraintes d'entrée sont garanties. Si l'entrée ne satisfait pas aux contraintes ci-dessus, le comportement du programme dépend de vous. Bravo en prime s'il n'entre pas dans une boucle infinie ou s'il tombe en panne. Pensez à renvoyer un nombre négatif si vous souhaitez plus de conseils.
Règles générales:
- Il s'agit de code-golf , donc la solution valide la plus courte (mesurée en octets) l'emporte.
- Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. Bravo en prime pour un langage Web côté client comme Javascript.
- Si vous avez des solutions intéressantes dans plusieurs langues, postez-les séparément .
- Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres et le type de retour appropriés, ou des programmes complets. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication du fonctionnement du code.
- Gardez à l'esprit que si vous effectuez une opération de division entière qui tronque (par exemple 20/3 = 6) plutôt que des arrondis , cela pourrait ne pas être entièrement correct.
- Des cas de test supplémentaires qui explorent les cas limites dans les contraintes ci-dessus sont les bienvenus.
- Alors que le type de retour attendu est numérique, le booléen "false" peut être utilisé à la place de 0 .
Exemples de cas de test:
La première colonne est juste un numéro de référence inclus pour faciliter la discussion.
ref net %up answer
1 0 0 => 0
2 -5 0 => 0
3 -4 17 => 1
4 -3 29 => 2
5 -2 38 => 3
6 -1 44 => 4
7 0 50 => 1
8 5 100 => 5
9 4 83 => 5
10 3 71 => 5
11 2 63 => 5
12 1 56 => 5
13 1234 100 => 1234
14 800 90 => 894 (tip: don't refer to this as the "last test case;" others may be added.)
1000, 100
. Pouvez-vous confirmer que la réponse attendue est 1000
?