St音は、私たちの多くが経験したか、少なくとも見たことがある問題です。有名な音声認識ソフトウェアのほとんどは、speaking音の話に関して深刻な問題を抱えていますが、st音は理解できますが、修正することはできず、そのまま書くだけのソフトウェアを想像してみましょう。
そのようなソフトウェアによって書かれたテキストの例は、次のようになります:「注意してください」。この例では、「注意」が元の単語であり、「ca ca」がthe音の単語です。
チャレンジ
元の単語を保持したまま、入力から単語を削除することにより、st音の単語を修正するプログラムまたは関数を作成します。たとえば、「注意してください」の修正バージョンは「注意してください」となります。
これはcode-golfであり、すべての言語で最短の答えが得られます!
どもり言葉とは何ですか?
St音にはさまざまなバリエーションがあります。ただし、この課題を簡単にするために、次のルールに制限します。
- St音の単語は、元の単語の未完成の部分または全体である場合があります。「未完成の部分」とは、元の単語がst音の単語から正確に始まることを意味します。たとえば、「OPE」と「オープン」の両方がどもっための単語ことができ、「オープン」が、「ペン」以来の1にすることはできません「オープン」で始まらない「ペン」。
- St音の単語には、少なくとも1つの「あいうえお」母音が含まれている必要があります。たとえば、「star」は「a」を含むため「start 」のst音の単語になりますが、「st」は上記の母音が含まれないためst音の単語にはなりません。
- St音の単語は元の単語の前にのみ表示され、有効になるには少なくとも2回繰り返される必要があります(元の単語は繰り返しにはカウントされません)。たとえば、「oo open」は単語が途切れますが、「o open o」はそうではありません。元の単語の後の「o」はカウントされず、元の単語の前の「o」は少なくとも2回繰り返されないためです。「ゴーゴーゴーゴーゴーゴー」は、元の単語の前にst音の単語が5回繰り返されており、有効です。
- 繰り返しst音の単語の単一のセットに混合形式を含めることはできず、単語は互いに正確に一致する必要があります。たとえば、「op o op open」は、単語がcount音としてカウントされません。一方、「o op op open」は、最初の「o」がここではまったく異なる単語と見なされ、2つの「op」が「open」の st音単語としてカウントされるため、単語をst音にしています。
- 複数の有効な繰り返し単語が連続して繰り返される場合、最後の元の単語のみが残ります。たとえば、「ooo op op op open」では、「oo o」の部分が最初の「op」の st音の単語と見なされるため、削除してから「op op op」を「open」のopen音の単語と見なします「彼らは、あまりにも除去しなければならないので、唯一の『オープン』どもっ言葉を除去した後に残されます。繰り返しst音単語の複数の有効なセットが左から右にのみ発生すると想定できるため、「op op ooo open」を修正すると「op op open」(別名
入力
- 入力は、ASCII英語文字(az)、数字(0-9)、およびスペース文字のみを含む1行の文字列です。文字の大文字小文字は重要ではなく、小文字、大文字、またはその両方を受け入れることができますが、大文字小文字は同じままにして、出力で変更することはできません。
["l","i","s","t"," ","o","f"," ","l","e","t","t","e","r","s"]
文字列の代わりに文字のリスト(など)を使用できますが、単語のリストは使用できません。言語の入力構造が異なる場合は、それを使用します。重要なのは、入力を単語で区切るべきではないため、一部の言語で単語を区切るコストが実際に他の創造的なソリューションを引き起こす可能性があるということです。- 入力には、何も含まれないか、1つまたは複数のst音が含まれる場合があります。
- 単語や数字は単一のスペースで区切られ、入力には隣同士に二重のスペースは含まれません。
出力
- 文字列、文字のリスト、または言語内の適切な構造で、st音の単語はすべて入力から削除されます。
- 出力ワードは、正確に1つのスペースで区切る必要があります(入力と同じ)。
- 単一の先頭と末尾の改行またはスペースが許可されます。
標準的な抜け穴は禁止されています。
テストケース
st音のない言葉:
"hello world" => "hello world"
繰り返されるutter音単語の単一インスタンス:
"ope ope ope ope open the window" => "open the window"
繰り返し途切れた単語の複数のインスタンス:
"there is is is is something un un under the the the table" => "there is something under the table"
途切れた言葉はなく、十分に繰り返されていません:
"give me the the book" => "give me the the book"
st音の言葉はありません。言及された母音はありません。
"h h help m m m me" => "h h help m m m me"
数字は途切れない言葉ではありません。言及された母音はありません。
"my nu nu number is 9 9 9 9876" => "my number is 9 9 9 9876"
しかし、母音と数字の両方を含む単語には、単語が途切れることがあります。
"my wi wi windows10 is slow" => "my windows10 is slow"
同じリピートグループ内の異なる形式のst音単語はカウントされません。
"this is an ant antarctica does not have" => "this is an ant antarctica does not have"
途切れた単語が連続して複数連続する場合、最後の元の単語のみを保持します。
"what a be be be beauti beauti beautiful flower" => "what a beautiful flower"
これは、次々と途切れた単語の連続セットの場合ではありません。
"drink wat wat wa wa water" => "drink wat wat water"
空の入力:
"" => ""
コメントからのより多くのケース:
"a ab abc" => "a ab abc"
"a ab ab abc" => "a abc"
"ab ab abc abcd" => "abc abcd"
"a a ab a able" => "ab a able"
"i have ave ave average" => "i have average"
"my wi wi windows 10 is cra cra crap" => "my windows 10 is crap"
上記のテストケースのコピーしやすいリスト:
"hello world",
"ope ope ope ope open the window",
"there is is is is something un un under the the the table",
"give me the the book",
"h h help m m m me",
"my nu nu number is 9 9 9 9876",
"my wi wi windows10 is slow",
"this is an ant antarctica does not have",
"what a be be be beauti beauti beautiful flower",
"drink wat wat wa wa water",
"",
"a ab abc",
"a ab ab abc",
"ab ab abc abcd",
"a a ab a able",
"i have ave ave average",
"my wi wi windows 10 is cra cra crap"
"drink wat wat wa wa water" => "drink wat wat water"
ルールが再帰的に適用され、これが「飲料水」になるように見えるようです