이 StackOverflow 질문에서 영감을 얻었습니다 .
입력:
우리는 세 가지 입력을받습니다 :
- 분리
D할 분리 문자 I둘 사이 의 문자 는 구분 문자를 무시합니다 (모호하게 들리지만 아래에서 설명하겠습니다)- 끈
S
산출:
분할 후 하위 문자열을 포함하는 목록 / 배열입니다.
예:
Input:
D = ','
I = '"'
S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
왜? 쉼표에 분할은 일반적으로도 나눌 것 98,00, 12,000,000그리고 ,-,두 / 세 가지입니다. 그러나 그것들은 I입력 문자 내에 있기 때문에 여기서 나누는 것을 무시합니다.
도전 규칙 :
I입력 문자열에 항상 짝수의 문자 가 있다고 가정 할 수 있습니다 .- 문자
I가 항상D옆에 있어야 한다고 가정 할 수 있으며 (입력의 첫 번째 문자 또는 마지막 문자 인 경우 제외) 여전히 올바르게 분할 될 수 있습니다. 그래서 당신은 같은 필요가 없습니다D = ','; I = '"'; S = 'a,b"c,d"e,f'이런, 나 아무것도D=','; I='"'; S='a",b,"c'. - 입력 문자열은
S하나의 것도 포함하지 수D또는I. no가 포함되어 있으면D전체 입력 문자열을 항목으로 만 사용하여 목록을 출력합니다. - 출력 목록은 문자를 포함하지 않습니다
I이 더 포함 된 경우에도 더 이상D(당신은에서 볼 수 있듯이"Abc "되는'Abc '위의 예제에서). - 안에있는 부분 문자열
I만 포함 할 수D있습니다. 예를 들어D = ','; I = '"'; S = 'a,",",b,"c","d,e,,",f'초래['a', ',', 'b', 'c', 'd,e,,', 'f']. D의 시작이나 끝에 있지 않을 것이라고 가정 할 수S있으므로 빈 항목을 추적 / 선행 처리 할 필요가 없습니다.- 입력에 두 개의 인접
D항목이 있으면 빈 항목이 있습니다. 즉D = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'초래['a', 'b,c', 'd', '', 'e', '', 'f']. - 입력 및 출력에 범위의 인쇄 가능한 ASCII 만 포함되어 있다고 가정 할 수 있습니다
[32, 126](따라서 탭과 줄 바꿈 제외). - 또한 목록 / 배열을 반환 / 출력하는 대신 (특히 목록 / 배열이없는 언어 (예 : Retina)) 모든 항목을 개행으로 구분하여 출력 할 수 있습니다.
- 바이트를 저장하면 목록을 역순으로 출력 할 수 있습니다. 그러나 정렬 또는 '셔플'순서로 출력 할 수 없습니다. 그래서
D = ','; I = 'n'; S = 'a,2,b,3,c'으로 출력을 할 수있다[a,2,b,3,c]거나[c,3,b,2,a],하지만하지[2,3,a,b,c,]나[a,3,b,c,2]예를 들어.
일반 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙이 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트 (예 : TIO ) 링크를 추가하십시오 .
- 또한 답변에 대한 설명을 추가하는 것이 좋습니다.
테스트 사례 :
Input:
D = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'
Output:
['a', 'b,c', 'd', '', 'e', '', 'f']
Input:
D = ','; I = '"'; S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
Input:
D = ' '; I = ','; S = 'this is a test , to see if you understand it, or not , hmmm, I think I have too many commas , or not , perhaps..'
Output:
['this', 'is', 'a', 'test', ' to see if you understand it', 'or', 'not', ' hmmm', 'I', 'think', 'I', 'have', 'too', 'many', 'commas', ' or not ', 'perhaps..']
Input:
D = 'x'; I = 'y'; S = 'contains no lowercase X nor Y'
Output:
['contains no lowercase X nor Y']
Input:
D = '1'; I = '3'; S = '3589841973169139975105820974944592078316406286208948254211370679314'
Output: ['58984197', '69', '9975105820974944592078', '64062862089482542', '', '70679', '4']
Input:
D = ' '; I = 'S'; S = 'regular split on spaces'
Output:
['regular', 'split', 'on', 'spaces']
D = ','; I = '"'; S = ',"a,b",c,,d,""'방금 알았 기 때문에 거의 모든 대답도 실패합니다 . 도전 과제를 약간 수정하여 시작이나 끝에서 빈 항목을 사용할 수 없습니다. 과거 Java와 05AB1E의 경험을 바탕으로 언어가 기본적으로 올바르게 수행되지 않을 때 분할 후 빈 항목을 수동으로 수정하는 방법을 알고 있습니다. 이와 같은 테스트 사례는 여전히 지원되어야합니다. D = ','; I = '"'; S = 'a,"b,c",d,,e→ ['a', 'b,c', 'd', '', 'e']사이에 빈 항목이 있습니다.
'1,"2,3"' -> ['2,3','1']
[a,b,c]및 [c,b,a]출력을 허용하지만, [a,c,b]또는 [b,a,c]하지 예를 들어.
D=','; I='"'; S='a",b,"c'올바른 입력 결과는 무엇입니까 ?
"", "'ll remove all ", "")