#!/usr/local/bin/perl my %tree = ( 'larger than a breadbox' => [ 'cat', 'giraffe', ], ); sub a { print 'Is your animal ', shift, "?\n"; 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 = ; chomp $answer; $answer =~ s/Is your animal //; return $answer; } sub w { print "Do you want to continue?\n"; my $answer = ; chomp $answer; return 1 if $answer =~ /y/i; return 0; } #234567890#234567890#234567890#234567890#234567890#234567890#234567890#234567890 sub f { ($s,%t)=@_;$q=$s;do{{$v=a($q);$a=$t{$q}[$v];$q=$a,redo if$t{$a};$q=$s,next if a( $a);$n=&t;$o=i($a,$n);$t{$o}=[$t{$q}[$v],$n];$t{$q}[$v]=$o;$q=$s}}while&w } f( 'larger than a breadbox',%tree); __END__