sub a { print shift; my \$answer = ; chomp \$answer; return 1 if \$answer =~ /y/i; return 0; } sub t { print "What is your animal?\n"; my \$answer = ; chomp \$answer; return \$answer; } sub i { my (\$g, \$u) = @_; print "What is a question that is true for \$u, but false for \$g?\n"; my \$answer = ; return \$answer; } sub w { print "Do you want to continue?\n"; my \$answer = ; chomp \$answer; return 1 if \$answer =~ /y/i; return 0; } sub g { my \$animal = shift; print "Is your animal a"; print "n" if \$animal =~ /^[aeiou]/; print " \$animal?\n"; my \$answer = ; chomp \$answer; return 1 if \$answer =~ /y/i; return 0; } ##```## my @t = ( [ undef,undef, ['cat','giraffe',"Is your animal larger than a breadbox?\n"] ] ); ##``````## sub r{my\$t=shift;my\$x=a(\$t->[2][2]);\$t->[\$x]?r(\$t->[\$x]):return \$t->[2][\$x]}sub n{my\$t=shift;for(0,1){if(\$t->[2][\$_]eq\$b&&!\$t->[\$_]){\$t->[\$_]=[undef,undef,[\$b,\$ a,\$q]];return 1}last if\$t->[\$_]&&n(\$t->[\$_])}}while(1){\$b=r(\$t[0]);if(!g(\$b)){\$a =t();\$q=i(\$b,\$a);n(\$t[0])}last if!w()} ```