가장 짧은 부분 문자열 색인


9

나는 많은 당신이 아마 아마 게으르지 만 효율적인 사람입니다. 그래서 내가 무언가를 할 때마다 최소한의 노력으로하고 싶습니다. 그렇기 때문에이 문제를 해결해달라고 부탁합니다.

내가 가진 것은 일종의 문서입니다. 이 문서의 모든 줄에는 한 단어 나 짧은 문구가 있습니다. 문서는 정렬되지 않았지만 모든 것이 어디에 있는지 알았습니다. 물건을 더 빨리 찾는 데 도움이 될 수 있으므로 두 번째 목록이 필요합니다. 이곳에 오십시오.이 문서의 모든 텍스트 줄마다 식별자가 필요합니다. 내가 CTRL+ F할 수있는 것이지만 그 결과를 얻는 데 절대적으로 필요한 것보다 길 수는 없습니다.

입력 예 :

(blank)
an apple
spiderman 3
7pm pick up laundry
tequila
fake mustache
dishes on wednesday
banana
biscuits
(blank)

출력 예 :

ap,3,7,q,f,w,ba,bi

우리가 같은 페이지에 있는지 확인하기 위해 여기에 반복하겠습니다.

  • 입력은 줄 바꿈으로 구분 된 항목 목록을 포함하는 형식화되지 않은 텍스트 파일입니다. 여기에 .txt 형식으로되어 있으며 "STUFF.TXT"라고합니다.
  • 문서의 첫 줄과 마지막 줄이 비어 있습니다. 다른 모든 줄에는 길이가 0보다 큰 항목이 포함됩니다.
  • 파일에는 영숫자 (모두 소문자), 공백 및 줄 바꿈 만 포함됩니다.
  • 원하는 출력은 내 원래 목록과 동일한 순서로 식별자 목록입니다.
  • 모든 목록 항목에 대해 하나 이상의 검색어를 원하지 않습니다. 답변이 여러 개인 경우 하나를 선택하십시오. 위의 예에서는 'ap'을 선택 an apple했지만 'n', 'a', 'pp', 'pl'또는 'le'을 선택할 수 있습니다. 'an'이 아닙니다 banana.
  • 파일이 비어 있지 않으며 복제본이 포함되어 있지 않습니다.
  • 필요한 경우 라인 터미네이터에서 일치시킬 수 있습니다. 그러나 이는 목록 항목 (예 : 'apple'과 'apples')을 구분할 다른 방법이 없을 때만 사용하는 최후의 수단입니다.

표준 허점 은 허용되지 않습니다. 또한 이것은 코드 골프이므로 가장 짧은 코드가 승리합니다.

하나 더 예 :

(blank)
ban
any
king
bean
yen
rake
raki
bar
(blank)

그리고 그 출력 :

ban,ny,g,be,ye,ke,aki,ar

1
@CarpetPython은 가능한 한 가장 짧아야합니다. 공백은 입력 및 출력에 있으며 질문에 추가 할 수 있습니다.
freekvd

한 문자열이 다른 문자열의 접미사 인 경우 검색어 시작 부분에 줄 바꿈을 사용할 수 있습니까?
Martin Ender

@ MartinBüttner 예. 이것이 문서가 빈 줄로 시작하고 끝나는 이유이므로 각 목록 항목의 시작과 끝에 줄 바꿈이 있습니다.
freekvd

4
이 문제가 NP- 완전하다고 확신합니다. 나는 이것에 대한 정확한 표지 문제의 축소를 구성 할 수 있다고 생각합니다.
FUZxxl

4
무차별 대입보다 더 나은 솔루션이 없기 때문에 창의적인 솔루션이 표시되지 않습니다.
FUZxxl

답변:


3

Pyth, 39 바이트

Lsm.:bdtUbKfT.zj\,mhf!}Yjb-Kk+yky++bkbK

Brute는 모든 문자열의 모든 부분 집합을 길이를 늘리고 해당 문자열이 다른 문자열 안에서 발생하는지 확인합니다. 그래도 작동하지 않으면의 모든 하위 집합을 제외하고는 동일하게 수행됩니다 \nstring\n.


이것을 테스트 할 때 잘못된 유형 조합 오류가 발생합니다. pyth.herokuapp.com/…
freekvd

.:첫 번째 유형 문자열과 두 번째 유형 int로 호출 하는 것은 오류가 아니므로 @freekvd Heroku에는 오래된 버전의 Pyth가 있어야합니다 . 리포지토리에서 Pyth를 사용해보십시오 : github.com/isaacg1/pyth
orlp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.