Skip to content
Snippets Groups Projects
Select Git revision
  • 1c3d2d2421acf7ebcdaa89944b66f9bc9a8212b3
  • main default
2 results

makefile

Blame
  • Transformer.py 1.99 KiB
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Created on Thu Feb 25 15:08:15 2021
    
    @author: lukepatton
    """
    
    class Transformer:
        def __init__(self, transformation, criteria):
            self.transformation = transformation
            self.criteria = criteria
        
        def check(self, input_set, output_set):
            return self.criteria(self.transformation, input_set, output_set)
    
        def transform(self, transformee):
            return self.transformation(transformee)
        
        
    class OneToOneNumberTransformer(Transformer):
        def __init__(self, transformation_dictionary):
            self.transformation_dictionary = transformation_dictionary
            transformation = lambda a: [(transformation_dictionary[i] if i in transformation_dictionary else i) for i in a]
            
            
            super().__init__(transformation, self.__criteria)
            
            
        def __criteria(self, transformation, input_set, output_set):
            passes = True
            for sequence in input_set:
                transformed = transformation(sequence)
                matching_inputs = [a for a in input_set if set(a) == set(sequence)]
                matching_outputs = [b for b in output_set if set(b) == set(transformed)]
                if len(matching_inputs) != len(matching_outputs):
                    passes = False
            
            return passes
        
    class ReorderTransformer(Transformer):
        def __init__(self, transformation_order_dictionary):
            self.transformation_order_dictionary = transformation_order_dictionary
            transformation = lambda a: self.__transformation(a, transformation_order_dictionary)
            criteria = lambda a, b, c: True
            
            super().__init__(transformation, criteria)
            
    
            
                
        def __transformation(self, a, transformation_dictionary):
            new_sequence = [None for key in transformation_dictionary]
            print(new_sequence)
            for key in transformation_dictionary:
                new_sequence[transformation_dictionary[key]] = a[key]
            return new_sequence