前書き
Sisyphusは最近仕事でいくつかの問題を抱えていました。彼は何も成し遂げられなかったようで、この問題の解決策を見つけたいと思っています。
彼の現在の雇用には、岩を丘の上に転がすことが必要です。彼は通常、仕事をうまくこなしますが、彼が丘の頂上に近づくたびに、それは再び転がり落ちます。
彼は自分の仕事に本当に不満を感じており、丘を転がる岩をコンピューターにシミュレートさせることにより、科学的に問題を解決したいと考えています。
Sisyphusはプログラミングが特に得意ではないので、手伝ってもらえますか?
チャレンジ
この愚かな紹介の後、ビジネスに取り掛かりましょう。あなたのプログラムは、これに似た丘と岩のイラストを受け取ります:
#o
##
###
######
########
どこ#が丘の一部をo表し、岩を表します。
次に、岩1のレイヤーを下に移動するプログラムを実装する必要があります。たとえば、上記の出力は次のようになります。
#
##o
###
######
########
水平方向に均等なエリアがある場合、丘は水平方向に転がるだけなので、...
o
########
...これにより、石が横に転がります。
o
########
垂直方向の領域がある場合、岩は1ステップ下に落ちるので、...
#o
#
#
#####
...得られます...
#
#o
#
#####
また、画像の幅と高さをそれぞれ画像の上の1行で受け取ります。したがって、サンプル入力は次のようになります。
10 5
#o
##
###
######
#########
(ここでの空白はスペースです。テキストを選択して、意味を確認してください。)
いくつかの詳細
- プログラムの実行時に岩がすでに最後の行にある場合、プログラムを終了するか、変更されていない入力を出力するかを選択できます。
- 丘は下に行くだけです
プログラムは、出力(入力を含む)とまったく同じように出力をフォーマットする必要があるため、プログラムの出力をそれ自体にパイプすると、次のステップが計算されます。
常に最下部への道があると想定できるため、パスが「ブロック」されている入力は未定義の動作を引き起こす場合があります
最後の行に常にスペースがあると仮定できます。岩はそこに「休む」必要があるため、プログラムを数回呼び出して、常に出力をそれ自体にパイプすると、最後の行に岩があり、以前はスペースがあった場所に配置する必要があります。
任意の形式(stdin、file、...)で入力を受け入れることができます。WHOLEプログラムをポストする必要があります(したがって、すべての事前初期化された変数はコードとしてカウントされます)。
行はで終了し
\nます。これはcode-golfなので、バイト数が最小の作業中のサブミッションが勝ちます。
勝者は2014年7月26日に選ばれます。その後、解決策を投稿できますが、勝つことはできません
ご質問がある場合は、コメントでお知らせください。
ハッピーゴルフ!
#秒しかありません。したがって、幅が10であるため、最後に1つのスペースがあります。 -右隅)。
