Андрей - химик, интересуется кислотностью растворов и сельским хозяйством. После нескольких месяцев исследований (Google не является его другом) он придумал следующую таблицу *, касающуюся уровня кислотности, понятного человеку, с точки зрения pH (потенциала водорода) :
Деноминация | диапазон pH | ------------------------- + ------------------------ ----- Ультракислотный | ниже 3,5 ------------------------- + ------------------------ ------ Чрезвычайно кислый | от 3,5 до 4,4 ------------------------- + ------------------------ ------ Очень сильно кислый | от 4,5 до 5,0 ------------------------- + ------------------------ ------ Сильно кислый | между 5.1 и 5.5 ------------------------- + ------------------------ ------ Умеренно кислый | от 5,6 до 6,0 ------------------------- + ------------------------ ------ Слегка кислый | от 6,1 до 6,5 ------------------------- + ------------------------ ------ Нейтральный | от 6,6 до 7,3 ------------------------- + ------------------------ ------ Слабощелочная | от 7,4 до 7,8 ------------------------- + ------------------------ ------ Умеренно щелочной | от 7,9 до 8,4 ------------------------- + ------------------------ ------ Сильно щелочной | от 8,5 до 9,0 ------------------------- + ------------------------ ------ Очень сильно щелочной | более 9,0
Учитывая неотрицательное десятичное число, представляющее pH вещества, выведите его Номинал. Вы можете взять ввод и обеспечить вывод любым стандартным методом . Типы данных, которые вы можете использовать для ввода:
- терка
- двойной
- Тип данных стандартного десятичного числа вашего языка
- строка
И вы должны вывести строку, представляющую деноминацию. Встроенные элементы, связанные с химией, запрещены (извините, Mathematica!) .
Правило аппроксимации: если полученный вами рН находится между верхней границей деноминации и нижней границей следующей (например, между 7,8 и 7,9), он приближается к ближайшему значению между этими двумя значениями: если pH ≥ верхняя граница сначала + 0,5, затем он должен получить второе наименование, но если pH <верхняя граница первого + 0,5, то он должен получить первый (например, 7,85 приближается к 7,9, но 7,84999 приближается к 7,8). См. Контрольные примеры для уточнения.
Тестовые случаи:
Вход -> Выход 6.40 -> Слегка кислый 8.399 -> Умеренно щелочной 3.876 -> Чрезвычайно кислый 10.60 -> Очень сильно щелочной 0.012 -> Ультракислотный 7.30 -> Нейтральный 7.85 -> Умеренно щелочной (применяется правило приближения) 7.849 -> Слабощелочная (применяется правило приближения) 6.55 -> Нейтральный (применяется правило аппроксимации)
Это код-гольф , поэтому выигрывает самое короткое действительное представление (в байтах)!
* Андрей не придумал, это была Википедия !
Ответы:
Желе ,
77 7371 байтМонадическая ссылка, берущая номер и возвращающая список символов; или полная программа печати результата.
Попробуйте онлайн!
Как?
источник
PHP , 199 байт
Попробуйте онлайн!
источник
C # (.NET Core) , 236 байт
Попробуйте онлайн!
Это решение считает, что
p
не может быть больше 14.источник
T-SQL,
305299 байтВвод осуществляется с уже существующей таблицей т с
DECIMAL(4,1)
колонками а , в соответствии с нашими правилами ввода / вывода .Из-за
DECIMAL(4,1)
типа данных любое округление по «правилу аппроксимации» происходит при вводе значения во входную таблицу, поэтому мой код не требует явного управления.После выполнения экономии пространства
REPLACES
это простой SQL-запрос, объединяющий нашу таблицу ввода с нашим списком значений:Я изменяю порядок, поэтому
TOP 1
выбираю первый, меньший, чем наше входное значение.Даже эта форма (после удаления разрывов строк и лишних пробелов) довольно хороша - 318 байт . Добавляя заголовок
DECLARE
,REPLACES
ИEXEC
стоит только со всеми повторяющимися фразами.РЕДАКТИРОВАТЬ : сохранить 6 байтов, удалив ненужные ".0" на несколько значений
источник
05AB1E ,
818079777674 байтаПопробуйте онлайн!
Тестирование
объяснение
источник
Сетчатка , 228 байт
Попробуйте онлайн! Ссылка включает тестовый набор. Объяснение:
Умножьте ввод на 100, добавив суффикс к десятичной запятой и двум нулям, затем удалив десятичную точку и все, кроме двух цифр, после нее.
Преобразовать в одинарный.
Обрабатывать все щелочи, превращая в сокращения, которые будут расширены позже.
Ручка нейтральная.
Все, что осталось, должно быть кислым. (Но оставьте 1 в случае, если рН равен 0,001)
Обращайтесь со всеми кислотами.
Разверните аббревиатуры.
источник
Python 2 , 202 байта
-15 байт благодаря @JonathanAllan
Попробуйте онлайн!
источник
JavaScript (ES6),
192189185184 байтаКонтрольные примеры
Показать фрагмент кода
источник
Excel, 240 байт
источник
Javascript,
222209 байтВсе еще играю в гольф это немного
источник