구술 용 앱의 코드를 작성하기 위해 고용되었습니다.이 앱은 음성 소스에서 음성 입력을 받아 단어로 구문 분석 한 후 화면에 작성합니다.
경영진은 불행히도 작업을 수행하는 대신 하루 종일 앉아서 골프 코드를 작성하는 것으로 알려진 프로젝트의 모든 힘을 실제로 신뢰하지는 않습니다. 문장 부호가 적절하게 형식화 된 문장으로 산재 된 문장은 아래에서 '올바른 형식'으로 정의됩니다.
문장은 입력 문자열입니다. 단어는 공백이 아닌 문자 그룹입니다. 문장 부호는 첫 문자가 인 단어입니다
^
.단어의 첫 글자가 소문자가 아닌 경우 단어가 대문자로 표시됩니다 (대문자는 정규식과 일치
/[^a-z].*/
).문장의 첫 단어는 대문자 여야합니다.
A
^COMMA
는 쉼표 문자,
이며 뒤에 공백은 없습니다.aaa ^COMMA bbb
됩니다aaa, bbb
.A
^COLON
는 다음과 같은 쉼표입니다:
.A
^SEMICOLON
는 다음과 같은 쉼표입니다;
.A
^PERIOD
는 다음과 같은 쉼표입니다.
. 뒤에 나오는 단어^PERIOD
는 대문자 여야합니다.A
^BANG
는 다음과 같은 기간입니다!
.A
^DASH
는 대시 문자-
이며 앞뒤에 공백이 있습니다.A
^HYPHEN
도 대시 문자-
이지만 뒤에 또는 앞에 공백이 없습니다.는
^EMDASH
철자가 하이픈 (안 대시!)입니다--
.은
^OPENQUOTE
인용 문자입니다"
공간 이전하지만 다음하지 있습니다. 뒤에 나오는 단어^OPENQUOTE
는 대문자 여야합니다.^OPENQUOTE
앞에 문장 부호가 아닌 단어가 앞에 있으면^COMMA
해당 단어와 사이에를 추가 하십시오^OPENQUOTE
.^OPENQUOTE
다음에 다음 단어를 대문자로 만드는 구두점이 앞에 오는 경우 다음 단어로 건너 뜁니다^OPENQUOTE
.A
^CLOSEQUOTE
는,"
뒤에 공백이 있지만 앞에는 없는 공백입니다. A는 경우^CLOSEQUOTE
앞에는한다^COMMA
,^PERIOD
또는^BANG
, 구두점이 사라지고는 것을^CLOSEQUOTE
철자,"
,."
또는!"
각각. 사라지는 문장 부호가 대문자를 지정한 경우 해당 대문자는 다음 사용 가능한 단어에서 계속 발생해야합니다.전체 최종 결과에서 초기 또는 후행 공백을 제거해야하며 행에서 두 개 이상의 공백 문자열을 모두 단일 공백 문자로 축소해야합니다.
위에서 다루지 않은 모든 사례 (예 :
^COMMA ^COMMA
또는^SEMICOLON ^CLOSEQUOTE
또는^UNDEFINEDPUNCTUATION
)는 올바른 형식의 입력에서 발생하지 않으므로 정의되지 않은 동작입니다.
개발 팀은 다음을 알려줍니다.
프로젝트가 [귀하의 언어] 언어로 작성되었으며 Android / iPhone 용 앱인 경우 가능한 한 적은 공간을 차지하도록 가능한 한 짧아야합니다. 그것이 앱 개발이 작동하는 방식이 아니라는 말이 아니라고 설명하려고 노력합니다. 그러나 이봐, 우연의 일치! 당신은 [여러 언어] 의 놀라운 골퍼입니다 !
응용 프로그램에는 웹 액세스 권한이 없으며이 형식을 수행하는 라이브러리가 설치되어 있지 않습니다. 당신은 아마 당신이 필요하다고 생각한다면, 팀이 당신의 언어에 대한 정규 라이브러리를 허용하도록 팀을 납득시킬 수 있습니다.
큰 따옴표 나 작은 따옴표를 올바르게 사용하는 중첩 된 따옴표에 대한 지원은 이후 버전의 앱에 대해 계획되어 있지만 현재 작업중인 버전은 아니므로 걱정하지 마십시오.
경영진은 테스트 중심 개발의 열렬한 팬이므로 개발자 팀은 이미 프로그램의 일부에 대한 몇 가지 테스트를 작성하는 불쾌한 키보드 원숭이를 가지고 있습니다.
입력:
hello ^COMMA world ^BANG
산출:
Hello, world!
입력:
once upon a time ^COMMA there was a horse ^PERIOD that horse cost me $50 ^PERIOD ^OPENQUOTE eat your stupid oats ^COMMA already ^BANG ^CLOSEQUOTE I told the horse ^PERIOD the horse neighed back ^OPENQUOTE no ^CLOSEQUOTE and died ^PERIOD THE END
산출:
Once upon a time, there was a horse. That horse cost me $50. "Eat your stupid oats, already!" I told the horse. The horse neighed back, "No," and died. THE END
입력:
begin a ^PERIOD b ^COMMA c ^COLON d ^SEMICOLON e ^BANG f ^HYPHEN g ^DASH h ^EMDASH i ^OPENQUOTE j ^PERIOD ^OPENQUOTE k ^SEMICOLON ^OPENQUOTE l ^CLOSEQUOTE m ^BANG ^CLOSEQUOTE n ^PERIOD 0x6C6F6C end
산출:
Begin a. B, c: d; e! F-g - h--i, "j. "K; "l," m!" N. 0x6C6F6C end
이것은 코드 골프입니다 : 최저 점수가 이깁니다. 하나의 문자열 인수 함수 또는 STDIN에서 읽고 STDOUT에 쓰는 프로그램을 작성할 수 있습니다.
prompt()
?