Decision tables: Difference between revisions

Content added Content deleted
(Added Perl example)
Line 1,087: Line 1,087:
Ensure printer software is installed
Ensure printer software is installed
</pre>
</pre>

=={{header|Perl}}==
<lang perl>use strict;
use warnings;

sub decide {
our(@q,%a);
local *q = shift;
local *a = shift;
my $bit;
my $cnt = 1;
for my $prompt (@q) {
print "$prompt: ";
$bit += $cnt if <> =~ /y/i;
$cnt *= 2;
}
$bit = 2**$bit;

while (my ($bitpat,$diagnosis) = each %a) {
print "$diagnosis\n" if $bit & $bitpat;
}
}

my @queries = (
'Printer is unrecognised',
'A red light is flashing',
'Printer does not print',
);
my %answers = (
0b00100000 => 'Check the power cable',
0b10100000 => 'Check the printer-computer cable',
0b10101010 => 'Ensure printer software is installed',
0b11001100 => 'Check/replace ink',
0b01010000 => 'Check for paper jam',
);

decide(\@queries,\%answers);</lang>
{{out}}
<pre>Printer is unrecognised: n
A red light is flashing: n
Printer does not print: y
Check for paper jam</pre>


=={{header|Perl 6}}==
=={{header|Perl 6}}==