배경
저는 현재 AP Comp Sci A : Java 클래스에 있으며 코드 골프에 대해 친구들과 함께 시작하고 싶습니다. 나는 코스에서 도전을 받았으며 커뮤니티 가이 도전을 할 수있는 바이트 수를보고 싶습니다.
도전 세부 사항 :
기본 문자열과 피벗 문자열의 두 입력 문자열이 제공되면 다음을 수행하십시오.
피봇 스트링이 메인 스트링의 서브 스트링으로서 정확히 1 회이면, 피봇 스트링 이전에 오는 메인 스트링의 부분 은 교체되는 상기 서브 트레이스 내의 순서 를 유지하면서 이후의 부품과 교환 될 것이다 .
예를 들면 다음과 같습니다.
피벗 문자열이 비어 있거나 기본 문자열 내에 피벗 문자열이 없으면 프로그램에서 동작을 정의하지 않아도됩니다.
피벗 문자열 인스턴스가 두 개 이상인 경우 피벗 의 첫 번째 인스턴스 에서만 분할이 발생해야합니다 .
예 : 기본 문자열 OneTwoThreeTwoOne과 피벗 문자열이 주어지면 Two출력은이어야합니다 ThreeTwoOneTwoOne.
기본 문자열 1Two2Two3Two4과 피벗이 주어지면 Two출력은이어야합니다 2Two3Two4Two1.
기본 문자열 OneTwoThree과 피벗 문자열 "Two"가 주어지면 출력은입니다 ThreeTwoOne. 메인 스트링 the rabbit is faster than the turtle과 피벗 스트링이 주어지면
is faster than
(단일 공백 뒤에 오는 공백에 유의하십시오) 출력은이어야합니다 the turtle is faster than the rabbit.
메인 스트링 1-2-3-4-5-6과 피벗이 주어지면 -출력은되어야합니다 2-3-4-5-6-1.
후 :
이것은 코드 골프에 대한 나의 첫 번째 질문이므로 제안이나 건설적인 비판이 있으면 자유롭게 말씀하십시오.
또한이 프로젝트에 대한 내 코드 (코스에 초점을 맞추기 때문에 Java로 작성 됨)는 아래에서 찾을 수 있습니다. 당신이 어떤 팁이 있다면, 나는 그것을보고 싶습니다. 현재 363 바이트이지만 훨씬 더 좋고 작은 솔루션을 만들 수 있습니다.
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]);}}
참고 : 입력 및 피벗 문자열을 찾을 수없는 경우에 대한 텍스트는 원래 과제에는 필수이지만이 과제에는 적용되지 않습니다.
2-3-4-5-6-1.
pivot='-'과에 대한 예상 결과는 무엇입니까main='1-2-3-4-5-6'? 대부분의 제출물2-3-4-5-6-1이 이것에 대해 출력 되지만 도전을 이해함에 따라 반드시 있어야합니다2-1-3-4-5-6.