あなたはに技術サポートを提供している彼はブルー・オイスター・カルトの記録セッションを生成してブルースディッキンソン。彼がより多くのカウベルを要求するとき、あなたは彼にそれを与えることができます。
あなたのタスク
入力として文字列(または言語で同等のもの)を受け取り、もう1つのカウベルを含む関連文字列を出力するプログラムまたは関数を作成します。
文字列には何個のカウベルが含まれていますか?
文字列に含まれるカウベルの数は、文字列の文字を並べ替えることによって取得できる「カウベル」の個別のコピーの最大数に等しくなります。たとえば、"bbbccceeellllllooowwwwwwwww"
3つのカウベルが含まれ"bbccceeellllllooowwwwwwwww"
、"bbbccceeelllllooowwwwwwwww"
それぞれに2つのカウベル"cowbel"
が含まれ、0のカウベルが含まれます。
出力は入力とどのように関連する必要がありますか?
出力は、入力文字列とカウベルの数を増やすために必要な入力文字列の最短プレフィックスのこの順序での連結で構成する必要があります。
たとえば、2つではなく3つのカウベルを含める"bbbccceeelllllooowwwwwwwww"
ために1つ追加"l"
するだけで十分です。それを含む最短のプレフィックス"l"
は"bbbccceeel"
です。したがって、入力がの場合、出力は"bbbccceeelllllooowwwwwwwww"
である必要があります"bbbccceeelllllooowwwwwwwwwbbbccceeel"
。
技術
- 入力には印刷可能なASCII文字のみが含まれていると想定できます。言語の文字列処理に迷惑な文字(改行やなど
\
)が1つまたは2つある場合、入力にそれらが含まれていないと想定できます。この制限に言及してください。 - さらに、入力のアルファベット文字がすべて小文字またはすべて大文字であると想定することもできます。これらのいずれかを想定しない場合は、大文字と小文字を区別せずにカウベルを数えてください。
- あなたはさらに、入力文字のそれぞれの少なくとも一つのコピーが含まれていると仮定して
b
、c
、e
、l
、o
、とw
。これは、文字列のプレフィックスを連結して、より多くのカウベルを含む文字列を生成できると仮定するのと同じです。(入力文字列自体にカウベルを含める必要はありません。) - もしあなたの言語がこの問題を解決するビルトインを持っているなら...そしてそれを真剣に使いましょう。
金メッキおむつ
スタジオでの録音時間は高価なので、コードはできるだけ短くする必要があります。最少バイトのエントリが勝者です!
テストケース
(コピー/貼り付けを簡単にするペーストビンリンク)
テスト入力#1: "christopher walken begs for more cowbell!"
テスト出力#1: "christopher walken begs for more cowbell!christopher wal"
テスト入力#2: "the quick brown fox jumps over the lazy dog"
テスト出力#2: "the quick brown fox jumps over the lazy dogthe quick brown fox jumps over the l"
テスト入力#3: "cowbell"
テスト出力#3: "cowbellcowbell"
テスト入力#4: "cowbell cowbell cowbell"
テスト出力#4: "cowbell cowbell cowbellcowbell"
テスト入力#5: "cowbell cowbell cowbel"
テスト出力#5: "cowbell cowbell cowbelcowbel"
テスト入力#6: "bcelow"
テスト出力#6: "bcelowbcel"
テスト入力#7: "abcdefghijklmnopqrstuvwxyz"
テスト出力#7: "abcdefghijklmnopqrstuvwxyzabcdefghijkl"
テスト入力#8: "cccowwwwbbeeeeelllll"
テスト出力#8: "cccowwwwbbeeeeelllllccco"
テスト入力#9: "be well, programming puzzles & code golf"
テスト出力#9: "be well, programming puzzles & code golfbe well, programming puzzles & c"
テスト入力#10: "lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. wow!"
テスト出力#10: "lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. wow!lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lab"
テスト入力#11:
"c-c-b-c
i have a cow, i have a bell.
uh! bell-cow!
i have a cow, i have a cowbell.
uh! cowbell-cow!
bell-cow, cowbell-cow.
uh! cow-cowbell-bell-cow.
cow-cowbell-bell-cow!
"
テスト出力#11:
"c-c-b-c
i have a cow, i have a bell.
uh! bell-cow!
i have a cow, i have a cowbell.
uh! cowbell-cow!
bell-cow, cowbell-cow.
uh! cow-cowbell-bell-cow.
cow-cowbell-bell-cow!
c-c-b-c
i have a cow, i have a bell"
test case -> result
は1つの大きなフォーマット済みのコードブロックで使用します。審美的にはるかに優れており、貼り付けが簡単です。
L
単語に2つのsがあるという事実は別として、これは挑戦が求めるものではありません。