Andrew est chimiste, intéressé par l'acidité des solutions et par l'agriculture. Après des mois de recherche (Google n'est pas son ami), il est parvenu au tableau * suivant concernant le niveau d'acidité lisible par l'homme en termes de pH (potentiel de l'hydrogène) :
Dénomination | Gamme de pH | ------------------------- + ------------------------ ----- Ultra acide | en dessous de 3,5 ------------------------- + ------------------------ ------ Extrêmement acide | entre 3,5 et 4,4 ------------------------- + ------------------------ ------ Très fortement acide | entre 4,5 et 5,0 ------------------------- + ------------------------ ------ Fortement acide | entre 5,1 et 5,5 ------------------------- + ------------------------ ------ Modérément acide | entre 5,6 et 6,0 ------------------------- + ------------------------ ------ Légèrement acide | entre 6,1 et 6,5 ------------------------- + ------------------------ ------ Neutre | entre 6,6 et 7,3 ------------------------- + ------------------------ ------ Légèrement alcalin | entre 7,4 et 7,8 ------------------------- + ------------------------ ------ Modérément alcalin | entre 7,9 et 8,4 ------------------------- + ------------------------ ------ Fortement alcalin | entre 8,5 et 9,0 ------------------------- + ------------------------ ------ Très fortement alcalin | plus de 9,0
Étant donné un nombre décimal non négatif représentant le pH d'une substance, affichez sa dénomination. Vous pouvez prendre des entrées et fournir des sorties par n'importe quelle méthode standard . Les types de données avec lesquels vous êtes autorisé à saisir sont:
- Flotte
- Double
- Type de données du nombre décimal standard de votre langue
- Chaîne
Et vous devez produire une chaîne représentant la dénomination. Les intégrations liées à la chimie sont interdites (Désolé, Mathematica!) .
Règle d'approximation: Si le pH que vous recevez se situe entre une limite supérieure d'une dénomination et la limite inférieure de la suivante (par exemple entre 7,8 et 7,9), il est approximé à la valeur la plus proche entre les deux: si le pH ≥ limite supérieure de la d'abord + 0,5, alors il devrait recevoir la deuxième dénomination, mais si le pH <limite supérieure du premier + 0,5, alors il devrait recevoir la première (par exemple, 7,85 est approximativement égal à 7,9, mais 7,84999 est approximativement égal à 7,8). Voir les cas de test pour des clarifications.
Cas de test:
Entrée -> Sortie 6,40 -> légèrement acide 8.399 -> Modérément alcalin 3.876 -> Extrêmement acide 10.60 -> Très fortement alcalin 0,012 -> Ultra acide 7h30 -> Neutre 7.85 -> Modérément alcalin (la règle d'approximation est appliquée) 7.849 -> Légèrement alcalin (la règle d'approximation est appliquée) 6.55 -> Neutre (la règle d'approximation est appliquée)
Il s'agit de code-golf , donc la soumission valide la plus courte (en octets) gagne!
* Andrew n'est pas venu avec ça, c'était Wikipedia !
Réponses:
Gelée ,
77 7371 octetsUn lien monadique prenant le numéro et renvoyant une liste de personnages; ou un programme complet imprimant le résultat.
Essayez-le en ligne!
Comment?
la source
PHP , 199 octets
Essayez-le en ligne!
la source
C # (.NET Core) , 236 octets
Essayez-le en ligne!
Cette solution considère que
p
ne peut pas être supérieur à 14.la source
T-SQL,
305299 octetsL'entrée se fait via un tableau préexistant t avec la
DECIMAL(4,1)
colonne a , selon nos règles d'entrée / sortie .En raison du
DECIMAL(4,1)
type de données, tout arrondi de "règle d'approximation" a lieu lorsque la valeur est entrée dans la table d'entrée, donc n'a pas besoin d'être explicitement géré par mon code.Une fois les économies d'espace
REPLACES
effectuées, il s'agit d'une simple requête SQL joignant notre table d'entrée à notre liste de valeurs:J'inverse l'ordre donc
TOP 1
choisir le premier de moins que notre valeur d'entrée.Même cette forme (après avoir supprimé les sauts de ligne et les espaces supplémentaires) est assez bonne, à 318 octets . Ajout de la tête du
DECLARE
,REPLACES
ETEXEC
ne devient en valeur avec toutes les phrases répétées.EDIT : économisez 6 octets en supprimant les ".0" inutiles sur plusieurs valeurs
la source
05AB1E ,
818079777674 octetsEssayez-le en ligne!
Suite de tests
Explication
la source
Rétine , 228 octets
Essayez-le en ligne! Le lien inclut une suite de tests. Explication:
Multipliez l'entrée par 100 en suffixant une virgule décimale de rechange et deux zéros, puis supprimez la virgule décimale et tous les chiffres sauf deux après.
Convertissez en unaire.
Manipulez tous les alcalis, en les convertissant en abréviations qui seront développées plus tard.
Poignée neutre.
Tout ce qui reste doit être acide. (Mais laissez le 1 au cas où le pH est de 0,001)
Manipulez tous les acides.
Développez les abréviations.
la source
Python 2 , 202 octets
-15 octets grâce à @JonathanAllan
Essayez-le en ligne!
la source
JavaScript (ES6),
192189185 185184 octetsCas de test
Afficher l'extrait de code
la source
Excel, 240 octets
la source
Javascript,
222209 octetsJe joue encore un peu au golf
la source