f={ '_digi'=>lambda{|s|s=~/nyo\W{0,3}$/}, '_petit'=>lambda{|s|s=~/nyu\W{0,3}$/}, '_rabi'=>lambda{|s|s=~/\w/}, '_gema'=>lambda{|s|s=~/gema\W{0,3}$/}, '_piyo'=>lambda{|s|s=~/pyo\W{0,3}$/}, } f.default=lambda{|s|nil} $<.each{|e| a=('_'+e.chomp.tr('_','#')).split(' ',2) puts f[a[0]][(a[1]||'').downcase] ? 'CORRECT (maybe)' : 'WRONG!' }