裏 RjpWiki

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

周期表

2017年04月26日 | ブログラミング

周期表

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

下図のような表があります。

Y座標(1〜8, L, A)とX座標(1〜18)を与えるので、対応するマスに入る文字列を返すプログラムを書いてください。

【入出力】
入力は
5,6
のように、Y座標とX座標がコンマ区切りで来ます。

出力は、
42
のような感じです。

ただし,
6,3あるいは7,3が入力の場合、表にある通り、LあるいはAを出力してください。
1,8のように、表に文字が書かれていない領域が指定された場合、-を出力してください。

【例】
入力     出力
5,6     42
1,8     -
L,1     57

【補足】
不正な入力に対処する必要はありません。
X座標は 1〜18、Y座標は1〜8, L, A のいずれかです。

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

周期表を作るだけなので,以下のようにする。

f = function(s) {
    a = matrix("-", 18, 10)
    a[c(1, 18), 1] = 1:2
    a[c(1:2, 13:18), 2] = c(3:4, 5:10)
    a[c(1:2, 13:18), 3] = c(3:4, 5:10) + 8
    a[1:18, 4:5] = 19:54
    a[1:18, 6:7] = c(55:56, "L", 72:88, "A", 104:118)
    a[1:2, 8] = 119:120
    a[1:15, 9:10] = c(57:71, 89:103)
    s = sub("A", 10, sub("L", 9, s))
    yx = as.integer(unlist(strsplit(s, ",")))
    cat(a[yx[2], yx[1]])
}
f(readLines(file("stdin", "r")))

一行で書くこともできる

a = matrix("-", 18, 10)
a[c(1, 18:20, 31:38, 49:128, 145:159, 163:177)] = c(1:56, "L", 72:88, "A", 104:120, 57:71, 89:103)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村