Decision tables: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) (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}}== |