Herausforderung
Bei zwei Eingaben, einem positiven und einem negativen Ion, müssen Sie die Formel für die ionische Verbindung ausgeben, die aus den beiden Ionen hergestellt werden würde. Dies bedeutet im Grunde, die Gebühren so auszugleichen, dass sie gleich Null sind.
Sie brauchen die Formel nicht mit tiefgestellten Zahlen zu formatieren, aber Sie müssen Klammern für die Ionen mit mehreren Atomen (wie z. B. NO3
) haben.
Sie müssen keine Fehler berücksichtigen (wenn beispielsweise zwei negative Ionen eingegeben werden, kann das Programm einfach fehlschlagen).
Hinweis: Nehmen Sie Fe, um eine Ladung von 3+ zu haben
Ionen
Alle Ionen, die berücksichtigt werden müssen, sind zusammen mit ihren Ladungen im zweiten Teil des AQA GCSE-Chemiedatenblatts aufgeführt .
Positive Ionen
H +
Na +
Ag +
K +
Li +
NH 4 +
Ba 2+
Ca 2+
Cu 2+
Mg 2+
Zn 2+
Pb 2+
Fe 3+
Al 3+
Negative Ionen
Cl -
Br -
F -
Ich -
OH -
NEIN 3 -
O 2-
S 2-
SO 4 2-
CO 3 2-
Beispiele
Einige Beispiele:
H und O kehrt zurück: -H2O
Ca- und CO 3 -Rückgabe: -CaCO3
Al und SO 4 gibt zurück: -Al2(SO4)3
Beachten Sie den folgenden Fall, den Sie berücksichtigen müssen:
H und OH kehrt zurück: - H2O
nicht H(OH)
Fe
eine Ladung von 2+ oder 3+?Antworten:
CJam, 176 Bytes
Probieren Sie es online aus
Dies war etwas schmerzhaft, insbesondere bei allen Sonderfällen für Klammern, Zählungen, H2O usw.
Die Daten sind nicht in einem super kompakten Format. Es könnte mehr gekürzt werden, aber der Code, der zur Interpretation benötigt wird, würde wahrscheinlich die Einsparungen ausgleichen. Also ging ich mit einer Reihe von Zeichenfolgen, wobei jede Zeichenfolge die Atome mit der gleichen Ladung enthält, sortiert von -2 bis +3 (wobei die Zeichenfolge für 0 leer ist).
Erläuterung:
quelle
Lua ,
174242 BytesIch habe die Klammern -_- vergessen, mit denen ich auf 242 gekommen bin. Na ja, es war zumindest eine Herausforderung, die Spaß machte.
Probieren Sie es online!
Alte Version:
Wenn wir Luas Tendenz missbrauchen, alles mit einem Nullwert zu initialisieren, können wir die Lagerkosten senken. Trotzdem ist Lua immer noch etwas klobig :(
quelle
Al
undSO4
sollte ausgebenAl2(SO4)3
, aber Sie geben ausAl2SO43
. Versuchen Sie es onlineCa
undCO3
. Außerdem sollten Sie Ihrer Antwort den TIO-Link hinzufügen.Java (
619647667 Byte)[Behoben] Update: H + OH gibt HOH zurück, obwohl ich es hart codiert habe, um nicht daran zu arbeiten
[Behoben] Update: Manchmal erscheinen Klammern, wenn sie nicht sollten
Code
Ich war mir nicht sicher, wie ich das machen sollte, ohne jede Ionenladung hart zu codieren. Es dauerte also lange. Glücklicherweise sind alle Ladungen 1, 2 oder 3, so dass es einfach ist, die Menge jedes Ions zu finden.
Erweitert
Probieren Sie es hier aus
Daten
Lassen Sie mich wissen, wenn einer von ihnen falsch ist
Hinweis
Ich habe in Pyth angefangen, aber dann habe ich mich über die Reihenfolge und die Klammern geärgert. Hier ist, was ich hatte, wenn jemand es beenden möchte.
quelle
H
undOH
?H + SO4
denke ich, dass das ErgebnisH2SO4
ohne Klammern sein sollte.JavaScript (ES6),
316277 ByteIch habe die Variablenp
und globalisiertn
(genau wie in CoffeeScript), um das Testen zu vereinfachen. Das Lokalisieren der Variablen würde keinen Unterschied in der Zeichenanzahl machen.ES5-Variante,
323284 BytesAbgesehen davon, dass die Pfeilfunktion und der Template-String entfernt wurden, ändert sich nicht viel:
Code-Snippet anzeigen
quelle
CoffeeScript,
371333 BytesDiese Anzahl enthält Zeilenumbrüche (einige Zeilenumbrüche können durch Semikolons ersetzt werden, dies hat jedoch keine Auswirkungen auf die Anzahl der Zeichen).
quelle
CJam (137 Bytes)
Dies ist ein anonymer Block (eine Funktion), der zwei Ionen als Zeichenfolgen in einer Liste verwendet und eine Zeichenfolge zurückgibt.
Online-Demo .
Präparation
quelle
Python 3 , 364 Bytes
Speichert die Ionen nach dem absoluten Wert ihrer Ladungen wie
index+1
in einem 2-D-Array (0-Index-Elemente haben + - 1 Ladung usw.). Verwendet string.split (), um dort einige Zeichen zu speichern. Behandelt zuerst den Sonderfall vonH + OH = H2O
und berechnet dann, wie viele Ionen jeder Art benötigt werden, indem die LCM ihrer beiden Ladungen durch ihre Ladung dividiert wird. Fügt dann bei Bedarf in Klammern die tatsächliche Anzahl der Ionen hinzu.Probieren Sie es online!
quelle