Tantangan
Diberikan dua input, ion positif dan ion negatif, Anda harus mengeluarkan rumus untuk senyawa ionik yang akan dibuat dari dua ion. Ini pada dasarnya berarti menyeimbangkan biaya sehingga mereka sama dengan nol.
Jangan repot-repot memformat rumus dengan angka subskrip, tetapi Anda harus memiliki tanda kurung untuk ion multi-atom (seperti NO3
).
Anda tidak harus memperhitungkan kesalahan apa pun (misalnya, jika seseorang memasukkan dua ion negatif, Anda dapat membiarkan programnya gagal).
Catatan: Ambil Fe untuk memiliki muatan 3+
Ion
Semua ion yang perlu dipertanggungjawabkan ditemukan bersama dengan muatannya pada bagian kedua dari Lembar Data Kimia AQA GCSE .
Ion positif
H +
Na +
Ag +
K +
Li +
NH 4 +
Ba 2+
Ca 2+
Cu 2+
Mg 2+
Zn 2+
Pb 2+
Fe 3+
Al 3+
Ion negatif
Cl -
Br -
F -
Saya -
OH -
TIDAK 3 -
O 2-
S 2-
SO 4 2-
CO 3 2-
Contohnya
Beberapa contoh:
Pengembalian H dan O : -H2O
Pengembalian Ca dan CO 3 : -CaCO3
Pengembalian Al dan SO 4 : -Al2(SO4)3
Perhatikan kasus berikut yang harus Anda pertanggungjawabkan:
Pengembalian H dan OH : - H2O
tidak H(OH)
Fe
memiliki muatan 2+ atau 3+?Jawaban:
CJam, 176 byte
Cobalah online
Ini agak menyakitkan, terutama dengan semua kasus khusus untuk kurung, menunjukkan jumlah, H2O, dll.
Data tidak dalam format yang sangat ringkas. Bisa dipangkas lebih banyak, tetapi kode yang diperlukan untuk menafsirkannya mungkin akan mengkompensasi penghematan. Jadi saya pergi dengan array string, di mana setiap string berisi atom dengan muatan yang sama, dipesan dari -2 hingga +3 (di mana string untuk 0 kosong).
Penjelasan:
sumber
Lua ,
174242 byteSaya lupa tanda kurung '-_-, yang membuat saya sampai 242. Oh well, setidaknya itu tantangan yang cukup menyenangkan.
Cobalah online!
Versi lama:
Menyalahgunakan kecenderungan Lua untuk menginisialisasi segala sesuatu dengan nilai nol, kita dapat menghemat biaya penyimpanan. Meski begitu, Lua masih agak kikuk :(
sumber
Al
danSO4
harus keluaranAl2(SO4)3
, tetapi Anda keluaranAl2SO43
. Cobalah onlineCa
danCO3
. Anda juga harus menambahkan tautan TIO ke jawaban Anda.Java (
619647667 bytes)[Memperbaiki] Pembaruan: H + OH mengembalikan HOH meskipun saya sulit mengkodekannya untuk .... mengerjakannya
Pembaruan [Tetap]: Terkadang Parenthesis muncul padahal seharusnya tidak
Kode
Saya tidak yakin bagaimana melakukan ini tanpa pengkodean keras setiap ion, jadi itu lama. Beruntung karena semua muatannya adalah 1, 2, atau 3 sehingga menemukan jumlah masing-masing ion itu mudah.
Diperluas
Coba di sini
Data
Beri tahu saya jika ada yang salah
Catatan
Saya mulai di Pyth, tapi kemudian saya merasa terganggu dengan urutan dan tanda kurung, inilah yang saya miliki jika ada yang ingin menyelesaikannya.
sumber
H
danOH
?H + SO4
, saya pikir hasilnya seharusnyaH2SO4
, tanpa tanda kurung.JavaScript (ES6),
316277 byteSaya telah mengglobalp
dann
variabel (seperti yang saya lakukan di CoffeeScript) untuk pengujian lebih mudah. Melokalkan variabel tidak akan membuat perbedaan dalam jumlah karakter.Varian ES5,
323284 byteTidak banyak perubahan selain menghilangkan fungsi panah dan string templat:
Tampilkan cuplikan kode
sumber
CoffeeScript,
371333 byteHitungan ini termasuk baris baru (beberapa baris baru dapat diganti dengan titik koma tetapi itu tidak akan mempengaruhi jumlah karakter)
sumber
CJam (137 bytes)
Ini adalah blok anonim (fungsi) yang mengambil dua ion sebagai string yang terbungkus dalam daftar, dan mengembalikan sebuah string.
Demo online .
Pembedahan
sumber
Python 3 , 364 byte
Menyimpan ion dengan nilai absolut dari muatannya seperti
index+1
dalam larik 2-D (elemen 0-indeks memiliki muatan + - 1, dll.). Menggunakan string.split () untuk menyimpan beberapa karakter di sana. Menangani kasus khususH + OH = H2O
pertama, lalu menghitung berapa banyak ion yang dibutuhkan dari masing-masing jenis sebagai LCM dari dua muatan mereka dibagi dengan muatannya. Kemudian tambahkan tanda kurung jika diperlukan serta jumlah ion yang sebenarnya.Cobalah online!
sumber