CodeIQ:母は大きく子は小さく

私自身が表題の問題を解いた時のプログラムについて解説します。
問題の詳細は「母は大きく子は小さく」(CodeIQ)を参照してください。

問題の概要

問題を引用します。
問題
仕様
標準入力
・標準入力には [A-Z]もしくは[a-z] の組み合わせからなる5文字の文字列が5行入力されます

【例】
YZjBo
tGlFy
ugtuI
NmhMY
dAIaN

標準出力
・各行の入力に母音 [aiueoAIUEO] が含まれていれば行の文字列をすべて大文字にして出力してください
・各行の入力が母音以外の文字列のみで構成されていれば行の文字列をすべて小文字にして出力してください

例(標準入力のケースに対応する出力)
YZJBO
tglfy
UGTUI
nmhmy
DAIAN

その他の仕様
・標準入力の末尾には改行があります
・標準出力の末尾に改行をつけてください
・標準入力の仕様で説明した内容以外の入力は行われません

Samples
Sample1
Input
cizzB
sHUIi
xtvEa
IAWEX
JiqHp

Output
CIZZB
SHUII
XTVEA
IAWEX
JIQHP

Sample2
Input
kzHjl
LyTMX
uiFJK
FNzpA
utZsj

Output
kzhjl
lytmx
UIFJK
FNZPA
UTZSJ

Sample3
Input
EmBGp
Xndzi
hYdWQ
NfiEJ
AyRrh

Output
EMBGP
XNDZI
hydwq
NFIEJ
AYRRH

私のプログラム

Rubyで解答しています。

#!/usr/bin/ruby

# main
while line = gets
	line.strip!
	if line.empty? then next end

	uc = line.upcase
	dc = line.downcase

	if dc =~ /(a|i|u|e|o)/ then puts uc
	else puts dc
	end
end

解説

非常に簡単な問題です。

main()

要するに入力値に母音が含まれているかどうかを判断すれば良い分けです。
ucは全部大文字に直した文字列、dcは全部小文字に直した文字列です。
全部小文字に直した文字列を正規表現でチェックしてa,i,u,e,oのどれかが含まれていたらucを、そうでなければdcを表示します。

雑感

C言語でやるとちょっと面倒です(簡単なのには変わりありませんが)。