9
ひもを折りたたむ
このチャレンジでは、入力としてアルファベット文字列が与えられます。与えられた入力の「アンチストリング」を、すべての文字の大文字と小文字を逆にしたストリングとして定義します。例えば AaBbbUy -> aAbBBuY 入力として文字列を受け取り、アンチストリングも連続したサブストリングである最長の連続したサブストリングを検索するプログラムを作成する必要があります。2つの部分文字列は重複しないでください。 例として、文字列が与えられた場合 fAbbAcGfaBBagF 太字の部分は、最長のストリングアンチストリングペアです。 プログラムは、ペアを見つけたら、それぞれを1つの文字に折りたたむ必要があります。これは、各部分文字列の最初の文字を除くすべてを削除することでこれを行う必要があります。たとえば、上の文字列 fAbbAcGfaBBagF になるだろう fAcGfagF その後、プログラムは、最長文字列のアンチストリングペアが1文字以下になるまでプロセスを繰り返す必要があります。 たとえば、同じ文字列を使用すると、崩壊後の新しい最長のペアは fAcGfagF もう一度文字列を折り畳みます fAcGag これで、文字列をさらに折りたたむことができないため、出力する必要があります。 候補のペアが同点の場合(例AvaVA)、どちらかを削減することができます(AaAまたはAvV、ではなく、Aa)。 これはコードゴルフであるため、回答はバイト単位で記録され、バイト数は少ない方が良いでしょう。 テストケース fAbbAcGfaBBagF -> fAcGag AvaVA -> AaA / AvV QQQQQQQ -> QQQQQQQ fAbbAcQQQQaBBacqqqqA -> fAbcQBcq gaq -> gaq fAbbAcGfaBBagFaBBa -> fcGaBBag 動機 この問題はarbitrary意的に思えるかもしれませんが、基本的なポリゴンを処理するコードを作成しているときに実際に遭遇した問題です。このプロセスを使用して、基本ポリゴンをより小さなnポリゴンに減らすことができます。それを試した後、私はそれが素敵な小さなゴルフをするだろうと思った。