fundo
Atualmente, estou na classe AP Comp Sci A: Java e quero iniciar alguns de meus amigos no golfe de código. Tenho um desafio do curso e gostaria de ver em quantos bytes a comunidade pode fazer esse desafio.
Detalhes do desafio:
Dadas duas seqüências de entrada, a principal e a dinâmica, faça o seguinte:
Se a sequência de pivô for exatamente uma vez como uma substring da sequência principal, a parte da sequência principal que vem antes da sequência de pivô deve ser trocada pela parte que vem depois, preservando a ordem nas subtrações sendo trocadas .
Por exemplo:
Se a sequência dinâmica estiver vazia ou a sequência dinâmica não for encontrada na sequência principal, o programa não precisará ter um comportamento definido.
Se houver mais de uma instância da sequência dinâmica, a divisão deverá ocorrer na primeira e somente na primeira instância da dinâmica.
Exemplos: Dada a sequência principal OneTwoThreeTwoOne
e a sequência dinâmica Two
, a saída deve ser ThreeTwoOneTwoOne
.
Dada a cadeia principal 1Two2Two3Two4
e o pivô Two
, a saída deve ser 2Two3Two4Two1
.
Dada a sequência principal OneTwoThree
e a sequência dinâmica "Dois", a saída deve ser ThreeTwoOne
. Dada a sequência principal the rabbit is faster than the turtle
e a sequência dinâmica
is faster than
(observe o espaço único à direita e à direita), a saída deve ser the turtle is faster than the rabbit
.
Dada a cadeia principal 1-2-3-4-5-6
e o pivô -
, a saída deve ser 2-3-4-5-6-1
.
Posfácio:
Esta é a minha primeira pergunta sobre código de golfe, portanto, se você tiver sugestões ou críticas construtivas, sinta-se à vontade para dizer isso.
Além disso, meu código para este projeto (escrito em Java porque o curso se concentra nisso) pode ser encontrado abaixo. Se você tiver alguma dica, eu adoraria vê-las. Atualmente, são 363 bytes, mas aposto que vocês podem criar soluções muito melhores e menores.
import java.util.Scanner;interface Main{static<T>void D(T f){System.out.println(f);}static void main(String[]A){Scanner s=new Scanner(System.in);D("Enter the first String:");String a=s.nextLine();D("Enter the pivot String:");String p=s.nextLine();if(p.isEmpty()|!a.contains(p)){D("Error: Pivot String not found.");return;}String w[]=a.split(p,2);D(w[1]+p+w[0]);}}
Nota: O texto para as entradas e para o caso em que a sequência dinâmica não é encontrada é obrigatório para a atribuição original, mas não para este desafio.
2-3-4-5-6-1
.
pivot='-'
emain='1-2-3-4-5-6'
? A maioria dos envios gera2-3-4-5-6-1
isso, mas, pelo que entendi, o desafio deve ser2-1-3-4-5-6
.