목표
인쇄 가능한 ASCII 문자의 문자열을 받아들이는 일상적인 쓰기 이야 ,와 같은 문자가 포함 된 문자열을 반환 들 에는 두 문자가 두 번 이상 나타납니다 하위 문자열하지 않도록 다시 정렬을. 프로그램은 최신 컴퓨터 에서 각각 1 분 이내에 모든 벤치 마크 문자열 (아래 참조)을 처리해야 합니다 . 또한 특별 보너스를 수여합니다 (50) 대표를 처리하는 가장 낮은 점수 대답에 어떤 일분 아래에서 유효한 30 자 문자열입니다.
예를 들어, input이 주어지면 Mississippi
유효한 출력은 issiMspiips
(2 문자 서브 스트링이 두 번 나타나지 않음), 유효하지 않은 출력은 ipMsispiiss
(하위 문자열 is
이 두 번 나타나기 때문에 )됩니다.
이 루틴은 다음과 같은 형태를 취할 수 있습니다.
stdin
(또는 동등한) 또는 명령 행 에서 읽고 완전한 프로그램stdout
(또는 동등한)- 단일 문자열 인수를 허용하고 문자열을 반환하는 함수
입력 문자열이 항상 하나 이상의 유효한 출력을 허용한다고 가정 할 수 있습니다.
도전
루틴은 개행으로 구분 된 5 줄 이상의 코드 행으로 구성되어야합니다. 빈 줄 (공백 만 포함하는 줄 포함)은 모든 컨텍스트에서 무시되며 총 줄 수에 포함되지 않습니다.
소스 코드에 두 줄을 스와핑 합니다 치명적인 오류가 발생합니다. "치명적 오류"는 다음 조건 중 하나를 나타냅니다.
- 컴파일러 / 인터프리터가 치명적인 오류를 선언하면서 소스 코드를 컴파일하지 못함
- 런타임 치명적 오류 또는 처리되지 않은 런타임 예외로 루틴이 중단됩니다.
- 루틴이 갑작스럽고 비정상적인 프로그램 종료로 강제되어 가능한 오류 메시지 및 / 또는 스택 덤프를 제외하고 어떤 종류의 출력도 생성하지 않습니다.
또는 줄 바꿈 문자가없는 연속 된 코드 블록을 줄 대신 사용할 수 있습니다. 소스 코드를 컴파일 / 해석하기 전에 줄 바꿈이 제거된다는 것을 이해하면서 소스 파일에서이 블록을 각각 자신의 줄에 표시해야합니다.
예를 들어, 코드
aaaa
bbbb
cccc
응축 될 것이다
aaaabbbbcccc
평가하기 전에.
이 모드에서 치명적 오류 조건은 두 코드 블록을 교체하는 데 적용되므로 줄 바꿈이 제거되기 전에 소스 코드의 라인을 교체하는 데 적용됩니다. 따라서 위의 예제에서 루틴 aaaaccccbbbb
, bbbbaaaacccc
및 ccccbbbbaaaa
은 모두 컴파일 타임 또는 런타임에 치명적인 오류를 생성해야합니다.
이 대체 모드를 사용한 제출은 그 사용을 선언해야합니다.
채점
하자 N 과 소스 파일에서 비어 있지 않은 textlines의 수, 수 N ≥ 5하자가 c는 에 의해 구성 바이트 수있을 긴 텍스트 라인 후행 줄 바꿈을 계산하지 소스 파일 (바이트 길이로).
제출 점수는 c ( n + 10)로 표시됩니다.
가장 낮은 점수를받은 제출이 승자입니다.
행운을 빌어 요. ;)
벤치 마크 문자열
Abracadabra Alacazam
Is Miss. Mississauga Missing?
Ask Alaska's Alaskans
GGGGAAAATTTTCCCCgggaaatttccc
A Man A Plan A Canal Panama
Mspiisiipss
반복 ii
되지 않는 유일한 반복이기 때문에 유효 Mississippi
합니까?
CooliO
출력oOoCli
입니까?