Andrew ist ein Chemiker, der sich für die Säure von Lösungen und für die Landwirtschaft interessiert. Nach monatelangen Nachforschungen (Google ist nicht sein Freund) hat er die folgende Tabelle * bezüglich des für Menschen lesbaren Säuregehalts in Bezug auf die gefunden pH-Wert (Potenzial von Wasserstoff) erstellt :
Stückelung | pH-Bereich | ------------------------- + ------------------------ ----- Ultra sauer | unter 3,5 ------------------------- + ------------------------ ------ Extrem sauer | zwischen 3,5 und 4,4 ------------------------- + ------------------------ ------ Sehr stark sauer | zwischen 4,5 und 5,0 ------------------------- + ------------------------ ------ Stark sauer | zwischen 5.1 und 5.5 ------------------------- + ------------------------ ------ Mäßig sauer | zwischen 5.6 und 6.0 ------------------------- + ------------------------ ------ Leicht sauer | zwischen 6.1 und 6.5 ------------------------- + ------------------------ ------ Neutral | zwischen 6.6 und 7.3 ------------------------- + ------------------------ ------ Leicht alkalisch | zwischen 7.4 und 7.8 ------------------------- + ------------------------ ------ Mäßig alkalisch | zwischen 7.9 und 8.4 ------------------------- + ------------------------ ------ Stark alkalisch | zwischen 8,5 und 9,0 ------------------------- + ------------------------ ------ Sehr stark alkalisch | über 9,0
Geben Sie bei einer nicht negativen Dezimalzahl, die den pH-Wert eines Stoffes angibt, dessen Bezeichnung aus. Sie können die Eingabe und Ausgabe nach einer beliebigen Standardmethode vornehmen . Die Datentypen, mit denen Sie Eingaben vornehmen dürfen, sind:
- Schweben
- Doppelt
- Der Standarddatentyp für Dezimalzahlen in Ihrer Sprache
- String
Und Sie müssen einen String ausgeben, der den Nennwert darstellt. Chemie-bezogene Einbauten sind verboten (Sorry, Mathematica!) .
Annäherungsregel: Wenn der pH-Wert, den Sie erhalten, zwischen der Obergrenze eines Nennwerts und der Untergrenze des nächsten Werts liegt (z. B. zwischen 7,8 und 7,9), wird er auf den nächstgelegenen Wert zwischen den beiden Werten angenähert: wenn der pH-Wert ≥ der Obergrenze von zuerst + 0,5, dann sollte es den zweiten Nennwert erhalten, aber wenn der pH <obere Grenze des ersten + 0,5 ist, sollte es den ersten erhalten (z. B. 7,85 ist auf 7,9 angenähert, aber 7,84999 ist auf 7,8 angenähert). Weitere Informationen finden Sie in den Testfällen.
Testfälle:
Eingabe -> Ausgabe 6.40 -> Leicht sauer 8,399 -> Mäßig alkalisch 3.876 -> Extrem sauer 10,60 -> Sehr stark alkalisch 0,012 -> Ultra sauer 7.30 -> Neutral 7,85 -> mäßig alkalisch (es gilt die Näherungsregel) 7.849 -> Leicht alkalisch (es gilt die Näherungsregel) 6.55 -> Neutral (die Annäherungsregel wird angewendet)
Das ist Code-Golf , also gewinnt die kürzeste gültige Einsendung (in Bytes)!
* Andrew hat sich das nicht ausgedacht, es war Wikipedia !
Antworten:
Jelly ,
77 7371 BytesEin monadischer Link, der die Nummer aufnimmt und eine Liste von Zeichen zurückgibt. oder ein vollständiges Programm, das das Ergebnis druckt.
Probieren Sie es online!
Wie?
quelle
PHP , 199 Bytes
Probieren Sie es online!
quelle
C # (.NET Core) , 236 Byte
Probieren Sie es online!
Diese Lösung berücksichtigt, dass
p
nicht größer als 14 sein kann.quelle
T-SQL,
305299 BytesDie Eingabe erfolgt über eine bereits vorhandene Tabelle t mit
DECIMAL(4,1)
Spalte ein , gemäß unserer Input / Output Regeln .Aufgrund des
DECIMAL(4,1)
Datentyps findet eine Rundung nach "Näherungsregeln" statt, wenn der Wert in die Eingabetabelle eingegeben wird, sodass er nicht explizit von meinem Code verwaltet werden muss.Nach erfolgter Platzersparnis
REPLACES
ist dies eine einfache SQL-Abfrage, die unsere Eingabetabelle mit unserer Werteliste verknüpft:Ich kehre die Reihenfolge um, damit
TOP 1
der erste Wert kleiner als unser Eingabewert ist.Auch dieses Formular (nach dem Entfernen von Zeilenumbrüchen und zusätzlichen Leerzeichen) ist mit 318 Byte ziemlich gut . Das Hinzufügen des Overheads von
DECLARE
,REPLACES
ANDEXEC
lohnt sich nur bei allen wiederholten Phrasen.BEARBEITEN : Sparen Sie 6 Bytes, indem Sie unnötige ".0" für mehrere Werte entfernen
quelle
05AB1E ,
818079777674 BytesProbieren Sie es online!
Testsuite
Erläuterung
quelle
Netzhaut , 228 Bytes
Probieren Sie es online! Link enthält Testsuite. Erläuterung:
Multiplizieren Sie die Eingabe mit 100, indem Sie einen freien Dezimalpunkt und zwei Nullen anfügen und dann den Dezimalpunkt und alle bis auf zwei Ziffern danach löschen.
In Unary konvertieren.
Behandeln Sie alle Alkalien und wandeln Sie sie in Abkürzungen um, die später erweitert werden.
Neutral behandeln.
Alles, was übrig bleibt, muss sauer sein. (Belassen Sie jedoch die 1, falls der pH-Wert 0,001 beträgt.)
Behandeln Sie alle Säuren.
Erweitern Sie die Abkürzungen.
quelle
Python 2 , 202 Bytes
-15 Bytes dank @JonathanAllan
Probieren Sie es online!
quelle
JavaScript (ES6),
192189185184 BytesTestfälle
Code-Snippet anzeigen
quelle
Excel, 240 Bytes
quelle
Javascript,
222.209BytesIch spiele immer noch ein bisschen Golf
quelle