Andrew jest chemikiem, zainteresowanym kwasowością roztworów i rolnictwem. Po miesiącach badań (Google nie jest jego przyjacielem), wymyślił następującą tabelę * dotyczącą czytelnego dla człowieka poziomu kwasowości pod względem pH (potencjał wodoru) :
Nominał | zakres pH | ------------------------- + ------------------------ ----- Ultra kwaśny | poniżej 3,5 ------------------------- + ------------------------ ------ Niezwykle kwaśny | od 3,5 do 4,4 ------------------------- + ------------------------ ------ Bardzo silnie kwaśny | od 4,5 do 5,0 ------------------------- + ------------------------ ------ Silnie kwaśny | od 5,1 do 5,5 ------------------------- + ------------------------ ------ Umiarkowanie kwaśny | od 5,6 do 6,0 ------------------------- + ------------------------ ------ Lekko kwaśny | od 6,1 do 6,5 ------------------------- + ------------------------ ------ Neutralny | od 6,6 do 7,3 ------------------------- + ------------------------ ------ Lekko alkaliczny | od 7,4 do 7,8 ------------------------- + ------------------------ ------ Umiarkowanie zasadowy | między 7,9 a 8,4 ------------------------- + ------------------------ ------ Silnie alkaliczny | od 8,5 do 9,0 ------------------------- + ------------------------ ------ Bardzo silnie alkaliczny | ponad 9,0
Biorąc pod uwagę nieujemną liczbę dziesiętną reprezentującą pH substancji, podaj jej nominał. Możesz pobierać dane wejściowe i dostarczać dane wyjściowe dowolną standardową metodą . Typy danych, z którymi możesz przyjmować dane wejściowe, to:
- Pływak
- Podwójnie
- Standardowy typ danych liczb dziesiętnych w Twoim języku
- Strunowy
I musisz wygenerować ciąg znaków reprezentujący nominał. Wbudowane związane z chemią są zabronione (Przepraszamy, Mathematica!) .
Reguła aproksymacji: Jeśli otrzymywane pH mieści się między górną granicą nominału a dolną granicą następnej (np. Między 7,8 a 7,9), przybliża się do najbliższej wartości między nimi: jeśli pH ≥ górna granica najpierw + 0,5, to powinien otrzymać drugi nominał, ale jeśli pH <górna granica pierwszego + 0,5, to powinien otrzymać pierwszy (np. 7,85 jest zbliżony do 7,9, ale 7,84999 jest zbliżony do 7,8). Wyjaśnienia znajdują się w przypadkach testowych.
Przypadki testowe:
Wejście -> Wyjście 6,40 -> Lekko kwaśny 8,399 -> Umiarkowanie alkaliczny 3,876 -> Niezwykle kwaśny 10,60 -> Bardzo silnie alkaliczny 0,012 -> Ultra kwaśny 7,30 -> Neutralny 7,85 -> Umiarkowanie alkaliczny (stosowana jest zasada przybliżenia) 7,849 -> Lekko alkaliczny (stosowana jest zasada przybliżenia) 6,55 -> Neutralny (stosowana jest zasada przybliżenia)
To jest golf golfowy , więc wygrywa najkrótsze prawidłowe zgłoszenie (w bajtach)!
* Andrew nie wymyślił tego, to była Wikipedia !
Odpowiedzi:
Galaretka ,
77 7371 bajtówMonadyczny link pobierający liczbę i zwracający listę znaków; lub pełny program drukujący wynik.
Wypróbuj online!
W jaki sposób?
źródło
PHP , 199 bajtów
Wypróbuj online!
źródło
C # (.NET Core) , 236 bajtów
Wypróbuj online!
To rozwiązanie uważa, że
p
nie może być większe niż 14.źródło
T-SQL,
305299 bajtówWejście jest za pomocą wstępnie istniejącej tabeli T z
DECIMAL(4,1)
kolumny A , zgodnie z naszymi zasadami / Input Output .Z powodu
DECIMAL(4,1)
typ danych wszelkie zaokrąglenia z „regułami aproksymacji” mają miejsce po wprowadzeniu wartości do tabeli wejściowej, więc mój kod nie musi jawnie nimi zarządzać.Po wykonaniu oszczędności miejsca
REPLACES
jest to proste zapytanie SQL łączące naszą tabelę wejściową z naszą listą wartości:Odwracam kolejność, więc
TOP 1
wybiera pierwszą mniejszą niż nasza wartość wejściowa.Nawet ta forma (po usunięciu podziałów linii i dodatkowych spacji) jest całkiem dobra, ma 318 bajtów . Dodanie narzut
DECLARE
,REPLACES
IEXEC
tylko staje warto ze wszystkich powtarzających się fraz.EDYCJA : Zapisz 6 bajtów, usuwając niepotrzebne „.0” dla kilku wartości
źródło
05AB1E ,
818079777674 bajtówWypróbuj online!
Zestaw testowy
Wyjaśnienie
źródło
Siatkówka , 228 bajtów
Wypróbuj online! Link zawiera pakiet testowy. Wyjaśnienie:
Pomnóż dane wejściowe przez 100, dodając przyrostkowy zapasowy przecinek dziesiętny i dwa zera, a następnie usuwając przecinek dziesiętny i wszystkie cyfry oprócz dwóch po nim.
Konwertuj na unary.
Obsługuj wszystkie zasady, przekształcając je w skróty, które zostaną rozwinięte później.
Uchwyt neutralny.
Wszystko, co zostało, musi być kwaśne. (Ale zostaw 1, jeśli pH wynosi 0,001)
Obchodź się z wszystkimi kwasami.
Rozwiń skróty.
źródło
Python 2 , 202 bajty
-15 bajtów dzięki @JonathanAllan
Wypróbuj online!
źródło
JavaScript (ES6),
192189185184 bajtówPrzypadki testowe
Pokaż fragment kodu
źródło
Excel, 240 bajtów
źródło
JavaScript,
222209 bajtówNadal trochę to gra w golfa
źródło