From 62bede5eeff4f71cc5fd9f70dcc25c30a2940a14 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Mon, 17 Sep 2012 17:27:50 +0200 Subject: [PATCH] improve truthtable tool --- migScope/tools/truthtable.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/migScope/tools/truthtable.py b/migScope/tools/truthtable.py index d38316b9d..14ce7969e 100644 --- a/migScope/tools/truthtable.py +++ b/migScope/tools/truthtable.py @@ -2,14 +2,26 @@ import os import re import sys +def is_number(x): + try: + _ = float(x) + except ValueError: + return False + return True + +def remove_numbers(seq): + return [ x for x in seq if not is_number(x)] + def remove_duplicates(seq): - seen = set() - seen_add = seen.add - return [ x for x in seq if x not in seen and not seen_add(x)] + seen = set() + seen_add = seen.add + return [ x for x in seq if x not in seen and not seen_add(x)] def get_operands(s): - operands = remove_duplicates(sorted(re.findall("[A-z0-9_]+", s))) - return operands + operands = re.findall("[A-z0-9_]+", s) + operands = remove_duplicates(operands) + operands = remove_numbers(operands) + return sorted(operands) def gen_truth_table(s): operands = get_operands(s) @@ -30,6 +42,6 @@ def gen_truth_table(s): def main(): print(gen_truth_table("(A&B&C)|D")) - + if __name__ == '__main__': - main() + main()