裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

あしあと問題

2017年03月09日 | ブログラミング

あしあと問題

締め切りが 2017/03/09 10:00 AM なので,その 1 分後に投稿されるように予約が

仕様

9x9のマップの中を標準入力の内容に応じて移動します。
移動するとあしあとが残ります。
どのようなあしあとが残ったか標準出力してください。

標準入力

・「^v<>」のどれかの文字を組み合わせた文字列が入力されます
・ ^ は上に移動です
・ v は下に移動です
・ < は左に移動です
・ > は右に移動です



>>>>>>>>vvvvvvvv<<<<<<<<^^^^^^^^

標準出力

・9文字x9行の文字列を出力してください
・1行目1文字目の位置をスタート地点とします
・スタート地点は必ず「あしあと」が残ります
・同じ場所を2回通った場合は「あしあと」が残ります
・移動した場所は「Y」(半角大文字のワイ)を出力してください。鳥の足跡をイメージしています。
・移動しなかった場所は「x」(半角小文字のエックス)を出力してください

例(標準入力の説明の入力が行われた場合の出力結果)

YYYYYYYYY
YxxxxxxxY
YxxxxxxxY
YxxxxxxxY
YxxxxxxxY
YxxxxxxxY
YxxxxxxxY
YxxxxxxxY
YYYYYYYYY

その他の仕様

・標準入力の末尾には改行があります
・標準出力の末尾に改行をつけてください
・移動回数は最大で48回です
・標準入力の仕様で説明した内容以外の入力は行われません(不正入力に対するチェックは不要)
・9x9からはみ出す位置への移動をするような入力は行われません(不正入力に対するチェックは不要)

=============

f = function(S) {
    x = y = 1
    m = matrix("x", 9, 9)
    m[x, y] = "Y"
    S = unlist(strsplit(S, ""))    
    for (s in S) {
        if (s == ">") {
            x = x+1
        } else if (s == "<") # < は半角で
            x = x-1
        } else if (s == "v") {
            y = y+1
        } else if (s == "^") {
            y = y-1
        }
        m[x, y] = "Y"
    }
    for (i in 1:9) {
        cat(sprintf("%s\n", paste(m[,i], collapse="")))
    }
}
# f(readLines(file("stdin", "r")))

f(">>>>>>>>vvvvvvvv<<<<<<<<^^^^^^^^")
f(">>vv>>vv>>vv>>vv")
f(">>>><vvv")

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« グループで乗るリフト | トップ | ホワイトデーのお返しの個数 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事