improve truthtable tool

This commit is contained in:
Florent Kermarrec 2012-09-17 17:27:50 +02:00
parent eba6a2c764
commit 62bede5eef
1 changed files with 19 additions and 7 deletions

View File

@ -2,14 +2,26 @@ import os
import re import re
import sys 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): def remove_duplicates(seq):
seen = set() seen = set()
seen_add = seen.add seen_add = seen.add
return [ x for x in seq if x not in seen and not seen_add(x)] return [ x for x in seq if x not in seen and not seen_add(x)]
def get_operands(s): def get_operands(s):
operands = remove_duplicates(sorted(re.findall("[A-z0-9_]+", s))) operands = re.findall("[A-z0-9_]+", s)
return operands operands = remove_duplicates(operands)
operands = remove_numbers(operands)
return sorted(operands)
def gen_truth_table(s): def gen_truth_table(s):
operands = get_operands(s) operands = get_operands(s)
@ -30,6 +42,6 @@ def gen_truth_table(s):
def main(): def main():
print(gen_truth_table("(A&B&C)|D")) print(gen_truth_table("(A&B&C)|D"))
if __name__ == '__main__': if __name__ == '__main__':
main() main()