文字列が与えられたら、あなたの仕事は、以下で説明するようにジグザグのような構造に折りたたむことです。
ジグザグに折る
"Mississippi"
例として文字列を使用します。
まず、一意の文字のみで構成される最長のプレフィックスを出力します。
Mis
最初の重複文字Cに到達すると、それを無視し、残りの文字列(
issippi
)の一意の文字で構成される最長のプレフィックスを、最初に出現するCの下に垂直に出力します。Mis i s
水平方向と垂直方向の連続を交互に繰り返します。ただし、この場合のように、最後の複製文字とは限りませんが、複製文字の最後の出現から水平方向に出力を続けるように注意してください(ステップ1)。
Mis i sip ----- Mis i sip i
ルール
- 文字列には印刷可能なASCII文字のみが含まれますが、空白は含まれません。
- デフォルトではこれらの抜け穴は禁止されていることに注意しながら、任意のプログラミング言語で競争し、標準的な方法および合理的な形式で入力および出力を行うことができます1。これはcode-golfであるため、すべての言語の最短の送信(バイト単位)が優先されます。
- 1入力:文字列/文字のリスト/あなたの言語が文字列を表現するために使用するその他のもの。出力:複数行の文字列、行を表す文字列のリスト、または文字/長さ1の文字列のリストのリスト。ただし、可能であれば、コードのきれいなバージョンを回答に含めてください。
- 追加のスペースに関して、出力には以下が含まれます。
- 先頭/末尾の改行
- 各行の末尾/末尾のスペース
- 一貫性のある各行の先頭のスペースの数
- 水平方向に出力を開始する必要がありますが、垂直方向に開始することはできません。
テストケース
入力:
「完璧」 「ミシシッピ」 「奇妙な」 「些細なこと」 「クトゥルフ」 「PPCG」 「pOpOpOpOpOpOp」 「ABCCCE」 「ABCCCECCEEEEC」 「abcdcebffg」 「abca」 「AAAAAAAA」
対応する出力:
性能 c t
ミス 私 一口 私
Od ies t
トリヴ a l ies t
クトゥル あなたは
P C G
PO OpO ポップ p
ABC C E
ABC CCE E EC
あいうえお e b fg
abc
A AA A
小文字/大文字をどのように処理する必要がありますか?例えば
—
ロッド
ABCcde
それらを異なる文字として扱う必要があります。例
—
氏Xcoder
"A" ≠ "a"
。以下のための出力ABCcde
だけだろうABCcde
テストケースの提案:
—
ジョンファンミン
AAAAAAAA
@JungHwanMin AAAAAAAもそれを追加しました。
—
Mr. Xcoder
b
に戻るべきではないのは、残りの文字列、つまり「分岐」の後の重複のみを考慮する必要があるためです。あなたは、第二に到達するとc
、あなたの出力のユニークな文字の最長プレフィックス残りの文字列である、ebffg
(したがって出力ebf
は、文字列その一部から文字を心配する必要はありませんので、垂直その後水平継続)向きを切り替える前に既に出力されていました。それでも不明な場合は、このテストケースでステップバイステップの例をもう1つ作成します。