sub f{for(($s,$t)=@_;$_=$$t{(0,l,r)[$$t{d}cmp$s]};$t=$_){}$t} #### sub f{for(($s,$t)=@_;$_=$t&&(0,l,r)[$$t{d}cmp$s];){$t=$$t{$_}||0}$t} #### sub f{for(($s,$t)=@_;$_=$t&&(0,l,r)[$$t{d}cmp$s];){$t=$$t{$_}}$t} #### $|++; $table = { d => 'h', l => { d => 'd', l => { d => 'b', l => { d => 'a' }, r => { d => 'c' } }, r => { d => 'f', l => { d => 'e' }, r => { d => 'g' } }, }, r => { d => 'l', l => { d => 'j', l => { d => 'i' }, r => { d => 'k' } }, r => { d => 'm', l => { d => 'l' }, r => { d => 'n' } }, } }; foreach $y (qw[ a b c d e f g h i j k l m n o p q ]) { $x = f($y,$table); print "Answer for $y = "; print $x," ", $$x{d},"\n"; }