この質問はKevin Cruijssenの質問に触発されました。
カーペットがレイアウトされたので、私たちはそれを転がしたいと思います。あなたの仕事は、文字列を受け取り、この文字列から作られたらせんを返すプログラムを書くことです(横から見たロールされたカーペットを表します)。
カーペットを丸める1ステップの手順は次のとおりです。私の言いたいことを説明する例があります。理解を深めるために、例は部分的に丸められたカーペットで始まっていることに注意してください。
ac
rpet
- カーペットの「頭」と「尾」を分離します。頭はこれまでに巻かれたものであり、尾は巻かれたままのものです。
Head: ac Tail:
rp et
- ヘッドを時計回りに90°回転させます。
Rotated head: ra Tail (unchanged):
pc et
- 新しいヘッド(ここでの幅があれば
2
)(ここでは以下の尾の長さよりも2
)- 次に、尾の上に置きます
- それ以外の場合、カーペットは(ステップの開始時と同じように)ロールされました
New carpet: ra
pc
et
必要な回数だけ手順を繰り返します。
カーペットのローリングのすべてのステップを示す2つの例:
carpet
c
arpet
ac
rpet
ra
pc
et
0123456789
0
123456789
10
23456789
21
30
456789
432
501
6789
いくつかの精度:
- すべての中間ステップを表示する必要はなく、ロールされたカーペットのみを表示する必要があります(たとえば、結果を計算する非反復的な方法を見つけた場合、それは完璧です)。また、先頭の空白を印刷する必要はありません。上記の例では、それらを整列するためだけに示しています。
- 入力は文字列、charのリスト/配列です
- 出力は標準出力またはファイルに出力されます。
- 入力は便利です。長さは少なくとも1文字であり、問題を引き起こさないように最大でも十分に小さい定数ですが、プログラムでその定数を使用することはできません。文字列の内容はナイスキャラクタ([a-zA-Z0-9])のみで、好みに応じてエンコードされます。
- これはcode-golfであるため、バイト単位の最短回答が優先されます。コードゴルフ言語では、非コードゴルフ言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンクを追加してください。
- また、必要と思われる場合は、回答の説明を追加してください。
ProgrammingPuzzlesAndCodeGolf
-1を超える最終テールの長さが、私をつまずかせました。
print
たlambda
。