ディクテーション作成アプリのコードを書くために雇われました。このアプリは、音声入力から音声入力を取得し、それを単語として解析し、画面に書き留めます。
経営陣はプロジェクトのパワーを本当に信用していません。残念ながら仕事をするのではなく、一日中じっと座ってゴルフをすることで知られています。適切にフォーマットされた文への句読点が散在した文。「適切にフォーマットされた」は以下で定義されます。
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()
か?