締め切りが 2016/12/31 10:00 AM なので,その 1 分後に投稿されるように予約
【問題】
htmlが標準入力から与えられるので、htmlタグの入れ子が間違っている、閉じタグが現れる最初の行番号を、標準出力に出力するプログラムを作ってください。
htmlは最大20行、1行あたり最大100文字です。
ただし、liタグに関しては、タグが閉じていても閉じてなくてもよいものとします。
間違いがない場合には0を出力してください。
=====
テストデータが 3 個しかなく,しかも簡便化されているので,一般的な html ファイルを扱うプログラムを書くなどとは馬鹿馬鹿しくまともに取り合う気になれず,テストに合格するプログラムを書いただけ...
f = function(s) {
stack = NULL
s = sub(" .+>", ">", s)
error.lno = 0
for (i in seq_along(s)) {
t = s[i]
if (substr(t, 2, 2) == "/") {
t = sub("/", "", t)
if (length(stack) == 0) {
error.lno = i
break
} else if (stack[1] == t) {
stack = stack[-1]
} else {
error.lno = i
break
} else if (substr(t, 1, 4) != "<li>") {
stack = c(t, stack)
}
}
cat(error.lno)
}
※コメント投稿者のブログIDはブログ作成者のみに通知されます