Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
21
Task/Truth-table/Perl/truth-table.pl
Normal file
21
Task/Truth-table/Perl/truth-table.pl
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
sub truth_table {
|
||||
my $s = shift;
|
||||
my (%seen, @vars);
|
||||
for ($s =~ /([a-zA-Z_]\w*)/g) {
|
||||
$seen{$_} //= do { push @vars, $_; 1 };
|
||||
}
|
||||
|
||||
print "\n", join("\t", @vars, $s), "\n", '-' x 40, "\n";
|
||||
@vars = map("\$$_", @vars);
|
||||
|
||||
$s =~ s/([a-zA-Z_]\w*)/\$$1/g;
|
||||
$s = "print(".join(',"\t", ', map("($_?'T':'F')", @vars, $s)).",\"\\n\")";
|
||||
$s = "for my $_ (0, 1) { $s }" for (reverse @vars);
|
||||
eval $s;
|
||||
}
|
||||
|
||||
truth_table 'A ^ A_1';
|
||||
truth_table 'foo & bar | baz';
|
||||
truth_table 'Jim & (Spock ^ Bones) | Scotty';
|
||||
Loading…
Add table
Add a link
Reference in a new issue