Pertimbangkan string berikut:
Tin Snips
String ini berisi beberapa simbol atom pada tabel periodik . Kami dapat menulis ulang string ini untuk mengidentifikasi beberapa di antaranya:
[Ti][N] [Sn][I][P][S]
Tentu saja, kita juga bisa menulis seperti ini:
T[In] [S][Ni][P][S]
Aturan untuk menulis ulang input adalah sebagai berikut:
- Kasus input tidak masalah dalam hal pencocokan simbol atom.
- Jika sebuah elemen digunakan dalam simbol atom, kasingnya harus berubah sehingga simbolnya benar. Mis:
h
akan menjadi[H]
. - Semua simbol elemen terbungkus dalam kurung siku ASCII,
[
dan]
. - Ruang kosong dipertahankan:
Big ego
tidak dapat menggabungkan "g" dan "e" ke dalam[Ge]
. - Tidak semua karakter input perlu digabungkan menjadi simbol atom: jika karakter input tidak dimasukkan ke dalam simbol, ia dilewatkan apa adanya (case tidak masalah).
- Jika simbol dapat dibuat, itu harus dibuat. Dengan kata lain, itu tidak diperbolehkan untuk menghasilkan
Tin
dalam contoh di atas karena dimungkinkan untuk membuat setidaknya satu simbol di kata itu. Satu-satunya waktu karakter dapat dilewati tidak digunakan adalah ketika itu tidak dapat digunakan untuk membangun simbol atom. - Untuk keperluan tantangan ini, semua elemen dari Hidrogen (1) hingga Oganesson (118) valid. Tidak ada elemen yang lebih tinggi yang valid.
- Beberapa elemen yang lebih tinggi memiliki nama dan simbol yang ambigu: untuk tujuan tantangan ini, versi di Wikipedia akan digunakan. Untuk kenyamanan, simbol atom yang diijinkan ada di sini: H, He, Li, Be, B, C, N, O, F, Ne, Na, Mg, Al, Si, P, S, Cl, Ar, K, Ca, Sc, Ti, V, Cr, Mn, Fe, Co, Ni, Cu, Zn, Ga, Ge, As, Se, Br, Kr, Rb, Sr, Y, Zr, Nb, Mo, Tc, Ru, Rh, Pd, Ag, Cd, Dalam, Sn, Sb, Te, I, Xe, Cs, Ba, La, Ce, Pr, Nd, Pm, Sm, Uni Eropa, Gd, Tb, Dy, Ho, Er, Tm, Yb, Lu, Hf, Ta, W, Re, Os, Ir, Pt, Au, Hg, Tl, Pb, Bi, Po, At, Rn, Fr, Ra, Ac, Th, Pa, U, Np, Pu, Am, Cm, Bk, Cf, Es, Fm, Md, Tidak, Lr, Rf, Db, Sg, Bh, Hs, Mt, Ds, Rg, Cn, Nh, Fl, Mc, Lv, Ts, Og.
Tulis program atau fungsi yang menghasilkan semua kemungkinan keluaran dari satu input yang disediakan. Baik input maupun output dapat dalam bentuk apa pun yang Anda pilih. Ini bisa berupa string, array karakter, atau struktur data lainnya: apa pun yang nyaman dan jelas mewakili input dan output. Baik input dan output dapat dikeluarkan / dikeluarkan dari kode Anda namun Anda memilih: standar masuk / keluar, argumen fungsi / kembali, atau sesuatu yang lain.
- Input harus berupa string (lihat paragraf sebelumnya) dengan panjang positif yang hanya mengandung karakter ASCII dari kasus arbitrer dan karakter spasi (
0x20
). - Kode Anda harus menghasilkan semua string keluaran yang dapat dibuat menggunakan aturan input di atas.
- Urutan output ditentukan oleh implementasi. Satu-satunya persyaratan adalah bahwa semua string keluaran hadir.
- Jika disajikan dengan string input yang valid yang tidak mengandung simbol atom, cukup output string input.
- Jika disajikan dengan string input yang tidak valid sesuai aturan di atas (nol, nol karakter, berisi karakter ilegal, dll.) Program Anda dapat melakukan apa saja (macet, output kosong, dll.)
- Output adalah case-insensitive selain simbol atom yang perlu cocok dengan tabel periodik.
- Tidak ada celah standar.
Kasus uji:
Tin Snips
[Ti][N] [Sn][I][P][S]
[Ti][N] [S][Ni][P][S]
[Ti][N] [S][N][I][P][S]
T[In] [Sn][I][P][S]
T[In] [S][Ni][P][S]
T[In] [S][N][I][P][S]
T[I][N] ...
Quack
Q[U][Ac][K]
Q[U]a[C][K]
hehe
[H]e[H]e
[H]e[He]
[He][H]e
[He][He]
Stack Exchange
[S][Ta][C][K] Ex[C][H]a[N][Ge]
[S]t[Ac][K] Ex[C][H]a[N][Ge]
Ini golf kode, jadi biarkan saya melihat kode terpendek Anda!
Q[U][Ac][K]
dan Q[U]a[C][K]
. Kanan?
T[I][N]
bukan[T][I][N]
karena T bukan elemen. Pertanyaan saya (dan mungkin pertanyaan Rassar) adalah: apakah kita hanya perlu memberikan 1. Hanya keluaran di mana jumlah maksimum dari penggantian elemen dibuat? 2. Hanya jumlah minimum pemborosan? (HeHe dengan hidrogen menunjukkan jawaban untuk yang ini adalah tidak) 3. Semua output di mana kecocokan benar-benar habis? (dalam hal iniT[I][N]
dan jugaT[In]
akan berlaku.) Saya pikir interpretasi yang benar adalah 3.