배경
저는 현재 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
.