Help language development. Donate to The Perl Foundation

QM cpan:UZLUISF last updated on 2019-06-13

QM-0.0.2/

NAME

QM - A Raku module that implements the Quine–McCluskey (QM) algorithm for simplifying Boolean functions

DESCRIPTION

The Quine-McCluskey algorithm is a simplification technique to systematically reach a minimal solution using a system of any n variables.

See the tutorial for more information about the algorithm which also has an example that walks through the algorithm. The same example can be found in examples/ex01.p6 as a Raku file.

The Quine–McCluskey algorithm on Wikipedia.

INSTALLATION

Using zef:

zef update && zef install QM

From source:

git clone git@gitlab.com:uzluisf/quine-mccluskey.git
cd quine-mccluskey && zef install .

SYNOPSIS

The module is implemented in a OO-style. To apply the algorithm, an object of the QM must be instantiated through the minterms. The following code snippet showcases all the methods made available by QM using the example from the tutorial:

use QM;

my @regular-minterms = 0, 1, 2, 5, 6, 7, 8, 9, 10, 14;
my @dont-care = []; 

# the don't care conditions array is optional.
my $qm = QM.minterms(@regular-minterms, @dont-care);

put $qm.all-minterms.join(', ');      #=> 0, 1, 2, 5, 6, 7, 8, 9, 10, 14

put $qm.prime-implicants<all>;        #=> 011- 0-01 01-1 --10 -00- -0-0

put $qm.essential-prime-implicants;   #=> --10 -00-

put $qm.prime-implicants-chart.perl;
#=>
#`{
"0" => $["-00-", "-0-0"],
"1" => $["-00-", "0-01"],
"10" => $["--10", "-0-0"],
"14" => $["--10"],
"2" => $["--10", "-0-0"],
"5" => $["01-1", "0-01"],
"6" => $["--10", "011-"],
"7" => $["011-", "01-1"],
"8" => $["-00-", "-0-0"],
"9" => $["-00-"]
}

put $qm.prime-implicants-chart(:dec).perl;
#=> 
# ([2, 6, 10, 14], [0, 2, 8, 10], [0, 1, 8, 9], [1, 5], [5, 7], [6, 7]).Seq

put $qm.reduced-boolean-expression;  #=> A'BD + CD' + B'C'

METHODS

Materials

This modules was inspired by int-main's Python script implementing the algorithm and the paper Programing implementation of the Quine-McCluskey method for minimization of Boolean expression.

AUTHOR

Luis F. Uceta

LICENSE

Artistic License 2.0