elsif
Perlで「else if」って書いてるせいで、エラーが起きていることに気づけなかった今日この頃。
正規表現に四苦八苦しながら楽しんでおります。
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
パソコン甲子園2006年本選 問題07 ヘビ
種類A : >'===#===~
種類B : >^Q=Q=Q=~~
-A種のヘビ-
「>」の次に「'」があって、「#」の両隣の「=」の数が左右同じで少なくとも1つ以上あり、最後は「~」
-B種のヘビ-
「>」の次に「^」があって、「Q=」が1つ以上ならび、最後は「~~」
ヘビの形が文字列で与えられるので、A種に属す(A)のかB種に属す(B)のか、それともどちらにも属さない(NA)のかを表示する。
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
注意する必要があるのは、A種については=の数が一緒ってこと、B種については・・・特にないかな。strcmp使うし。
CなりC++なりjavaなりでやれって話ですが、ぶっちゃけ正規表現の課題で出てきそうな内容なので、Perlをつかってみる。
#!/usr/bin/perl while (<>) { chomp; if (/^>'(=+)#\1~$/) { print "A\n"; } elsif (/^>\^(Q=)+(~~)$/) { print "B\n"; } else { print "NA\n"; } }
「Perlを使うと楽チンだね♪」って書きたかったけど、久しぶりに正規表現を使ったので思い出すのに一苦労orz
それ以前にelsifを「else if」と書き間違えるという失態を演じるo........rz
後方参照(だと思う)は遅くなるから使いすぎに注意ってどっかの本に書いてあったな・・・・
Perlの本を手元に置いておきたい。