非空白文字の文字列を通過するプログラムを書く(あなたは彼らが数字であることを仮定してもよい0
のは9
、彼らが処理される方法で、何もこれに依存しない)と、以下の規則に従ってスペースを追加します。
- 現在のトークンを空の文字列とし、以前に発行されたトークンを空のセットにします。
- 文字列の文字を反復処理します。各文字について、最初に文字を現在のトークンに追加します。次に、現在のトークンが以前に発行されたトークンのセットにまだない場合、現在のトークンをそのセットに追加し、新しい現在のトークンを空の文字列にします。
- 文字列の最後に達したときに現在のトークンが空の場合、スペース文字で区切られた、以前に発行されたトークンを発行順に出力します。それ以外の場合は、元の文字列をそのまま出力します。
入力
STDINへの入力は、数字のシーケンスである必要があります。
出力
プログラムは、手順3で指定された結果を印刷する必要があります。
サンプル
サンプル入力
2015
10101010
4815162342
101010101010
3455121372425
123456789101112131415
314159265358979323846264338327950288419716939937
サンプル出力
2 0 1 5
10101010
4 8 1 5 16 2 3 42
1 0 10 101 01 010
3 4 5 51 2 1 37 24 25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 95 0 28 841 971 69 39 937
これはコードゴルフであるため、標準のCGルールが適用されます。バイト単位の最短プログラムが優先されます。
(コメントの説明を要求してください。私はまだこれに新しいです。ありがとう!)
1 0 10
と、次の反復で1
(既に使用されている)が検出され(検索済み)、1つ進んで10
(既に使用されている)検索101
が行われます。その後、スペースが追加され、新しい0
が表示されます。これは既に使用されていますが、文字列の最後にあります。したがって、出力はになりますが1 0 10 101 0
、これは無効(0
繰り返される)であり、スクリプトは単に入力文字列を出力する必要があります。すでに使用されていた1010
場合にのみ作成できました101
。
If a unique number cannot be formed at the end of the string, then the input should be printed verbatim
10101010は分割できないため、そのまま印刷されます。
1
なり、繰り返しになります。そのため、代わりにスペース5で右に移動し、ステップ4で再び右に移動し、ステップ5に再び入り、を作成します101
。
4815162342
ブラザ、あなたがそこで何をしたかわかります。