Rozważ następujący ciąg:
Tin Snips
Ten ciąg zawiera kilka atomowych symboli w układzie okresowym pierwiastków . Możemy przepisać ten ciąg, aby zidentyfikować kilka z nich:
[Ti][N] [Sn][I][P][S]
Oczywiście możemy to również napisać w ten sposób:
T[In] [S][Ni][P][S]
Reguły przepisywania danych wejściowych są następujące:
- Przypadek wejścia nie ma znaczenia pod względem dopasowania symboli atomowych.
- Jeśli element jest używany w symbolu atomowym, jego wielkość musi się zmienić, aby symbol był poprawny. Np .:
h
stałby się[H]
. - Wszystkie symbole elementów są umieszczone w nawiasach kwadratowych ASCII
[
i]
. - Biała spacja jest zachowana:
Big ego
nie można łączyć „g” i „e” w[Ge]
. - Nie wszystkie znaki wejściowe muszą być łączone w symbol atomowy: jeśli znak wejściowy nie zostanie umieszczony w symbolu, jest on przekazywany w niezmienionej postaci (wielkość liter nie ma znaczenia).
- Jeśli można stworzyć symbol, należy go wykonać. Innymi słowy,
Tin
w powyższym przykładzie nie można generować danych wyjściowych, ponieważ w tym słowie można utworzyć co najmniej jeden symbol. Jedyny raz, przez który znak może przejść nieużywany, jest to, że nie można go użyć do budowy symbolu atomowego. - Do celów tego wyzwania wszystkie pierwiastki od wodoru (1) do Oganesson (118) są ważne. Żadne wyższe elementy nie są prawidłowe.
- Niektóre z wyższych elementów mają niejednoznaczne nazwy i symbole: do celów tego wyzwania należy użyć wersji z Wikipedii . Dla wygody są tutaj dozwolone symbole atomowe: 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, No, Lr, Rf, Db, Sg, Bh, Hs, Mt, Ds, Rg, Cn, Nh, Fl, Mc, Lv, Ts, Og.
Napisz program lub funkcję, która generuje wszystkie możliwe wyjścia z jednego dostarczonego wejścia. Zarówno dane wejściowe, jak i wyjściowe mogą być dowolne. Może to być ciąg znaków, tablica znaków lub inna struktura danych: cokolwiek jest zarówno wygodne, jak i wyraźnie reprezentuje dane wejściowe i wyjściowe. Zarówno dane wejściowe, jak i wyjściowe mogą być przekazywane / wychodzące z twojego kodu, niezależnie od tego, co wybierzesz: standardowe wejście / wyjście, argument / powrót funkcji lub coś innego.
- Dane wejściowe powinny być łańcuchem (patrz poprzedni akapit) o długości dodatniej, zawierającym tylko znaki ASCII o dowolnej wielkości i
0x20
znak spacji ( ). - Twój kod musi generować wszystkie ciągi wyjściowe, które można utworzyć przy użyciu powyższych reguł wejściowych.
- Kolejność danych wyjściowych jest zdefiniowana w implementacji. Jedynym wymaganiem jest obecność wszystkich ciągów wyjściowych.
- Jeśli podano prawidłowy ciąg wejściowy, który nie zawiera żadnych atomowych symboli, po prostu wyślij ciąg wejściowy.
- Jeśli zostanie wyświetlony ciąg wejściowy, który jest nieprawidłowy zgodnie z powyższymi regułami (zero, zero znaków, zawiera niedozwolone znaki itp.), Twój program może zrobić wszystko (awaria, puste dane wyjściowe itp.)
- W danych wyjściowych rozróżniana jest wielkość liter, inne niż symbole atomowe, które muszą pasować do układu okresowego.
- Standardowe luki są niedozwolone.
Przypadki testowe:
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]
To jest kod golfowy, więc pozwól mi zobaczyć twój najkrótszy kod!
Q[U][Ac][K]
i Q[U]a[C][K]
. Dobrze?
T[I][N]
nie[T][I][N]
bo T nie jest elementem. Moje pytanie (i ewentualnie Rassara) brzmi: czy musimy tylko dać 1. Tylko wyniki, w których dokonano maksymalnej liczby podstawień elementów? 2. Tylko minimalna ilość marnotrawstwa? (HeHe z wodorami wskazuje, że odpowiedź brzmi „nie”) 3. Wszystkie wyjścia, w których dopasowania są całkowicie wyczerpane? (w tym przypadku,T[I][N]
jak również,T[In]
byłoby ważne.) Myślę, że poprawna interpretacja to 3.