ディクテーション作成アプリのコードを書くために雇われました。このアプリは、音声入力から音声入力を取得し、それを単語として解析し、画面に書き留めます。
経営陣はプロジェクトのパワーを本当に信用していません。残念ながら仕事をするのではなく、一日中じっと座ってゴルフをすることで知られています。適切にフォーマットされた文への句読点が散在した文。「適切にフォーマットされた」は以下で定義されます。
Sentenceは入力の文字列です。Wordは、連続する非スペース文字のグループです。句読点は、最初の文字がである単語です
^。単語の最初の文字が小文字ではない場合、単語は大文字になります(大文字の単語は正規表現に一致します
/[^a-z].*/)。文の最初の言葉は大文字にする必要があります。
A
^COMMAはコンマ文字,であり、スペースが続きますが、前にはありません。aaa ^COMMA bbbになりaaa, bbbます。A
^COLONはのようなカンマです:。A
^SEMICOLONはのようなカンマです;。A
^PERIODはのようなカンマです.。aに続く単語は^PERIOD大文字にする必要があります。A
^BANGは次のような期間です!。A
^DASHはダッシュ文字-であり、前後にスペースがあります。A
^HYPHENもダッシュ文字です-が、前後にスペースはありません。An
^EMDASHは、ハイフン(ダッシュではありません!)で、スペルがあります--。アンは
^OPENQUOTE引用符で"スペース以下の直前ではなく、を持っています。に続く単語は^OPENQUOTE大文字にする必要があります。の^OPENQUOTE前に句読点ではない単語がある場合は^COMMA、その単語との間にを追加し^OPENQUOTEます。^OPENQUOTE次の単語を大文字にする句読点がanの前にある場合、次の単語にスキップし^OPENQUOTEます。A
^CLOSEQUOTEは、,"後にスペースが続くが前にはない有向グラフです。場合^CLOSEQUOTEによって先行される^COMMA、^PERIODまたは^BANG、句読点が消えていることを^CLOSEQUOTE綴られている,"、."または!"それぞれ。句読点が消えて大文字が指定された場合、その大文字は引き続き次の使用可能な単語で発生する必要があります。完全な最終結果の最初のスペースまたは末尾のスペースは削除する必要があり、行内の2つ以上のスペースの文字列はすべて単一のスペース文字に折りたたむ必要があります。
上記で説明されていないケース(
^COMMA ^COMMAまたは^SEMICOLON ^CLOSEQUOTEまたは^UNDEFINEDPUNCTUATION)は、整形式入力では発生しないため、未定義の動作です。
開発チームは次のことを通知します。
プロジェクトは[あなたの言語はこちら]の言語で書かれています。Android/ iPhone用のアプリの場合は、できるだけスペースをとらないように、できるだけ短くする必要があります。あなたはそれがアプリ開発の仕組みではないことを説明しようとしますが、彼らは耳を傾けません。しかし、ちょっと、偶然です!あなたは[ここの言語]で素晴らしいゴルファーです!
アプリにはWebアクセス許可がありません。また、このフォーマットを実行するライブラリはインストールされません。おそらく、あなたの言語に正規表現ライブラリが存在する場合は、それが必要だと思われる場合は、チームリーダーにそのライブラリを許可するよう説得することができます。
二重引用符または単一引用符を適切に使用するネストされた引用符のサポートは、アプリの今後のバージョンで予定されていますが、現在作業中のバージョンでは予定されていないので、心配しないでください。
経営陣はテスト駆動開発の大ファンなので、開発チームはすでに不幸なキーボードモンキーにプログラムの一部のテストを作成してもらいました:(読みやすくするために改行を追加し、スペースとして扱います)
入力:
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
これはコードゴルフです。最低スコアが勝ちます。1つの文字列引数の関数、またはSTDINから読み取りSTDOUTに書き込むプログラムを作成できます。
prompt()か?