Andrew é químico, interessado na acidez das soluções e na agricultura. Após meses de pesquisa (o Google não é amigo dele), ele apresentou a seguinte tabela * sobre o nível de acidez legível por humanos em termos de pH (potencial de hidrogênio) :
Denominação faixa de pH | ------------------------- + ------------------------ ----- Ultra ácido | abaixo de 3,5 ------------------------- + ------------------------ ------ Extremamente ácido | entre 3,5 e 4,4 ------------------------- + ------------------------ ------ Muito fortemente ácido | entre 4.5 e 5.0 ------------------------- + ------------------------ ------ Fortemente ácido | entre 5,1 e 5,5 ------------------------- + ------------------------ ------ Moderadamente ácido | entre 5,6 e 6,0 ------------------------- + ------------------------ ------ Ligeiramente ácido | entre 6,1 e 6,5 ------------------------- + ------------------------ ------ Neutro entre 6,6 e 7,3 ------------------------- + ------------------------ ------ Ligeiramente alcalino | entre 7,4 e 7,8 ------------------------- + ------------------------ ------ Moderadamente alcalino | entre 7,9 e 8,4 ------------------------- + ------------------------ ------ Fortemente alcalino | entre 8,5 e 9,0 ------------------------- + ------------------------ ------ Muito fortemente alcalino | mais de 9,0
Dado um número decimal não negativo que representa o pH de uma substância, produza sua Denominação. Você pode receber e fornecer saída por qualquer método padrão . Os tipos de dados com os quais você pode receber entradas são:
- Flutuador
- Duplo
- Tipo de dados do número decimal padrão do seu idioma
- Corda
E você deve gerar uma String representando a denominação. Os internos relacionados à química são proibidos (Desculpe, Mathematica!) .
Regra de aproximação: se o pH que você recebe estiver entre o limite superior de uma denominação e o limite inferior do próximo (por exemplo, entre 7,8 e 7,9), ele será aproximado ao valor mais próximo entre os dois: se o pH ≥ limite superior do primeiro + 0,5, deve receber a segunda denominação, mas se o pH <Limite superior da primeira + 0,5, deve receber a primeira (por exemplo, 7,85 é aproximado a 7,9, mas 7,84999 é aproximado a 7,8). Veja os casos de teste para esclarecimentos.
Casos de teste:
Entrada -> Saída 6.40 -> Ligeiramente ácido 8.399 -> Moderadamente alcalino 3.876 -> Extremamente ácido 10.60 -> Muito fortemente alcalino 0,012 -> Ultra-ácido 7.30 -> Neutro 7.85 -> Moderadamente alcalino (a regra de aproximação é aplicada) 7.849 -> Levemente alcalino (a regra de aproximação é aplicada) 6.55 -> Neutro (a regra de aproximação é aplicada)
Isso é código-golfe , então o menor envio válido (em bytes) vence!
* Andrew não sugeriu isso, era a Wikipedia !
Respostas:
Geléia ,
77 7371 bytesUm link monádico pegando o número e retornando uma lista de caracteres; ou um programa completo imprimindo o resultado.
Experimente online!
Quão?
fonte
PHP , 199 bytes
Experimente online!
fonte
C # (.NET Core) , 236 bytes
Experimente online!
Esta solução considera que
p
não pode ser maior que 14.fonte
T-SQL,
305299 bytesA entrada é feita através de uma tabela preexistente t com a
DECIMAL(4,1)
coluna a , de acordo com nossas regras de Entrada / Saída .Por causa do
DECIMAL(4,1)
tipo de dados, qualquer arredondamento de "regra de aproximação" ocorre quando o valor é inserido na tabela de entrada, portanto, não precisa ser explicitamente gerenciado pelo meu código.Após a economia de espaço
REPLACES
, é uma consulta SQL simples que une nossa tabela de entrada à nossa lista de valores:Eu inverto a ordem para
TOP 1
escolher a primeira menos que o nosso valor de entrada.Mesmo este formulário (após remover quebras de linha e espaços extras) é muito bom, com 318 bytes . Adicionar a sobrecarga do
DECLARE
,REPLACES
EEXEC
só vale a pena com todas as frases repetidas.EDIT : salve 6 bytes removendo desnecessário ".0" em vários valores
fonte
05AB1E ,
818079777674 bytesExperimente online!
Suíte de teste
Explicação
fonte
Retina , 228 bytes
Experimente online! O link inclui o conjunto de testes. Explicação:
Multiplique a entrada por 100, com o sufixo de um ponto decimal sobressalente e dois zeros, excluindo o ponto decimal e todos os dígitos, exceto dois.
Converta para unário.
Manuseie todos os álcalis, convertendo em abreviações que serão expandidas posteriormente.
Manusear neutro.
Tudo o que resta deve ser ácido. (Mas deixe o 1 caso o pH seja 0,001)
Manipule todos os ácidos.
Expanda as abreviações.
fonte
Python 2 , 202 bytes
-15 bytes graças a @JonathanAllan
Experimente online!
fonte
JavaScript (ES6),
192189185184 bytesCasos de teste
Mostrar snippet de código
fonte
Excel, 240 bytes
fonte
Javascript,
222209 bytesAinda jogando um pouco
fonte