Antecedentes
Actualmente estoy en una clase AP Comp Sci A: Java, y quiero comenzar a algunos de mis amigos en golf de código. Tengo un desafío del curso, y me gustaría ver en cuántos bytes la comunidad puede hacer este desafío.
Detalles del desafío:
Dadas dos cadenas de entrada, la cadena principal y la cadena de pivote, haga lo siguiente:
Si la cadena de pivote es exactamente una vez como una subcadena de la cadena principal, la parte de la cadena principal que viene antes de la cadena de pivote se intercambiará con la parte que viene después, mientras se preserva el orden dentro de dichas subcadenas que se intercambian .
Por ejemplo:
Si la cadena dinámica está vacía o la cadena dinámica no se encuentra dentro de la cadena principal, el programa no tiene que tener un comportamiento definido.
Si hay más de una instancia de la cadena de pivote, la división debe ocurrir en la primera y solo la primera instancia del pivote.
Ejemplos: Dada la cadena principal OneTwoThreeTwoOney la cadena dinámica Two, la salida debería ser ThreeTwoOneTwoOne.
Dada la cadena principal 1Two2Two3Two4y el pivote Two, la salida debería ser 2Two3Two4Two1.
Dada la cadena principal OneTwoThreey la cadena de pivote "Dos", la salida debería ser ThreeTwoOne. Dada la cadena principal the rabbit is faster than the turtley la cadena de pivote
is faster than
(tenga en cuenta el espacio único que sigue y anterior), la salida debe ser the turtle is faster than the rabbit.
Dada la cadena principal 1-2-3-4-5-6y el pivote -, la salida debería ser 2-3-4-5-6-1.
Epílogo:
Esta es mi primera pregunta sobre el código de golf, así que si tiene sugerencias o críticas constructivas, no dude en decirlo.
Además, mi código para este proyecto (escrito en Java porque el curso se centra en eso) se puede encontrar a continuación. Si tienes algún consejo, me encantaría verlo. Actualmente tiene 363 bytes, pero apuesto a que ustedes pueden encontrar soluciones mucho mejores y más pequeñas.
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: El texto para las entradas y para el caso de que no se encuentre la cadena de pivote es obligatorio para la asignación original, pero no para este desafío.
2-3-4-5-6-1.
pivot='-'ymain='1-2-3-4-5-6'? La mayoría de las presentaciones salen2-3-4-5-6-1para esto, pero como entiendo el desafío, debería ser2-1-3-4-5-6.