周期表
締め切りが 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)
※コメント投稿者のブログIDはブログ作成者のみに通知されます