Considera la seguente stringa:
Tin Snips
Questa stringa contiene diversi simboli atomici nella tavola periodica . Potremmo riscrivere questa stringa per identificarne diverse:
[Ti][N] [Sn][I][P][S]
Certo, potremmo anche scrivere in questo modo:
T[In] [S][Ni][P][S]
Le regole per riscrivere l'input sono le seguenti:
- Il caso dell'input non ha importanza in termini di corrispondenza dei simboli atomici.
- Se un elemento viene utilizzato in un simbolo atomico, il suo caso deve cambiare in modo che il simbolo sia corretto. Es:
h
sarebbe diventato[H]
. - Tutti i simboli degli elementi sono racchiusi tra parentesi quadre ASCII
[
e]
. - Lo spazio bianco è preservato:
Big ego
non è possibile combinare "g" ed "e" in[Ge]
. - Non tutti i caratteri di input devono essere combinati in un simbolo atomico: se un carattere di input non viene inserito in un simbolo, viene passato così com'è (il caso non ha importanza).
- Se è possibile creare un simbolo, è necessario crearlo. In altre parole, non è consentito l'output
Tin
nell'esempio sopra perché è possibile creare almeno un simbolo in quella parola. L'unica volta in cui un personaggio può passare inutilizzato è quando non può essere usato per costruire un simbolo atomico. - Ai fini di questa sfida, tutti gli elementi da Idrogeno (1) a Oganesson (118) sono validi. Nessun elemento superiore è valido.
- Alcuni degli elementi superiori hanno nomi e simboli ambigui: ai fini di questa sfida, deve essere utilizzata la versione di Wikipedia . Per comodità, i simboli atomici consentiti sono qui: 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.
Scrivi un programma o una funzione che genera tutte le possibili uscite da un singolo input fornito. Sia l'input che l'output possono essere in qualsiasi forma di tua scelta. Potrebbe trattarsi di una stringa, una matrice di caratteri o qualche altra struttura di dati: qualunque cosa sia conveniente e rappresenti chiaramente l'input e l'output. Sia l'input che l'output possono essere passati in / out dal tuo codice, comunque tu scelga: in / out standard, argomento / ritorno della funzione o qualcos'altro.
- L'input deve essere una stringa (vedi paragrafo precedente) di lunghezza positiva contenente solo caratteri ASCII di caso arbitrario e il carattere spazio (
0x20
). - Il codice deve generare tutte le stringhe di output che possono essere create utilizzando le regole di input sopra.
- L'ordine dell'output è definito dall'implementazione. L'unico requisito è che siano presenti tutte le stringhe di output.
- Se presentato con una stringa di input valida che non contiene alcun simbolo atomico, emettere semplicemente la stringa di input.
- Se presentato con una stringa di input non valida secondo le regole sopra (null, zero caratteri, contiene caratteri illegali, ecc.) Il tuo programma potrebbe fare qualsiasi cosa (crash, output vuoto, ecc.)
- L'output non fa distinzione tra maiuscole e minuscole oltre ai simboli atomici che devono corrispondere alla tabella periodica.
- Scappatoie standard non consentite.
Casi test:
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]
Questo è il codice golf, quindi fammi vedere il tuo codice più corto!
Q[U][Ac][K]
e Q[U]a[C][K]
. Giusto?
T[I][N]
non[T][I][N]
perché T non è un elemento. La mia domanda (e forse quella di Rassar) è: dobbiamo solo dare 1. Solo output in cui viene effettuato il numero massimo di sottosezioni di elementi? 2. Solo la quantità minima di spreco? (Il HeHe con idrogeni indica che la risposta a questa è no) 3. Tutte le uscite in cui le partite sono completamente esaurite? (in questo casoT[I][N]
, così comeT[In]
sarebbe valida.) Penso che l'interpretazione corretta è 3.