Andrew es químico, interesado en la acidez de las soluciones y en la agricultura. Después de meses de investigación (Google no es su amigo), se le ocurrió la siguiente tabla * con respecto al nivel de acidez legible por el ser humano en términos del pH (potencial de hidrógeno) :
Denominación | rango de pH El | ------------------------- + ------------------------ ----- Ultra ácido | por debajo de 3.5 ------------------------- + ------------------------ ------ Extremadamente ácido | entre 3.5 y 4.4 ------------------------- + ------------------------ ------ Muy fuertemente ácido | entre 4.5 y 5.0 ------------------------- + ------------------------ ------ Fuertemente ácido | entre 5.1 y 5.5 ------------------------- + ------------------------ ------ Moderadamente ácido | entre 5.6 y 6.0 ------------------------- + ------------------------ ------ Ligeramente ácido | entre 6.1 y 6.5 ------------------------- + ------------------------ ------ Neutro | entre 6.6 y 7.3 ------------------------- + ------------------------ ------ Ligeramente alcalino | entre 7.4 y 7.8 ------------------------- + ------------------------ ------ Moderadamente alcalino | entre 7.9 y 8.4 ------------------------- + ------------------------ ------ Fuertemente alcalino | entre 8.5 y 9.0 ------------------------- + ------------------------ ------ Muy fuertemente alcalino | más de 9.0
Dado un número decimal no negativo que representa el pH de una sustancia, genera su Denominación. Puede tomar entrada y proporcionar salida por cualquier método estándar . Los tipos de datos con los que puede ingresar son:
- Flotador
- Doble
- Tipo de datos de número decimal estándar de su idioma
- Cuerda
Y debe generar una cadena que represente la denominación. Las incorporaciones relacionadas con la química están prohibidas (¡Lo siento, Mathematica!) .
Regla de aproximación: si el pH que recibe está entre un límite superior de una denominación y el límite inferior del siguiente (por ejemplo, entre 7.8 y 7.9), se aproxima al valor más cercano entre los dos: si el pH ≥ límite superior del primero + 0.5, entonces debería recibir la segunda denominación, pero si el pH <upperBound del primer + 0.5, debería recibir el primero (por ejemplo, 7.85 se aproxima a 7.9, pero 7.84999 se aproxima a 7.8). Vea los casos de prueba para aclaraciones.
Casos de prueba:
Entrada -> Salida 6.40 -> Ligeramente ácido 8.399 -> Moderadamente alcalino 3.876 -> Extremadamente ácido 10.60 -> Muy fuertemente alcalino 0.012 -> Ultra ácido 7.30 -> Neutro 7.85 -> Moderadamente alcalino (se aplica la regla de aproximación) 7.849 -> Ligeramente alcalino (se aplica la regla de aproximación) 6.55 -> Neutro (se aplica la regla de aproximación)
Este es el código de golf , por lo que gana el envío válido más corto (en bytes).
* Andrew no se le ocurrió eso, ¡fue Wikipedia !
Respuestas:
Gelatina ,
77 7371 bytesUn enlace monádico que toma el número y devuelve una lista de caracteres; o un programa completo imprimiendo el resultado.
Pruébalo en línea!
¿Cómo?
fuente
PHP , 199 bytes
Pruébalo en línea!
fuente
C # (.NET Core) , 236 bytes
Pruébalo en línea!
Esta solución considera que
p
no puede ser mayor que 14.fuente
T-SQL,
305299 bytesLa entrada es a través de una tabla t preexistente con la
DECIMAL(4,1)
columna a , según nuestras reglas de Entrada / Salida .Debido al
DECIMAL(4,1)
tipo de datos, cualquier redondeo de "regla de aproximación" tiene lugar cuando el valor se ingresa en la tabla de entrada, por lo que no es necesario que mi código lo administre explícitamente.Después de realizar el ahorro de espacio
REPLACES
, esta es una consulta SQL simple que une nuestra tabla de entrada con nuestra lista de valores:Invierto el orden, por lo que
TOP 1
elige el primero menos que nuestro valor de entrada.Incluso esta forma (después de eliminar saltos de línea y espacios adicionales) es bastante buena, en 318 bytes . Agregar la sobrecarga de
DECLARE
,REPLACES
YEXEC
solo vale la pena con todas las frases repetidas.EDITAR : ahorre 6 bytes eliminando ".0" innecesarios en varios valores
fuente
05AB1E ,
818079777674 bytesPruébalo en línea!
Banco de pruebas
Explicación
fuente
Retina , 228 bytes
Pruébalo en línea! El enlace incluye un conjunto de pruebas. Explicación:
Multiplique la entrada por 100 con el sufijo de un punto decimal de repuesto y dos ceros y luego elimine el punto decimal y todos menos dos dígitos después.
Convierte a unario.
Maneje todos los álcalis, convirtiéndolos en abreviaturas que se expandirán más adelante.
Manejar neutral.
Todo lo que quede debe ser ácido. (Pero deje el 1 en caso de que el pH sea 0.001)
Manejar todos los ácidos.
Expande las abreviaturas.
fuente
Python 2 , 202 bytes
-15 bytes gracias a @JonathanAllan
Pruébalo en línea!
fuente
JavaScript (ES6),
192189185184 bytesCasos de prueba
Mostrar fragmento de código
fuente
Excel, 240 bytes
fuente
Javascript,
222209 bytesTodavía jugando un poco
fuente