| Crates.io | quine-mccluskey |
| lib.rs | quine-mccluskey |
| version | 1.0.1 |
| created_at | 2024-03-15 14:06:20.901729+00 |
| updated_at | 2025-03-23 05:52:44.110144+00 |
| description | Boolean function minimizer based on Quine–McCluskey algorithm. |
| homepage | |
| repository | https://github.com/samildeli/quine-mccluskey |
| max_upload_size | |
| id | 1174769 |
| size | 76,682 |
Boolean function minimizer based on Quine-McCluskey algorithm.
Given the boolean function expressed by the following truth table:
| A | B | C | Output |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | X |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | X |
We can minimize it in Sum of Products form using minimize with minterms and maxterms and Form::SOP:
use quine_mccluskey as qmc;
let mut solutions = qmc::minimize(
&qmc::DEFAULT_VARIABLES[..3],
&[0, 5], // minterms
&[1, 3, 4, 6], // maxterms
qmc::SOP,
false,
None,
)
.unwrap();
assert_eq!(
solutions.pop().unwrap().to_string(),
"(A ∧ C) ∨ (~A ∧ ~C)"
);
or using minimize_minterms with minterms and don't cares:
use quine_mccluskey as qmc;
let mut solutions = qmc::minimize_minterms(
&qmc::DEFAULT_VARIABLES[..3],
&[0, 5], // minterms
&[2, 7], // don't cares
false,
None,
)
.unwrap();
assert_eq!(
solutions.pop().unwrap().to_string(),
"(A ∧ C) ∨ (~A ∧ ~C)"
);
And in Product of Sums form using minimize with minterms and maxterms and Form::POS:
use quine_mccluskey as qmc;
let mut solutions = qmc::minimize(
&qmc::DEFAULT_VARIABLES[..3],
&[0, 5], // minterms
&[1, 3, 4, 6], // maxterms
qmc::POS,
false,
None,
)
.unwrap();
assert_eq!(
solutions.pop().unwrap().to_string(),
"(A ∨ ~C) ∧ (~A ∨ C)"
);
or using minimize_maxterms with maxterms and don't cares:
use quine_mccluskey as qmc;
let mut solutions = qmc::minimize_maxterms(
&qmc::DEFAULT_VARIABLES[..3],
&[1, 3, 4, 6], // maxterms
&[2, 7], // don't cares
false,
None,
)
.unwrap();
assert_eq!(
solutions.pop().unwrap().to_string(),
"(A ∨ ~C) ∧ (~A ∨ C)"
);
serde – Derives the Serialize and Deserialize traits for structs and enums.