Вызов
Учитывая два входа, положительный ион и отрицательный ион, вы должны вывести формулу для ионного соединения, которое будет сделано из двух ионов. Это в основном означает балансировку зарядов, чтобы они равнялись нулю.
Не беспокойтесь о форматировании формулы с индексами, но у вас должны быть скобки для многоатомных ионов (например, NO3
).
Вам не нужно учитывать какие-либо ошибки (например, если кто-то вводит два отрицательных иона, вы можете просто позволить программе выйти из строя).
Примечание: возьмите Fe, чтобы заряд 3+
Ионы
Все ионы, которые необходимо учесть, находятся вместе со своими зарядами во второй части AQA GCSE Chemistry Data Sheet .
Положительные ионы
H +
Na +
Ag +
К +
Li +
NH 4 +
Ба 2+
Ca 2+
Cu 2+
Mg 2+
Zn 2+
Pb 2+
Fe 3+
Аль 3+
Отрицательные ионы
Cl -
Br -
F -
Я -
ОН -
№ 3 -
O 2-
S 2-
SO 4 2-
CO 3 2-
Примеры
Несколько примеров:
H и O возвращает: -H2O
Ca и CO 3 возвращают: -CaCO3
Al и SO 4 возвращает: -Al2(SO4)3
Обратите внимание на следующий случай, который вы должны учитывать:
H и OH возвращает: - H2O
нет H(OH)
Fe
заряд 2+ или 3+?Ответы:
CJam, 176 байт
Попробуйте онлайн
Это было несколько болезненно, особенно со всеми особыми случаями для круглых скобок, показаний счетчиков, H2O и т. Д.
Данные не в суперкомпактном формате. Его можно урезать больше, но код, необходимый для его интерпретации, вероятно, компенсирует экономию. Итак, я пошел с массивом строк, где каждая строка содержит атомы с одинаковым зарядом, упорядоченные от -2 до +3 (где строка для 0 пуста).
Объяснение:
источник
Lua ,
174242 байтаЯ забыл скобки «-_-», что дало мне 242 балла. Ну, по крайней мере, это было довольно забавное испытание.
Попробуйте онлайн!
Старая версия:
Используя тенденцию Lua инициализировать все с нулевым значением, мы можем сократить расходы на хранение. Тем не менее, Луа все еще немного неуклюжий :(
источник
Al
иSO4
должно выходитьAl2(SO4)3
, а ты выходитьAl2SO43
. Попробуйте онлайнCa
иCO3
. Кроме того, вы должны добавить ссылку TIO в ваш ответ.Java (
619647667 байт)[Исправлено] Обновление: H + OH возвращает HOH, хотя я жестко закодировал его, чтобы не ... работать над этим
[Исправлено] Обновление: иногда скобки появляются, когда они не должны
Код
Я не был уверен, как сделать это без жесткого кодирования каждого заряда ионов, поэтому он оказался длинным. Повезло, потому что все заряды равны 1, 2 или 3, поэтому легко найти количество каждого иона.
расширенный
Попробуй здесь
Данные
Дайте мне знать, если кто-то из них не прав
Заметка
Я начал в Pyth, но потом меня раздражали порядок и скобки, вот что у меня было, если кто-то захочет закончить.
источник
H
аOH
?H + SO4
, я думаю, результат должен бытьH2SO4
без скобок.JavaScript (ES6),
316277 байтЯ глобализованp
иn
переменные (так же , как я сделал в CoffeeScript) для облегчения тестирования. Локализация переменных не будет влиять на количество символов.Вариант ES5,
323284 байтаНе так много изменений, кроме избавления от функции стрелки и строки шаблона:
Показать фрагмент кода
источник
CoffeeScript,
371333 байтаЭто число включает в себя новые строки (некоторые новые строки можно заменить на точки с запятой, но это не повлияет на количество символов)
источник
CJam (137 байт)
Это анонимный блок (функция), который принимает два иона в виде строк, заключенных в список, и возвращает строку.
Демо онлайн .
рассечение
источник
Python 3 , 364 байта
Сохраняет ионы по абсолютной величине их зарядов, как
index+1
в двумерном массиве (элементы с 0 индексами имеют + - 1 заряд и т. Д.). Использует string.split (), чтобы сохранить там несколько символов.H + OH = H2O
Сначала обрабатывает частный случай , затем вычисляет, сколько ионов необходимо для каждого сорта, так как LCM их двух зарядов делится на его заряд. Затем добавляет в скобках, если необходимо, а также фактическое количество ионов.Попробуйте онлайн!
источник