Logo1 Logo2

プログラミングコンテストについて

【開催スケジュール】

  • 解答期間: 11/24 〜 12/14
  • 結果集計: 12/15(木) 合計時間を再測定します
  • 結果発表: 12/17(土) 松江Ruby会議08にて

【表彰】

  • 一般部門 / 学生部門 各上位3名を表彰します
  • (各部門上位3名には当日賞品を差し上げます。)
  • ※結果は松江Ruby会議08当日に会場にて発表します。

【評価方法】

  • 処理速度、ソースコードのバイト数の順で評価します。
    (どちらも同じ場合は解答日時が早い方を上位とします。)

【注意事項】

  • ランキングは目安です。同じ投稿でも開始当初と現在では実行時間が多くかかるとの報告があり、解答期間終了後に合計時間を測定し直します。
  • 松江Ruby会議08当日会場に来られる方が表彰の対象となります。事前にこちらより参加登録をお願い致します。
  • メールアドレスは、参加登録時Doorkeeperに登録したものと同一のものを記入してください。(異なるメールアドレスで応募された場合、入賞の対象外となります。)
  • 解答いただいたコードは結果にかかわらず、後日Matsue.rbのウェブサイトまたはるびまに掲載させていただく場合があります。
  • 応募いただいたコードはシステム上において完全に保存されない場合がありますので、ご自身において必要に応じてバックアップを取るなど、適切なご対応をお願いいたします。
  • いただいたメールアドレスを松江Ruby会議08に関連するご連絡以外には使用いたしません。

問題:Rubyで迷路を解いてみよう!

【課題】

  • 「S」「G」「#」で構成される迷路が与えられます。
  • 「S」「G」間をなるべく最短かつ早くクリアできるプログラムを作成してください。
  • 「S」から「G」までは解答例のように「:」で経路を表示させて下さい。

【テストケースと解答表示例】

  • NxN で構成される以下のようなテストケースが与えられます。
  • 10≦N≦100となる迷路を生成します。

<テストケースサンプル>

Testcase

<解答表示例>

Example

【ローカルでの実行方法】

1. ローカル環境用のファイルをダウンロード

以下のURLからファイルをダウンロードし、解凍してください。

http://procon.eastback.jp/local_sample.zip

展開すると以下のようなファイル構成になります。

          local_sample
            ├─ run.rb
            └─ solve.rb
            
2. 動作確認

コンソールを起動して、展開したディレクトリーへ移動後、以下のコマンドを実行してみてください。

          $ ruby run.rb
            

以下のような出力結果になると思います。

          ## input

            ###########
            S #     # #
            # # ### # #
            #   #   # #
            ##### ### #
            #     #   #
            # ### # ###
            #   # # # #
            ### ### # #
            #         G
            ###########


            ## output

            ###########
            S #     # #
            # # ### # #
            #   #   # #
            ##### ### #
            #     #   #
            # ### # ###
            #   # # # #
            ### ### # #
            #         G
            ###########


            ## result

            false
            
3. 処理を書く

solve.rbに迷路を解くRubyのコードを記述してください。
(solve.rbの中身は下記のようになります。)

            maze_ary = STDIN.each_line.map(&:chomp)

              # ここに処理を書いてください。

              puts(maze_ary)
            

記述が終わりましたらrun.rbを実行して動作確認を行ってください。

正解になると以下のような表示になります。

          ## input

            ###########
            S #     # #
            # # ### # #
            #   #   # #
            ##### ### #
            #     #   #
            # ### # ###
            #   # # # #
            ### ### # #
            #         G
            ###########


            ## output

            ###########
            S:#:::::# #
            #:#:###:# #
            #:::#:::# #
            #####:### #
            #:::::#   #
            #:### # ###
            #:::# # # #
            ###:### # #
            #  :::::::G
            ###########


            ## result

            true
            
4.応用編

慣れてきたら、run.rbの以下の部分を変更してマップを変更して実行しても正解になるかどうか確認してみてください。(左の数字は行数です。)

            5 ###########
            6 S:#:::::# #
            7 #:#:###:# #
            8 #:::#:::# #
            9 #####:### #
            10 #:::::#   #
            11 #:### # ###
            12 #:::# # # #
            13 ###:### # #
            14 #  :::::::G
            15 ###########

            
5.応募方法

ローカル環境で正解することができたら、いよいよ応募してみましょう。

以下の入力フォームにニックネームメールアドレスsolve.rbに記述したコードを入力して応募ボタンをクリックしてください。