Si sta fornendo il supporto tecnico per la Bruce Dickenson come egli produce una sessione di registrazione Blue Oyster Cult. Quando chiede altro campanaccio , puoi darglielo.
Il tuo compito
Scrivi un programma o una funzione che accetta come input una stringa (o equivalente nella tua lingua) e genera una stringa correlata contenente un altro campanaccio.
Quanti campanacci contiene una stringa?
Il numero di campanacci che una stringa contiene è uguale al numero massimo di copie distinte di "campanaccio" che possono essere ottenute permutando i caratteri della stringa. Ad esempio, "bbbccceeellllllooowwwwwwwww"
contiene 3 campanacci, mentre "bbccceeellllllooowwwwwwwww"
e "bbbccceeelllllooowwwwwwwww"
ciascuno contiene 2 campanacci e "cowbel"
contiene 0 campanacci.
Come dovrebbe essere correlato l'output all'input?
L'output dovrebbe consistere nella concatenazione, in questo ordine, della stringa di input e del prefisso più breve della stringa di input necessaria per aumentare il numero di campanacci.
Ad esempio, è "bbbccceeelllllooowwwwwwwww"
necessario solo un ulteriore "l"
per contenere 3 campanacci anziché 2; il prefisso più breve che contiene che "l"
è "bbbccceeel"
. Pertanto, se l'input è "bbbccceeelllllooowwwwwwwww"
, allora dovrebbe essere l'output "bbbccceeelllllooowwwwwwwwwbbbccceeel"
.
Aspetti tecnici
- Si può presumere che l'input contenga solo caratteri ASCII stampabili. Se ci sono uno o due caratteri che sono fastidiosi per l'elaborazione delle stringhe della tua lingua (come newline o
\
), puoi presumere che l'input non li contenga, basta menzionare questa limitazione. - Si può inoltre supporre che i caratteri alfabetici nell'input siano tutti minuscoli o maiuscoli. Se scegli di non assumere uno di questi, conta i campanacci senza distinzione tra maiuscole e minuscole.
- Si può inoltre ipotizzare che l'input contiene almeno una copia di ciascuno dei personaggi
b
,c
,e
,l
,o
, ew
. Ciò equivale ad assumere che un prefisso della stringa possa essere concatenato ad essa per produrre una stringa che contiene più campanaccio. (Notare che la stringa di input stessa non deve contenere un campanaccio.) - Se la tua lingua ha un builtin che risolve questo problema ... quindi usalo totalmente, sul serio, quanto è fantastico.
Pannolini dorati
Poiché il tempo di registrazione in studio è costoso, il codice deve essere il più breve possibile. La voce con il minor numero di byte è il vincitore!
Casi test
( link pastebin per facilitare la copia / incolla)
Ingresso di prova n. 1: "christopher walken begs for more cowbell!"
Uscita test n. 1: "christopher walken begs for more cowbell!christopher wal"
Ingresso di prova n. 2: "the quick brown fox jumps over the lazy dog"
Uscita test n. 2: "the quick brown fox jumps over the lazy dogthe quick brown fox jumps over the l"
Ingresso di prova n. 3: "cowbell"
Uscita test n. 3: "cowbellcowbell"
Test input # 4: "cowbell cowbell cowbell"
Uscita test n. 4: "cowbell cowbell cowbellcowbell"
Ingresso di prova n. 5: "cowbell cowbell cowbel"
Uscita test n. 5: "cowbell cowbell cowbelcowbel"
Test input # 6: "bcelow"
Uscita test n. 6: "bcelowbcel"
Test input # 7: "abcdefghijklmnopqrstuvwxyz"
Uscita test n. 7: "abcdefghijklmnopqrstuvwxyzabcdefghijkl"
Ingresso di prova n. 8: "cccowwwwbbeeeeelllll"
Uscita test n. 8: "cccowwwwbbeeeeelllllccco"
Ingresso di prova n. 9: "be well, programming puzzles & code golf"
Uscita test n. 9: "be well, programming puzzles & code golfbe well, programming puzzles & c"
Ingresso di prova n. 10: "lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. wow!"
Uscita test n. 10: "lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. wow!lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lab"
Test input # 11:
"c-c-b-c
i have a cow, i have a bell.
uh! bell-cow!
i have a cow, i have a cowbell.
uh! cowbell-cow!
bell-cow, cowbell-cow.
uh! cow-cowbell-bell-cow.
cow-cowbell-bell-cow!
"
Uscita test n. 11:
"c-c-b-c
i have a cow, i have a bell.
uh! bell-cow!
i have a cow, i have a cowbell.
uh! cowbell-cow!
bell-cow, cowbell-cow.
uh! cow-cowbell-bell-cow.
cow-cowbell-bell-cow!
c-c-b-c
i have a cow, i have a bell"
test case -> result
un unico grande blocco di codice preformattato. È molto più bello esteticamente e più facile da copiare incolla.
L
s nella parola, questo non è ciò che la sfida richiede.