チャレンジ
1行の入力を受け入れ、その文字に対して非常に具体的で奇妙に馴染みのあるシャッフルを実行し、結果を出力する関数またはプログラムを記述します。
必要なシャッフルは、次のアルゴリズムを使用して説明できます。
- 入力の各文字に1ベースのインデックスでラベルを付けます。
- 文字番号1を出力として書き込みます。
- 文字番号2から始めて、文字2自体を除いて、1文字おきに順番に出力に書き込みます。つまり、4、6、8、10などの文字を出力として書き込みます。
- 、nはまだ出力として書かれていない次の文字番号で始まる出力にすべてのn番目の文字を書き、除く文字nは自分自身を、あなたはすでに出力に書き込まれている可能性(数値ラベルで)他の文字を除きます。
- 出力に新しい文字を追加し続ける限り、手順4を繰り返します。
- 残りの文字を順に出力に書き込みます。
例
- 文字にラベルを付けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 OLDDOCYAK 'SBEAUTYCORNER
2.出力する最初の文字を書き込みます。
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27OLDDOCYAK 'SBEAUTYCORNER O
3. 2を除く、2から始まる1文字おきに文字を書きます。
12 3456789101112131415161718192021222324252627OLDDOCYAK'SBEAUTYCORNER O OA 'EUYCRE
4.まだ書かれていない次の文字は文字番号3です。3から始まる3番目の文字ごとに書き込みますが、文字3自体、および既に書き込まれている文字は除きます。
12 3456789101112131415161718192021222324252627OLDDOCYAK'SBEAUTYCORNEROOA 'EUYCRE YB R
5.次の文字5を使用して、手順4を繰り返します。
4.まだ書かれていない次の文字は文字番号5です。5から始まる5文字ごとに書き込みますが、文字5自体、および既に書き込まれている文字は除きます。(これは25文字に相当します)。
12 3456789101112131415161718192021222324252627OLDDOCYAK'SBEAUTYCORNEROOA 'EUYCREYB R N
5.次の文字は7です。しかし、14、21は既に書き込まれているので、手順4を繰り返しても文字は出力されません。したがって、5で完了です。
6.残りの文字を順番に書きます。
12 3456789101112131415161718192021222324252627OLD DOCYAK'SBEAUTYCORNEROOA 'EUYCREYB RN LDDCKSATO
ルール
入力と出力は、標準入力/標準出力、文字列、または文字の配列を介して行うことができます。
標準入力として読み込む場合は、都合のよいときに末尾に改行があるか、入力全体に行が含まれていると想定します。改行文字はシャッフルに参加しません。
同様に、あなたの都合で、あなたの出力は末尾の改行を持っているか、持っていないかもしれません。
標準の抜け穴は許可されていません。
これはコードゴルフ大会です。バイト単位の最小コードが優先されます。
テストケース
123456789ABCDEF -> 1468ACE9F2357BD
OLD DOC YAK'S BEAUTY CORNER -> O O A' EUYCREYB RNLDDCKSATO
Blue boxes use a 2600hz tone to convince telephone switches that use in-band signalling that the caller is actually a telephone operator.
->
Bebxsuea20h oet ovnetlpoesice htuei-adsgaln httecle satal eehn prtre 0ncce ha nng aiuapootnt ihyon atallu o s 6z oi ehwstsnbilt lr clee.