Hãy xem xét chuỗi sau:
Tin Snips
Chuỗi này chứa một số ký hiệu nguyên tử trên bảng tuần hoàn . Chúng tôi có thể viết lại chuỗi này để xác định một vài trong số chúng:
[Ti][N] [Sn][I][P][S]
Tất nhiên, chúng ta cũng có thể viết nó theo cách này:
T[In] [S][Ni][P][S]
Các quy tắc để viết lại đầu vào như sau:
- Trường hợp của đầu vào không quan trọng về mặt phù hợp với các ký hiệu nguyên tử.
- Nếu một yếu tố được sử dụng trong một biểu tượng nguyên tử, trường hợp của nó phải thay đổi để biểu tượng là chính xác. Vd:
h
sẽ trở thành[H]
. - Tất cả các ký hiệu phần tử được đặt trong dấu ngoặc vuông ASCII
[
và]
. - Khoảng trắng được giữ nguyên:
Big ego
không thể kết hợp "g" và "e" vào[Ge]
. - Không phải tất cả các ký tự đầu vào cần được kết hợp thành một ký hiệu nguyên tử: nếu một ký tự đầu vào không được đặt vào một ký hiệu, thì nó được chuyển qua nguyên trạng (trường hợp không quan trọng).
- Nếu một biểu tượng có thể được thực hiện, nó phải được thực hiện. Nói cách khác, không được phép xuất ra
Tin
trong ví dụ trên vì có thể tạo ít nhất một ký hiệu trong từ đó. Lần duy nhất một nhân vật có thể được chuyển qua không sử dụng là khi nó không thể được sử dụng để xây dựng một biểu tượng nguyên tử. - Đối với mục đích của thử thách này, tất cả các yếu tố từ Hydrogen (1) đến Oganesson (118) đều hợp lệ. Không có yếu tố cao hơn là hợp lệ.
- Một số yếu tố cao hơn có tên và ký hiệu mơ hồ: cho mục đích của thử thách này, phiên bản tại Wikipedia sẽ được sử dụng. Để thuận tiện, các ký hiệu nguyên tử được phép ở đây: 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, In, Sn, Sb, Te, I, Xe, Cs, Ba, La, Ce, Pr, Nd, Pm, Sm, Eu, 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, Không, Lr, Rf, Db, Sg, Bh, Hs, Mt, Ds, Rg, Cn, Nh, Fl, Mc, Lv, Ts, Og.
Viết chương trình hoặc hàm tạo ra tất cả các đầu ra có thể từ một đầu vào được cung cấp. Cả đầu vào và đầu ra có thể ở bất kỳ hình thức nào bạn chọn. Đây có thể là một chuỗi, mảng ký tự hoặc một số cấu trúc dữ liệu khác: bất cứ điều gì vừa thuận tiện vừa thể hiện rõ ràng đầu vào và đầu ra. Cả đầu vào và đầu ra có thể được truyền vào / ra khỏi mã của bạn, tuy nhiên bạn chọn: vào / ra tiêu chuẩn, đối số / trả về hàm hoặc một cái gì đó khác.
- Đầu vào phải là một chuỗi (xem đoạn trước) có độ dài dương chỉ chứa các ký tự ASCII của trường hợp tùy ý và
0x20
ký tự khoảng trắng ( ). - Mã của bạn phải tạo ra tất cả các chuỗi đầu ra có thể được tạo bằng các quy tắc đầu vào ở trên.
- Thứ tự của đầu ra được xác định thực hiện. Yêu cầu duy nhất là tất cả các chuỗi đầu ra đều có mặt.
- Nếu được trình bày với một chuỗi đầu vào hợp lệ không chứa bất kỳ ký hiệu nguyên tử nào, chỉ cần xuất chuỗi đầu vào.
- Nếu được trình bày với một chuỗi đầu vào không hợp lệ theo các quy tắc ở trên (null, ký tự không, chứa các ký tự không hợp lệ, v.v.), chương trình của bạn có thể làm bất cứ điều gì (sự cố, đầu ra trống, v.v.)
- Đầu ra không phân biệt chữ hoa chữ thường, trừ các ký hiệu nguyên tử cần khớp với bảng tuần hoàn.
- Sơ hở tiêu chuẩn không được phép.
Các trường hợp thử nghiệm:
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]
Đây là mã golf, vì vậy hãy để tôi xem mã ngắn nhất của bạn!
Q[U][Ac][K]
và Q[U]a[C][K]
. Đúng?
T[I][N]
không phải[T][I][N]
vì T không phải là một yếu tố. Câu hỏi của tôi (và có thể là của Rassar) là: chúng ta chỉ phải đưa ra 1. Chỉ những kết quả đầu ra trong đó số lượng tối đa của các phần tử phần tử được thực hiện? 2. Chỉ có lượng chất thải tối thiểu? (HeHe với hydrogens chỉ ra câu trả lời cho câu hỏi này là không) 3. Tất cả các kết quả đầu ra trong đó các trận đấu đã hoàn toàn cạn kiệt? (trong trường hợp nàyT[I][N]
cũng nhưT[In]
sẽ hợp lệ.) Tôi nghĩ cách giải thích chính xác là 3.